Архив метки: cpp

Шейпер трафика на cpp под FreeBSD

Вот нашел в своих старых файлах.  Пытался когда-то переписать шейпер с PHP на cpp, думал что выигрыш в скорости работы получу. Не получил ничего кроме усложнения 😉 Потому осталось в «столе» и в продакшен не пошло. Узкоспециализированная разработка, использовать которую вот так просто не получится. Выложил для «истории», чтоб не потерялась если что.. Читать далее Шейпер трафика на cpp под FreeBSD

Удаление пробелов из строки С++

Часто бывает необходимо при обработке  результата вывода выполнения консольных программ, убрать все пробелы из строки. Стандартного решения (ктоб сомневался!) в с++ нет. Пишем свой велосипет.

string trim(string ss){
 int i=0;
 string st=""; 
 while(i!=ss.length()-1){
   if(ss[i]!=' '){st+=ss[i];};
   i++;
 };    
 return st;
};

Особенности работы с Mysql во FreeBSD на с++

  1. После каждого выполнения запроса необходимо «сохранять» результат запроса при помощи mysql_store_result, иначе получаем ошибку
    Error: can't execute SQL-query Commands out of sync; you can't run this command now
  2.  Во FreeBSD не достаточно «выбрать базу» при выполнении mysql_real_connect(connectionNOC,hostbase,userbase,passbase,namebase,3306,0,0). Пришлось дополнительно её «перевыбирать» в запросом.

Итоговый шаблон работы с MySQL на FreeBSD:

string sql;
connectionNOC = mysql_init(NULL); 
mysql_real_connect(connectionNOC,hostbase,userbase,passbase,namebase,3306,0,0)

   sql ="use noc";
   if (mysql_query(connectionNOC, sql.c_str()) != 0){fprintf(stderr,"Error: can't execute SQL-query\n");exit(1);};      
   result=mysql_store_result(connectionNOC);    

  // Шаг 1
  sql ="SET NAMES utf8";
  if (mysql_query(connectionNOC, sql.c_str()) != 0){fprintf(stderr,"Error:  can't execute SQL-query\n");exit(1);};      
  result=mysql_store_result(connectionNOC);    

  // Шаг 2
   sql="select * from lanbshconfig";
   if (mysql_query(connectionNOC, sql.c_str()) != 0){
   fprintf(stderr,"Error: can't execute   SQL-query %s\n",mysql_error(connectionNOC));
   exit(1);
  };