Форум: "Прочее";
Текущий архив: 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