Отправляет email-рассылки с помощью сервиса Sendsay

Клуб программистов

  Все выпуски  

Клуб программистов


redaktor От ведущего.

Здравствуйте, уважаемые читатели рассылки. У нас снова юбилей – восьмидесятый выпуск!!! И в нем как обычно обзор интересных тем форума и специфический юмор для наших кругов.

Желаю приятного чтения.

logo_grey

Новые интересные статьи клуба программистов.

Статьи на сайте клуба постоянно пополняются. Поэтому это постоянная и основная рубрика рассылки. Так же здесь обзор топиков форума и блога программистов.

Рисование многоугольника мышкой

Рабочий код можно посмотреть ли бо в клубе, либо на форуме.

Тема на форуме.

 

Скорость работы различных СУБД

 

Сегодня от безделья решил проверить несколько наиболее популярных СУБД на скорость работы с большим (относительно) объемом данных.

Хочу поделиться результатами (может кому-нибудь интересно).

Итак, Computer: CPU Athlon(tm)64 X2Dual 6000+, RAM 2 гб.

В тесте принимают участие:

ADO (Microsoft.Jet.OLEDB.4.0)

Paradox (Paradox 7)

dBase (dBase for Windows)

MySQL (v.5.0.45)

AbsoluteDB (v.6.0)

VolgaDB (v.5.17)

Accuraser (v.4.02)

Все таблицы имеют поля:

ai – Autoincrement

aNum – Integer

aSum – Integer

aText – String (или Varchar) 250 символов

У всех таблиц все свойства по умолчанию (за исключением TableName, Database…)

Стоит отметить, что VolgaDB по сути работает с таблицами в памяти (т.е. CachedUpdates:= True; ). Это нечестно по отношению к другим. Поэтому проверим ее и c работой в памяти (Post внутри цикла, ApplyUpdates после цикла), с со сбросом кеша на диск (ApplyUpdates внутри цикла).

На форме связка DBGridEh (пусть тормозит работу) > DataSourse > DataSet (сама таблица), одна кнопка, один Label и ProgressBar.

Добавим в таблицы по 20 тысяч записей с выполнением простейшего агрегатного запроса:

Код:
 
var i: Integer;
  h, n, s, ms: Word;
  t1, t2: TTime;
begin
  ProgressBar1.Max := 20000;
  t1 := Time;
  for i := 0 to 20000 do
  begin
    Application.ProcessMessages;
    Query.Close;
    Query.SQL.Clear;
    Query.SQL.Add('select sum(aNum) from Tablename');
    Query.Open;
 
    Table.Insert;
    Table.FieldByName('aNum').AsInteger := i;
    Table.FieldByName('aSum').AsInteger := Query.Fields[0].AsInteger;
    Table.FieldByName('aText').AsString := 'Text ' + inttostr(i);
    Table.Post;
    ProgressBar1.Position := i;
  end;
  t2 := Time;
  DecodeTime(t2 - t1, h, n, s, ms);
  label1.Caption := IntToStr(n) + ':' + IntToStr(s);
  ProgressBar1.Position := 0;
end;

Результаты:

VolgaDB (ApplyUpdates после цикла) – 0:26 (размер БД 496 Kb !!!)

MySQL – 1:44 (размер БД 758 Kb !!!)

dBase – 3:22 (размер БД 5,4 Mb)

Paradox – 4:15 (размер БД 5,58 Mb)

ADO – 6:25 (размер БД 1.6 Mb)

VolgaDB (ApplyUpdates внутри цикла) – 14:19 (размер БД 496 Kb !!!)

AbsoluteDB – 22:50 (размер БД 6,1 Mb)

Accuraser – Надоело ждать, отключил процесс .

Некоторые СУБД (особенно AbsoluteDB, Accuraser) первые тысяч пять записей добавляют быстро, потом “тормоза” начинаются в геометрической прогрессии.

Резуме: MySQL Forever !!!???

С Ораклами и Постригами не работаю, поэтому не проверял.

 

Интресная тема на форуме.


О сайте нашего Журнала [ПРОграммист] …

Осмелюсь завести отдельную тему о жизни сайта нашего с Вами журнала [ПРОграммист].

