20080121

C++: wait() function and beep sound output.

#include <iostream>
#include <time.h>

using namespace std;
void wait(int seconds) {
clock_t endwait;
endwait = clock () + seconds * CLOCKS_PER_SEC ;
while (clock() < endwait) {}
}

int main() {
cerr << '\a' << "First beep" << endl;
wait(10);
cerr << '\a' << "Second beep after 10 sec" << endl;
return 0;
}
Το παραπάνω πρόγραμμα δημιουργεί έναν ήχο beep '\a' εμφανίζοντας το μήνυμα "First beep" και κατόπιν περιμένει 10 δευτερόλεπτα μέχρι να ξαναδημιουργήσει τον δεύτερο ήχο beep '\a' και να εμφανίσει το μήνυμα "Second beep after 10 sec".

Links:

20080119

C++: Using sort/unique STL generic algorithms with STL vectors etc containers.

Έστω ότι έχω ένα διάνυσμα με τιμές μέσα σε ένα vector και θέλω αυτές να τις ταξινομήσω αλλά και να σβήσω όσες τιμές τους είναι παραπάνω από δύο φορές. Χρησιμοποιώ τα generic STL algorithms: sort/unique:

#include <vector>
#include <string>
#include <algorithm>

using namespace std;
//.....
vector<string> vec_str;
vec_str.push_back("a");
vec_str.push_back("a");
vec_str.push_back("e");
vec_str.push_back("b");
vec_str.push_back("b");
vec_str.push_back("d");
// vec_str = ("a","a","e","b","b","d")

sort(vec_str.begin(),vec_str.end());
// vec_str = ("a","a","b","b","d","e")

vector<string>::iterator vec_str_iter;
vec_str_iter=unique(vec_str.begin(),vec_str.end());
// vec_str = ("a","b","d","e","d","e")
// \-- vec_str_iter

vec_str.erase(vec_str_iter,vec_str.end());
// vec_str = ("a","b","d","e")

Extract file name from a path using a regular expression (example in C++/Boost Regex).

Έστω ότι έχουμε το dos path:

C:\dir1\dir2\dir3\myfile.txt

ή το unix path

/dir1/dir2/dir3/myfile.txt

Για να τραβήξουμε το όνομα του αρχείου αρκεί η παρακάτω κανονική έκφραση: "[^\\^/]+$" ή οποία μεταφράζεται ως βρες οποιοδήποτε substring χαρακτήρων εκτός του \ και / που βρίσκεις από στο τέλος ($).

Αν χρεισιμοποιούμε το Regular Expressions της βιβλιοθήκης boost σε περιβάλλον C++ ακουλουθεί ένα παράδειγμα (η κανονική έκφραση μπαίνει ως "[^\\\\^/]+$" (επειδή \ = \\)):

#include "boost/regex.hpp"

void main() {

string str="C:\\dir1\\dir2\\dir3\\myfile.txt";
boost::regex reg("[^\\\\^/]+$");
boost::smatch m;

string filename;
if (boost::regex_search(str,m,reg))
// filename <- "myfile.txt"
filename=m.str();
else
filename="not found";

return;
}


boost::regex reg("^[^\\.]+");
boost::regex reg("[^\\.]+$");

FLV to Avi/mp3 convertor.

Ένα ωραίο, light-weight προγραμματάτι για μετατροπή flv αρχείων (βίντεο αρχεία κατεβασμένα από youtube κλπ) σε avi / mp3 είναι το πρόγραμμα + source code (C#): FLV extract.

Από το http://www.moitah.net/.

20080104

R-Project for Statistical Computing installation in OpenSuSE10.2.

R-Project for Statistical Computing.

Όπως γράφει στο link αλλά δεν το λέει εντελώς σωστά.. προσθέτουμε το URL http://download.opensuse.org/repositories/home:/dsteuer/openSUSE_10.2/ το οποίο περιέχει το repository για το r-project για το openSuSE 10.2.

eggs.in.art (my non-technical blog)