Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
картман ©   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.83 MB
Время: 0.104 c
2-1341933433
AndreiPerec
2012-07-10 19:17
2013.03.22
Как проверить есть ли у Компонента свойство?


2-1340301372
Pcrepair
2012-06-21 21:56
2013.03.22
Переменная TStringList, копирование строк


15-1349867018
stas
2012-10-10 15:03
2013.03.22
Изменить charset


15-1354292775
Очень Злой
2012-11-30 20:26
2013.03.22
Оптимизировать код


8-1227335651
Б
2008-11-22 09:34
2013.03.22
Графика





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский