Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Проблема нехватки памяти   Найти похожие ветки 

 
картман ©   (2012-09-01 00:34) [120]


> sniknik ©   (01.09.12 00:29) [118]

сколько уникальных значений и всего?


 
sniknik ©   (2012-09-01 00:34) [121]

> 661 мегабайт
объем конечно можно уменьшить, например использовав тип "сжатые строки", но это будет "как мертвому припарки".


 
картман ©   (2012-09-01 00:35) [122]


> Пришлось химичить CheckWords

Query.Locate глянь


 
DVM ©   (2012-09-01 00:37) [123]


> Разведка   (01.09.12 00:33) [119]


> Я так сделал по то, что Ассess   в базе не учитывает регистр
> слов

Ну и выкинь его, возьми Firebird с самого же начала хотел. Тем более что [118]


 
sniknik ©   (2012-09-01 00:40) [124]

> Пришлось химичить CheckWords
есть такое слово как бинарное сравнение

> сколько уникальных значений и всего?
т.к., оказалось, нужны все варианты с буквами в разных регистрах то ... не знаю, не сравнивал пока. а всего 13066561 записей. может быть все будут уникальны, по новым веяниям.


 
Разведка   (2012-09-01 00:41) [125]


> sniknik ©   (01.09.12 00:29) [118]


тогда придется пожертвовать длиной ограничить до длины 24 байт, ведь в природе вряд ли найдешь даже длиннее 16 байт пароли.


 
картман ©   (2012-09-01 00:43) [126]


> Разведка   (01.09.12 00:41) [125]

а что потом?


 
sniknik ©   (2012-09-01 00:45) [127]

> до длины 24 байт
с математикой не лады? "мертвый" все еще труп. даже если считать буквально -> / 2, хотя VarChar это нифига не пополам...


 
Разведка   (2012-09-01 00:45) [128]


> DVM ©   (01.09.12 00:37) [123]


Так и придется сделать, Ассess - это так был эксперимент, но хотолось бы вместе с программой и базу переносить.


 
DVM ©   (2012-09-01 00:48) [129]

Firebird тоже есть локальный а еще лучше sqlite


 
Разведка   (2012-09-01 00:48) [130]


> картман ©   (01.09.12 00:43) [126]
> > Разведка   (01.09.12 00:41) [125]а что потом?


Как говорят суп с котом, главное не что потом, а что сейчас. Смотри как многому меня здесь научили.


 
картман ©   (2012-09-01 00:56) [131]


> Смотри как многому меня здесь научили.

да уж, эти изверги хоть кого научат


 
Разведка   (2012-09-01 01:08) [132]


> DVM ©   (01.09.12 00:48) [129]
> Firebird тоже есть локальный а еще лучше sqlite

А почему лучше? Я пока более склоняюсь к firebird
1. Много документации на русском.
2. ближе всего к синтаксису Делфи и "интербаз" и есть хроший инструментарий IBExpert
3. уже немного знаком даже делал учебную базу.

sqlite - тоже заинтересовала.


 
Германн ©   (2012-09-01 01:56) [133]


> картман ©   (01.09.12 00:56) [131]
>
>
> > Смотри как многому меня здесь научили.
>
> да уж, эти изверги хоть кого научат
>

Всех научить всё равно не получается даже у "этих извергов" :)
Иногда попадаются слишком "неподдающиеся" обучению.


 
картман ©   (2012-09-01 01:59) [134]


> Иногда попадаются слишком "неподдающиеся" обучению.

это и подразумевал


 
Германн ©   (2012-09-01 02:29) [135]


> картман ©   (01.09.12 01:59) [134]
>
>
> > Иногда попадаются слишком "неподдающиеся" обучению.
>
> это и подразумевал

Кто хочет учиться, тому помогут, если он действительно хочет!
А все прочие в последнее время предпочитают другие форумы. :)


 
Разведка   (2012-09-01 12:23) [136]


> Германн ©   (01.09.12 02:29) [135]
> А все прочие в последнее время предпочитают другие форумы.
>  :)


Это какие другие? Можно озвучить, а то уже заинтриговало. Форумы то хоть для программистов или так на девок голых посмотреть?


 
Студент   (2012-09-02 07:03) [137]

google + форум программистов


 
RWolf ©   (2012-09-02 11:45) [138]

на форумах не учат, а всего лишь указывают на очевидные ошибки.
в данном случае автору остро не хватает теоретической подготовки; рекомендуется пройти курс реляционной алгебры и СУБД.
От себя порекомендовал бы стэнфордский онлайн-курс "Introduction to Databases" на coursera.org, если с английским порядок.


 
Разведка   (2012-09-03 00:27) [139]


> RWolf ©   (02.09.12 11:45) [138]
> на форумах не учат, а всего лишь указывают на очевидные
> ошибки.в данном случае автору остро не хватает теоретической
> подготовки; рекомендуется пройти курс реляционной алгебры
> и СУБД.От себя порекомендовал бы стэнфордский онлайн-курс
> "Introduction to Databases" на coursera.org, если с английским
> порядок.


Вся проблема в том, что на все про все времени не хватает... Работа дурацкая 100% времени занимает нет ни минуты покоя к тому же не связана с компьютерами вообще. Делаю программы это просто хобби.


 
картман ©   (2012-09-03 01:06) [140]


> рекомендуется пройти курс реляционной алгебры

ядерная бомбардировка скворечника уместней будет


 
Pavia ©   (2012-09-03 06:22) [141]

Автору явно не хватает знаний, причём по всем направлениям.


 
stas ©   (2012-09-03 10:41) [142]

Pavia ©   (03.09.12 06:22) [141]
>Автору явно не хватает знаний, причём по всем направлениям.
Зато у него AMD FX8150!


 
Разведка   (2012-09-03 13:52) [143]


> Pavia ©   (03.09.12 06:22) [141]
> Автору явно не хватает знаний, причём по всем направлениям.
>


Автору не только не хватает знаний, но и времени на получения этих знаний.
Знания - то такая специфическая вещь, которой всегда не будет хватать, будь вы трижды профессором. "Чем больше я знаю, то более убеждаюсь, что ничего не знаю"


 
Разведка   (2012-09-09 01:25) [144]

Как связать компоненты в "рантайм"? Хочу вынести работу с базой в отдельный поток. Сделал такой код, но чего то неработает.

constructor TDicProc.Create(AList: TStrings; BaseFile, ParamFile: String; Wnd:THandle);
begin
 inherited Create(false);
 FWnd := Wnd;
 FAList := TStringList.Create;
 FAList.Text := AList.Text;

 if FAList.Count = 0 then Terminate;

 IBDatabase := TIBDatabase.Create(Nil);
 IBQuery := TIBQuery.Create(Nil);
 IBTransaction := TIBTransaction.Create(Nil);
 IBTransaction.Name := "IBTransaction";
 IBDatabase.Name    := "IBDatabase";
 IBQuery.Name       := "IBQuery";

 With IBDatabase do
 begin
   LoginPrompt  := false;
   DatabaseName := BaseFile;
   Params.LoadFromFile(ParamFile);
   Connected := true;
   DefaultTransaction := IBTransaction;
 end;

 IBTransaction.DefaultDatabase := IBDatabase;
 IBTransaction.Active := true;

 IBQuery.Database    := IBDatabase;
 IBQuery.Transaction := IBTransaction;

end;


 
Разведка   (2012-09-09 05:56) [145]

Переделал все. Базу сделал на FireBird. Теперь работает в отдельном потоке, но скорости так и не прибавилось еще хуже стало. скорость упала 20 слов в сек.
Код потока:
unit DicThreade;

interface

uses
 SysUtils, Windows, Classes,IBDatabase, DB, IBCustomDataSet, IBQuery, MsgLog;

Type TThrStat = (TS_STARTED,TS_STOP,TS_END,TS_ERR);

Type
 TTstatInfo = Record
   BaseDic : String;
   AddDic  : String;
   DublCount : Integer;
   NewWords  : Integer;
   CurCount  : Integer;
 End;

type
 TDicProc = class(TThread)
 Status   : TThrStat;
 CurCount : Integer;
 BaseDic  : String;
 AddDic   : String;
 DublCount: Integer;
 AddCount : Integer;
 IBDatabase: TIBDatabase;
 IBQuery: TIBQuery;
 IBTransaction: TIBTransaction;
 private
  FMsg : Cardinal;
  FWnd : THandle;
  FAList : TStrings;
  FBList : TStrings;
 protected
   procedure Execute; override;
 public
   Constructor Create(AList: TStrings; BaseFile, ParamFile: String; Wnd:THandle);
   Destructor Destroy; override;
   //Procedure Free;
 end;

implementation

constructor TDicProc.Create(AList: TStrings; BaseFile, ParamFile: String; Wnd:THandle);
begin
 inherited Create(false);
 FWnd := Wnd;
 FAList := TStringList.Create;
 FAList.Text := AList.Text;

 if FAList.Count = 0 then Terminate;

 IBDatabase := TIBDatabase.Create(Nil);
 IBTransaction := TIBTransaction.Create(Nil);
 IBQuery := TIBQuery.Create(Nil);

 IBTransaction.Name := "IBTransaction";
 IBDatabase.Name    := "IBDatabase";
 IBQuery.Name       := "IBQuery";

 With IBDatabase do
 begin
   LoginPrompt  := false;
   DatabaseName := BaseFile;
   Params.LoadFromFile(ParamFile);
   Connected := true;
   DefaultTransaction := IBTransaction;
 end;

 IBTransaction.DefaultDatabase := IBDatabase;
 IBTransaction.Active := true;

 IBQuery.Database    := IBDatabase;
 IBQuery.Transaction := IBTransaction;

 FreeOnTerminate := true;
end;

destructor TDicProc.Destroy;
begin
FAList.Free;
IBTransaction.Commit;
IBQuery.Free;
IBTransaction.Free;
IBDatabase.Free;
inherited Destroy;
end;

procedure TDicProc.Execute;
var
 Asl: TStrings;
 i,j,DublCnt,Cnt: Integer;
begin
 if Not IBDatabase.Connected then begin
   Status := TS_ERR;
   Exit;
 end;

 if Not IBTransaction.Active then begin
   Status := TS_ERR;
   Exit;
 end;

 Status := TS_STARTED;
 try
   Asl := TStringList.Create;    //Asl - Add String list
   AddCount := 0;
   for i:=0 to FAList.Count -1 do
   begin
     Asl.Clear;
     Asl.LoadFromFile(FAList.Strings[i]);
     AddDic := FAList.Strings[i];
     //SendDebugMsg(FAList.Strings[i]+" Count = "+IntToStr(Asl.Count));

     Cnt := 0;
     While Cnt <> Asl.Count do
     begin
       if Status = TS_STOP then
       begin

         Exit;
       end;
       //SendDebugMsg("Cnt"+IntToStr(Cnt));
       IBQuery.SQL.Text := "SELECT WORD_PWD FROM WORDS WHERE WORD_PWD = :StrValue";
       IBQuery.Params[0].AsString := Asl.Strings[Cnt];
       IBQuery.Open;
       if Not IBQuery.IsEmpty then
       begin
         //SendDebugMsg("duble word = "+Asl.Strings[cnt]);
         Inc(DublCount);
         Inc(Cnt);
         CurCount := Cnt;
         Continue;
       end;
       //SendDebugMsg("added word = "+Asl.Strings[cnt]);
       IBQuery.SQL.Text := "INSERT INTO WORDS (WORD_PWD) VALUES (:StrValue)";
       IBQuery.Params[0].AsString := Asl.Strings[Cnt];
       IBQuery.ExecSQL;
       //IBTransaction.Commit;
       Inc(AddCount);
       Inc(Cnt);
       CurCount := Cnt;
     end;

   end;

 finally
   Asl.Free;
 end;
end;
end.


 
sniknik ©   (2012-09-09 09:21) [146]

>> По существу давай.
> не получится, я ADOQuery-стам не помогаю. они не слушают. не желают.
как знал
> DVM ©   (31.08.12 23:57) [111]
>> подставку значения параметра надо
> мало того что после назначения запроса, так это еще должно быть единственным назначением в цикле... иначе весь смысл параметра нивелируется.
> а так как написано у автора, как ни крути, по логике, все "крутится" и пере назначается в цикле.

не зависит от компонент, судя по всему, они вторичны, сначала "мозги набекрень", а компоненты после под них подбирают.

и кстати про то, что потоки не для скорости, тоже где то там говорил...


 
Inovet ©   (2012-09-09 09:37) [147]

> [145] Разведка   (09.09.12 05:56)

Ты скопировал всё тоже самое на ФБ. Почему не учитываешь рекомендации нескольких человек, приведённые выше? ТАК работать будет плохо хоть на миллионпроцессорном железе с супер SQL сервером.


 
sniknik ©   (2012-09-09 10:14) [148]

++
у каждой субд свои особенности, тут мало код в дельфе исправить тут и запросы нужно с учетом субд делать... и подумать например как объединить оба запроса в один... или сделать операцию массовой (если возможно). как он работает с транзакциями, какое оптимальное количество для записи...
вот когда учтешь все, и сделаешь все оптимально, тогда и скорость будет.
а то что ты сейчас приводишь, это то же самое г. только в другой обертке. вкуснее не стало.


 
brother ©   (2012-09-09 10:35) [149]

по ссылке:
http://www.insidepro.com/dictionaries.php?lang=rus
Паролей
Программа Extreme GPU Bruteforcer обновлена
а что пишет автор в итоге то? кто понял? ;)


 
Inovet ©   (2012-09-09 10:54) [150]

> [149] brother ©   (09.09.12 10:35)
> а что пишет автор в итоге то? кто понял? ;)

Допустим, защиту от ввода пользователями засвеченных пароле.:)


 
brother ©   (2012-09-09 10:57) [151]

> защиту от ввода пользователями засвеченных пароле

ага, в общем понятно...


 
sniknik ©   (2012-09-09 12:25) [152]

> ага, в общем понятно...
тут ситуация почти как в старом анекдоте -
1945 год. Новгородская область. Сидит партизан-диверсант на рельсах и пытается
их взорвать. Но зажечь бикфордов шнур не так-то просто. Спички - г..но, не
зажигаются. Вдруг чувствует партизан (П), что кто-то трогает его за плечо.
Оборачивается - немец(Н). - Ооо, русский партисан -говорит (Н) и берет из рук
(П) коробок спичек. (Н) Читает то, что написано на спичках:
- Фаприка "Красний Октиапрь",
- Кород Чудово. После этого отдает коробок (П):
- Ну тавай, тавай..


 
brother ©   (2012-09-09 12:52) [153]

хм, я другой вариан слышал:
О, балабаново? Ну, тафай, тафай ;)


 
Разведка   (2012-09-09 14:06) [154]


> sniknik ©   (09.09.12 10:14) [148]


На fireBird переведено по объективным причинам:
1. АDO access ограничено размером базы не более 2 гиг. т.е. все словари туда уже не влезут.
2. АDO Аccess не учитывает регистр слов в базе об этом уже говорилось Разведка   (31.08.12 18:46) [50]. поэтому пришлось делать дополнительную функцию Разведка  см. (01.09.12 00:15) [112]


> sniknik ©   (09.09.12 09:21) [146]


И так параметры. Тут без параметров нельзя, т.к. символы идут с кавычками если запрос сделать без параметра, то на запрос с аргументом !" или aaa" - рушатся.


> sniknik ©   (09.09.12 09:21) [146]
> и кстати про то, что потоки не для скорости, тоже где то
> там говорил...