Разговоров вокруг именно сайта журнала немного. Мне как одному из авторов (я не назову себя единственным, т.к. без Сергея Бадло aka raxp, например, я бы не справился) сайта хотелось бы слышать больше разговоров о нем. Для завязки разговора стоит упомянуть тему уважаемого мною grenles в которой упоминалось о текущем дизайне сайта: не понятен “древнерусский” дизайн и, как сказано между строк, нет внешнего сходства логотипа журнала и сайта, внешнего вида журнала и сайта.
Так давайте же добьемся и этой цели вместе ! Я готов придать огласке необходимые параметры графических элементов сайта. Я готов принять к рассмотрению предложенный Вами шаблон для сайта, найденный где-нить на просторах сети (не надо ссылок с нарушениями авторских прав на платные шаблоны – хотя бы название). Для этого учтите что сайт построен на CMS Joomla версии 1.5.20.

 

Тема на форуме

 

NewTheme Messenger
Нашел старую тему на форуме. Заслуживает того, что бы о ней напомнили.

простая программа для уведомления о новых темах на форуме

+ показывает имя созданной темы

 

Тема.

 

Получение содержимого тега

Способ получения содержимого тегов веб страницы.

 

Тема на форуме.


Вставить иконку в ячейку DBGridEh

 

Надо показать иконку в ячейке вместе с текстом. То есть слева в ячейке иконка, а за ней текст.

 

Тема на форуме

 

Заблокировать рабочее место.

 

Думаю, что для некоторых программа будет архиважной, поэтому решил создать:

При нажатии на кнопку на экране появляется окно ввода пароля, все остальные действия блокируются. Окно сделаю на весь экран, чтобы прикрыло все, с остальным загвоздка – если я сделаю простой блок клавы и мыши – как ввести пароль? Иначе есть вероятность, что C+A+D не спасуют перед “монстром”.

Как я понимаю в винде по умолчанию есть три десктопа. Тот, с которым работают юзвери (input desktop), logon desktop и скринсейвер.
Можно так же создать свой десктоп и переключиться на него, при этом все остальные окажутся недоступными.
Ну вот для примера я нашел\набросал такой код. Простите, но на VC++……………………..

 

Тема на форуме.

 

Алгоритм генерации словарей паролей заданной длины

Решение, объяснения, ссылки…

 

Тема на форуме.


Конвертирование tif в bmp

Код:

var 
  Tif: TWICImage;
  Bmp: TBitmap;
begin 
    Tif:= TWICImage.Create;
    Bmp:= TBitmap.Create;
    try 
       Tif.LoadFromFile('мойФайл.tif');
       Bmp.Assign(Tif);
        bmp.SaveToFile('new.bmp');
    finally 
      Bmp.Free;
      Tif.Free;
   end;
end;
 

 

Способ работает для файлов, чей размер не привышает 200 Мб. Возможно, в теме на форуме есть решение для больших файлов.


Получить список DSN средствами WinApi

 

Интресная тема на форуме.

 

Как проверить вводимое значение.

 

Написал программу, в которой обрабатываются числа (тип Integer), необходимо проверить вводимые значения на соответствие типу Integer, если вводимые значения- не принадлежат типу Integer,тто вывести сообщение о некорректных вводимых данных..как это сделать?

Тема на форуме.


На сайте клуба есть рубрики пост-обзор и топик-обзор клуба программистов.

 

ev

Немного юмора.

***

В качестве юморных историй сегодня у нас фотографии рабочих мест посетителей нашего форума.

http://s45.radikal.ru/i107/1010/7d/7bd174f0a621.jpg
http://s002.radikal.ru/i197/1010/09/cdb6d876ae7d.jpg
http://s005.radikal.ru/i212/1010/1e/3e9b9d7f8a3b.jpg

http://img203.imageshack.us/img203/7584/img2812m.jpg

Это я читаю что написано мелким шрифтом на плат под вай-фаем
http://img155.imageshack.us/img155/1…1015142902.jpg
Света нету.
http://img840.imageshack.us/img840/3…1015201455.jpg

http://loadpicture.ru/images/mywrk.jpg

http://loadpicture.ru/images/mywrk2.jpg

http://img299.imageshack.us/img299/7…1015131910.jpg
http://img222.imageshack.us/img222/7…1015131728.jpg

Посетите раздел юмора на форуме, который обновляется постоянно Кстати, именно в этом разделе вы можите похвастаться своим рабочим местом.

Читать этот номер в клубе.


В избранное