Rodrigo Strauss :: Blog
A volta dos que foram mas voltaram logo
Algumas notícias importantes para movimentar meu quase abandonado site enquanto eu fico pensando em uma boa desculpa para essa situação:
- Voltei para São Paulo, e conseqüentemente, estou quase toda terça degustando um chopp no Bar Barão. Sim, isso é um convite. Para todos.
- O seminário da Tempo Real sobre Portabilidade e Performance foi muito bom, muito bom mesmo. Parabéns a todos nós do "C/C++ Brasil" por fazermos eventos com qualidade técnica tão alta, coisa que eu nunca vi nessas bandas. Fico feliz por poder compartilhar o que eu aprendi em incontáveis horas programando, dezenas de livros e outras dezenas de sites e artigos lidos. E fico muito mais feliz em poder aprender com pessoas que percorreram esse mesmo caminho, muitos que estudaram e leram muito mais do que eu. Eu sei que sou bom nesse negócio de programação (modéstia é um defeito que eu não tenho), mas minha vontade de aprender ainda é bem maior que meu ego. É **muito** bom conhecer e compartilhar conhecimento com gente que é melhor do que eu. Parabéns e obrigado a todos.
- Depois de mais de um mês offline (sim, essa é a desculpa), segue aqui a apresentação usada na minha palestra "Portabilidade via STL e Boost", onde eu fiz pelo STL e Boost o que os palestrantes da Microsoft/Sun/IBM/etc costumam fazer pelas empresas que pagam seus salários:
Como um trecho de código vale mais do que uma apresentação cheia de piadinhas não-tão-engraçadas, segue o dito cujo que usei durante a demo da palestra:
#define _CRT_SECURE_NO_WARNINGS #define _SCL_SECURE_NO_WARNINGS #include <vector> #include <string> #include <sstream> #include <iostream> #include <boost/thread.hpp> #include <boost/bind.hpp> #include <boost/asio.hpp> #include <boost/function.hpp> #include <boost/array.hpp> #include <boost/lexical_cast.hpp> #include <boost/shared_array.hpp> #include <boost/enable_shared_from_this.hpp> #include <boost/ptr_container/ptr_map.hpp> #include <boost/ptr_container/ptr_set.hpp> #include <boost/algorithm/string.hpp> #include <boost/algorithm/string/join.hpp> #include <boost/format.hpp> #include <boost/date_time/gregorian/gregorian.hpp> #include <boost/program_options.hpp> #include <boost/tuple/tuple.hpp> #include <boost/foreach.hpp> #include "boost/filesystem.hpp" #include <iostream> using namespace std; using boost::lexical_cast; using boost::format; using boost::shared_ptr; boost::mutex log_mutex; void Log(int level, const string& str) { boost::mutex::scoped_lock l(log_mutex); cout << boost::format("%d - %s") % level % str << endl; } void f(int level, string s1, string s2) { Log(level, s1 + string(" ") + s2); } typedef vector<shared_ptr<boost::thread> > UmVectorDeThreads; UmVectorDeThreads Test_Threads() { #if 0 boost::array<boost::thread, 32> threads; threads.at(2) = boost::thread(boost::bind(&f, "Eu programa aos sábados.", "E daí")); #endif boost::array< shared_ptr<boost::thread>, 32> threads; for(unsigned int i = 0 ; i < threads.size() ; i++) { threads[i] = shared_ptr<boost::thread>( new boost::thread( boost::bind(&f, 2, "Eu programo aos sabados.", lexical_cast<string>(i)))); } // // ai... // for(boost::array< shared_ptr<boost::thread>, 32>::iterator i = threads.begin() ; i != threads.end() ; ++i) { } BOOST_FOREACH(shared_ptr<boost::thread> t, threads) { } boost::thread t; UmVectorDeThreads threads2(threads.size()); std::copy(threads.begin(), threads.end(), threads2.begin()); return threads2; } void VamosEsperarAsThreads(UmVectorDeThreads& threads) { BOOST_FOREACH(shared_ptr<boost::thread> t, threads) { t->join(); } } void Test_FileSystem() { using namespace boost::filesystem; path p("c:\\temp\\abobrinha"); for(path::iterator i = p.begin() ; i != p.end() ; ++i) cout << *i << endl; } void Test_STL() { vector<string> v; list<string> l; map<int, string> m; for(int a = 0 ; a < 20 ; a++) { string nome = "Nome " + lexical_cast<string>(a); v.push_back(nome); m[a] = nome; } copy(v.begin(), v.end(), back_inserter(l)); BOOST_FOREACH(const string& nome, v) cout << nome << endl; for_each(l.begin(), l.end(), boost::bind(&Log, 1, _1)); } int main() { UmVectorDeThreads threads = Test_Threads(); Test_STL(); Test_FileSystem(); for_each(threads.begin(), threads.end(), boost::bind(&boost::thread::join, _1)); // // olha mamãe, sem desalocar memória // return 0; }
Em 21/06/2008 21:42, por Rodrigo Strauss





Rodrigo,
Tive a mesma experiencia, mas no sentido contrario. Sai de Poa para SP, e voltei 8 meses depois!!
As experiencias sao boas, mas algumas vezes nao sao bem o que precisamos no momento.
E se pra ti é melhor estar em SP, e continuar nos alimentando de informacoes uteis! Seja bem vindo de volta!!
Grande abraco,
Guilherme Costa