- Почему в поток? потому что бы избавиться в цикле от Application.ProcessMessages; Наверняка знаешь что это и зачем. Так оно же тормозит процесс заставляя его каждый цикл прерываться и выполнять обработку поступающих сообщений к окну вот это самый главный тормоз циклов. И что будет если его убрать, да то что окно тупо зависнет и не будет отвечать на действия пользователя бока не завершится цикл.

Я вот чего не сделал, и пока не могу разобраться как сделать.
1. не создал индекс , пока просто не понимаю как проиндексировать  поле в fireBird. Таблица всего пока из 2-х полей [ID] - ключевое, счетчик [word_pwd] - Char 32.
2. В Субд можно использовать хранимые процедуры, одну на добавление записи уже знаю как сделать, а вот на проверку дубликата пока нет.


 
Разведка   (2012-09-09 14:13) [155]


> Inovet ©   (09.09.12 10:54) [150]


ТоварЫщ совершенно прав, именно это и делается.
А вообще у нас в бывшем СССР все имело двойную суть, т.е. создавалось по теории двойного назначения. ;-)


 
Плохиш ©   (2012-09-09 14:52) [156]


> И так параметры. Тут без параметров нельзя, т.к. символы
> идут с кавычками если запрос сделать без параметра, то на
> запрос с аргументом !" или aaa" - рушатся.

Как всегда, в кривых руках кто угодно виноват, только не их владелец.

Что я не так делаю, что у меня символы с кавычками не рушат ни запросы с параметрами, ни запросы без параметров?


 
sniknik ©   (2012-09-09 15:01) [157]

как интересно поворачивается разговор...
стоит сказать, что не место в цикле для присвоения запроса, так один понимает что именно там, и так его нужно делать, но у него не получается (и он считает что параметры только ради этого, что чтобы получилось), а у другой теперь начинает убеждать, что "все работает", и 0 оба внимания на суть.
;((
а суть буквальна... стоит прочитать как есть - "внутри цикла... коней на переправе не меняют!".


 
Плохиш ©   (2012-09-09 15:15) [158]


> sniknik ©   (09.09.12 15:01) [157]

Ну во-первых, я отвечал только на-то, что процитировал. А во-вторых, какая может быть "суть" в ветке по основам программирования в 15й десятке постов?


 
Разведка   (2012-09-09 15:23) [159]


> sniknik ©   (09.09.12 15:01) [157]
> как интересно поворачивается разговор...стоит сказать, что
> не место в цикле для присвоения запроса, так один понимает
> что именно там, и так его нужно делать, но у него не получается
> (и он считает что параметры только ради этого, что чтобы
> получилось), а у другой теперь начинает убеждать, что "все
> работает", и 0 оба внимания на суть.;((а суть буквальна.
> .. стоит прочитать как есть - "внутри цикла... коней на
> переправе не меняют!".


А может быть столь явное для одного пока не столь очевидно для обоих, может быть пока боремся с противоречиями нет что бы просто взять и сделать? Я по крайней мере хоть к какому то результату добрался и на этом опыт поимею. Просто не хватает времени во всем разобраться основательно. Вот сейчас нужно решать проблему с поступлением в ВУЗ что то застряло мое оформление. Затем с работой - нужно ее менять. В общем столько всего, что почти мало время остается на более глубокое изучение.


 
Разведка   (2012-09-09 15:34) [160]


> sniknik ©   (09.09.12 15:01) [157]


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



Страницы: 1 2 3 4 5 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.84 MB
Время: 0.068 c
15-1344112205
Юрий
2012-08-05 00:30
2013.03.22
С днем рождения ! 5 августа 2012 воскресенье


15-1343668211
vasa777
2012-07-30 21:10
2013.03.22
дельфи устарело


15-1335682925
xayam
2012-04-29 11:02
2013.03.22
Не поверите !


15-1352536128
alexdn
2012-11-10 12:28
2013.03.22
asp.net


2-1339482474
Abcdef123
2012-06-12 10:27
2013.03.22
Медленно работает TdxDBTreeView.