Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
procedure WriteString(ST: Ansistring);
var
leng: dword;
I: dword;
ss: Ansistring;
stk: Ansistring;
begin
leng := Length(ST);
for I := 1 to leng do
begin
ss := Copy(ST, I, 1);
stk := stk + ss;
end;
filestream1.Write(stk[1], Length(stk));
end;
Процедура записи строки в файл.
Использование:
var
filestream1: TfileStream;
begin
filestream1 := TfileStream.Create('file.dat', fmcreate);
WriteString('bla bla bla');
filestream1.Destroy;
end;
С дельфей 7 сейчас происходит то, что когда-то с VB6: она превращается в средство не разработки, а обучения. Потом многие переходят на другие среды - как раз таки из-за отсутствия поддержки юникода.
> он строку собирает
Гы, а он логичен. А мы то и не заметили, что он строку собирает 🙂
Тут вопрос в другом - нахрена строку разбирать на символы и собирать из нее еще одну точно такую же? 🙂 Почему бы просто не записать первую, которая st, без всех этих махинаций?
То ли дело "PHP", в котором для использования глобальной переменной нужно написать "global", а для захватывания родительского контекста в замыкании нужно написать "use".
Но больше всего меня радует, что вокруг каждой записи в фаил идет пляска с созданием и удалением потока.
Уж либо все в один метод, либо поток создается при первом обращении и диспозится в конце работы модуля
> ооп и делфи...
Да вполне адекватное там ООП, просто большинство дельфинов его не осилило, и никогда не сможет запилить свой класс (за исключением автосгенеренных TForm1, TForm2 и т.п.), что уж говорить о своем компоненте... Многие даже Form1 и Button1 во что-то более вменяемое не догадываются переименовать...
>>Но больше всего меня радует, что вокруг каждой записи в фаил идет пляска с созданием и удалением потока.
Стрим - не поток в буквальном смысле, к потокам вообще никакого отношения не имеет. Это обертка над файловыми функциями винды, такими, как CreateFile/SetFilePointer, и т.д.
> к потокам вообще никакого отношения не имеет
Как это не имеет? Это самый настоящий поток ввода-вывода, аля stream (не путать с потоком исполнения, нитью, аля thread).
раз уж Вы здесь, посоветуйте, как сделать так, чтобы регулярка не хватала токены, отдаленно похожие на прокси:
333.666.222.555:8080
я делаю так:
\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1, 5}
Скобки захватят значения. Как их достать со стороны делфи - смотри в документации к библиотеке с регулярками, которую юзаешь. Что-нибудь в духе r.group(1).
Ну а дальше тупо TryStrToInt и проверка на 0..255 и 0..65535. Вот и все.
>А для достаточно сложных грамматик (например если ты пилишь свой скриптовый язык) есть генераторы парсеров типа flex/bison, antlr и им подобных...
лучше ли заюзать какой-нибудь lua
Раз уже затронули тему регулярок: знает ли кто редактор регекспов, который \d{1,3}\. показывает как \d{1,3}. , т.е. подсвечивает синтаксис и убирает экранирующие бекслеши, а то синдром зубочистки заёбует.
1.Тупость зависит от времени суток и душевного тонуса - этим мы все иногда страдаем.
2.Я в одиночку без преподавателя освоил то, чему годами учат в вузах - в чем выражается мое нежелание учиться?
Уебанство - это что, плохие манеры? Лично я считаю, что уебанство - это постинг разного дерьма с анонимной учетки, обусловленный боязнью необходимости ответить за свои слова и упрекание других в том, чего ты не стоишь сам.
Т.к. пароль от учетки анонима находится в свободном доступе, я не могу упрекать в чем-то одного человека, который пишет с нее относительно адекватно, но я обращаюсь к тому, или к тем, кто пользуясь доступностью ее приходит сюда гадить и оскорблять участников: пусть твоя анонимная безнаказанность будет твоим позором, ибо настоящий мужчина не стал бы этим заниматься. Ты лох и позер, я тебя пиздец, как неуважаю.
обычно в "вузах" не тратят больше 2 семестров на один и тот же язык, и более того, просто используют выбранный язык как иллюстрацию неких технологий - т.е. не учат программировать например на дельфи, а иллюстрируют формошлепство, заодно дают основы ООП
т.к. не больше 2 семестров, это значит 1 пара лекции и 1 пара лабы в неделю максимум - т.е. суммарно 2*16*2*1.5 = 96 астрономических часов
при самостоятельном изучении на дому это сраных 2 недели
>>просто используют выбранный язык как иллюстрацию неких технологий
более того, когда у нас преподавали алгоритмы можно было сдавать на всем, что в уневере компилилось. Конечно были предпочтения типа делфи и шарпа, но и на руби можно было сдавать, никто не выгонял за это. А ответ прост - основная часть программирования - это осознание тонкостей задачи и проектировка решения.
Написать код по блок схеме каждый дурак сможет.
>>т.к. не больше 2 семестров, это значит 1 пара лекции и 1 пара лабы в неделю максимум - т.е. суммарно 2*16*2*1.5 = 96 астрономических часов
Из них ты приходишь на пары через раз, на лабы вообще не ходишь - ибо а че там делать? Дали техзадание - пиши код. В итоге такие предметы как методы оптимизации, на которые я приходил только по праздникам, я учил за 3-4 дня, после этого 2-3 дня писал лабы и сдавал на пять. И не только я так делал.
У универа на самом деле 2 задачи
1. положить какие то основы и выкинуть дребедень.
2 научить быстро и качественно осваивать новый материал
А учить хоткеям в VS и 1000 способам написать синглтон тебя никто не будет
Не знаю, потому, что не учился и гордость тут как бы ни при чем. Одно дело, если ты учишь язык с преподом: слушаешь лекции, и другое если сам, в одиночку. Если и гордиться, то лишь тем, что я в свое время не испугался незнакомого синтаксиса и большого объема материала - стал учить.
Кстати, писать лабы - бесполезное занятие. Большинство даже не въезжают, зачем они их вообще пишут, не говоря уже о понимании поставленной задачи.
> Одно дело, если ты учишь язык с преподом: слушаешь лекции, и другое если сам, в одиночку.
Ты не поверишь... Но очень часто в одиночку лучше.
Толковых и опытных преподов информатики, которые не засирают тебе мозг морально устаревшей и кривой хуйней, а разбираются в теме и могут ответить на любой твой вопрос, не так уж много, особенно в провинции...
В добавок к этому, если препод не сумеет заинтересовать группу, то толком послушать лекцию тебе не удастся, ну разве что ты будешь сидеть на первой парте...
А еще в вузе обязательно встретится куча предметов, которые, скорее всего, тебя не особо заинтересуют. Но вымотают нервы на зачетах и потратят твое время...
Поэтому самообразование в любом случае очень важно (и даже подразумевается учебной программой).
> Кстати, писать лабы - бесполезное занятие.
Ну почему, надо же на чем-то экспу набивать. Не все же могут придумать себе интересную задачку самостоятельно. А чем больше ты думаешь, проектируешь, кодишь - тем лучше.
>>Толковых и опытных преподов информатики, которые не засирают тебе мозг морально устаревшей и кривой хуйней, а разбираются в теме и могут ответить на любой твой вопрос, не так уж много, особенно в провинции...
Ну тогда мне сказочно повезло - у меня очень хорошие преподы были - всегда слушал с удовольствием, всегда грамотно отвечали на мои вопросы и отправляли на хорошие источники. Ну это в основном физика-вышмат-кодинг. Хотя многим эти преподы не нравились
Препод по никсам вообще добровольно провел курсы по erland, мне понравилось
если говорить про конкретно мой опыт - по программированию книжки дали гораздо больше, лучше и быстрее экспы, чем лекции
пример из жизни - на первой же лекции по крестам (между прочим, неплохой) преподаватель порекомендовал книжки, упомянув, что страуструпа не покупайте - слишком сложно будет для вас - я тогда пошёл и назло купил страуструпа и ещё какую то небольшую - за несколько недель чтения я уже знал весь курс семестра и на лекции ходить смысла не стало
на лабах по программированию на любом языке задания были всегда несложные - потому что их ориентировали на средний уровень студентов, а не с целью подзавалить (или дать подзаработать нескольким людям из группы)
Ну так расчитано это все на среднего студента без моска. Я вот тоже когда на шарп переходил мне сказали читать книгу ля основы C#.
После 50 страниц понял, что кроме хеллоуворда там ничего полезного нет, Начал читать книженцию с грозной препиской "для профессионалов". Которая была понятна и проста Так я узнал, что я профессионал
Спасибо, но чуток не то: нужно вытащить именно строку "Прокси не найден или используется высокоанонимный прокси" между тегами. Такая длинная цепочка тегов для того, чтобы можно было составить уникальный шаблон, т.к. теги "<td colspan=10><font class=spy1>" много раз повторяются в тексте, а нужная строка одна. Моя регулярка почему-то хватает и сам шаблон.
> Моя регулярка почему-то хватает и сам шаблон.
Если правильно понимаю, надо выделить нужную группу.
Если тупо этот шаблон с точностью до символа, но меняется только строка "Прокси не найден или используется высокоанонимный прокси", то можно использовать 1 группу из:
> а нужна только сама строка, без тегов.
Но... скобки, группы? С ними должно работать.
Как говорил Борманд, Скобки захватят значения. Как их достать со стороны делфи - смотри в документации к библиотеке с регулярками, которую юзаешь. Что-нибудь в духе r.group(1).
> тестера
А он точно умеет с группами работать? Обычно есть test, exec и match. test проверяет соответствие регулярке, а exec/match и из скобок достают.
По крайней мере, в ко-ко-консолечке браузера на жс работает (см. второй элемент массива в последней строке):
> var re = /<\/u><\/font><\/td><\/tr><tr><td\scolspan=10><font\sclass=spy1>(.*?)<\/font><\/td><\/tr><tr><td\scolspan=10>/
undefined
> '</u></font></td></tr><tr><td colspan=10><font class=spy1>Прокси не найден или используется высокоанонимный прокси</font></td></tr><tr><td colspan=10>'.match(re)
["</u></font></td></tr><tr><td colspan=10><font class=spy1>Прокси не найден или используется высокоанонимный прокси</font></td></tr><tr><td colspan=10>", "Прокси не найден или используется высокоанонимный прокси"]
Прошу прощенья, это я сам напутал/глюк тестера. В тестере по умолчанию стоит, вернее, намертво зашит match[0], мне же нужен match[1]. Придется в среде изучать. Спасибо большое за регулярку!
procedure TForm1.Button1Click(Sender: TObject);
var
fstream:tfilestream;
str,fname:string;
fmode:integer;
begin
fname:='C:\1234.txt'; //задаем имя файла
if fileexists(fname)=false then // проверим существование файла перед обращением
fmode:=fmcreate // если файл не существует, создаем его
else
fmode:=fmopenwrite; // иначе открываем в режиме "для записи"
str:='some string'#13#10; // строчка и символы перевода строки
fstream:=tfilestream.Create(fname,fmode); // связываем стрим с файлом
try
fstream.Position:=fstream.Size; // переводим файловый указатель в конец записи, чтобы не стереть уже содержащийся текст
fstream.Write(str[1],length(str)); // добавляем строчку
finally
fstream.Free;
end;
end;
p/s/ Горе Вам, если Вы-преподаватель. Если студенты, имея возможность общаться с преподавателем и задавать ему вопросы, ваяют такие вот глупости - преподавателя нужно гнать в шею. Таково мое мнение.
А fmCreate поди сразу же перетирает существующий файл?
Тогда вообще жопа полная 🙁 В делфи, получается, нет способа безопасно (при наличии конкурирующих процессов, которые пытаются сделать то же самое) открыть файл для дописывания... Ну разве что через WinAPI...
>> (при наличии конкурирующих процессов, которые пытаются сделать то же самое) открыть файл для дописывания...
есть режимы
fmCreate If the file exists, open for write access, otherwise, create a new file. Unlike the other constants, which are declared in the SysUtils unit, this constant is declared in tge classes unit.
fmOpenRead Open for read access only.
fmOpenWrite Open for write access only.
fmOpenReadWrite Open for read and write access.
fmShareCompat Compatible with the way FCBs are opened. Do not use this mode in cross-platform applications.
fmShareExclusive Read and write access is denied.
fmShareDenyWrite Write access is denied.
fmShareDenyRead Read access is denied. Do not use this mode in cross-platform applications.
fmShareDenyNone Allows full access for others.
можно, наверно, совмещать режимы, хотя я с этим не заморачивался.
>> можно, наверно, совмещать режимы
Авотхуй. Только что проверил. Все эти режимы кроме fmcreate кидают исключения, если файл не существует, если же комбировать fmcreate с другими режимами (или по отдельности), файл перетирается. Придется, все же, проверять существование файла, иначе никак.
p/s я немного не понимаю Вас, кэп. Если файла нет, его так или иначе придется создать. Чем это помешает разным процессам читать/писать в файл? Есть режимы же. Просто поставить проверку на сущестсвование и выбрать режим.
> Просто поставить проверку на сущестсвование и выбрать режим
Жопа в атомарности 🙂 Между вызовами fileexists и open файл могут удалить. Между вызовами fileexists (или try + open) и create файл могут создать, и мы перетрем инфу в нем... И режимы тут никак не спасают.
В API операционок для этого специальные флаги при открытии файлов есть - O_CREAT в никсах и OPEN_ALWAYS в виндах.
Само собой, что вероятность такого бага очень и очень маленькая, и в типичной дельфийской проге на это всем насрать... 146%,что ты с этими косяками никогда и не столкнешься за всю свою жизнь...
Ну фиг с ней с ошибкой, она очень редкая, а скорее вообще теоретическая. Но обидно, что приходится писать столько говнокода (как в твоем примере), тупо потому, что разрабы TFileStream поленились добавить пару флажков (например fmOpenOrCreate и fmAppend) и пару-тройку строчек кода. В операционке же весь нужный функционал уже есть...
> Никто не мешает создать потомка TFileStream и добавить в него нужный функционал.
Как? 🙂 Ну разве что с нуля переписать егонный Create... И enum с режимами один хрен не расширить...
С тем же успехом лучше сделать своего потомка TStream.
I much prefer to call Windows.CreateFile and specify exactly the flags I want, instead of Delphi's abstraction of them. Then use THandleStream instead of TFileStream.
Какой пиздец, прости... В делфи всегда так пишут в файл? Т.е. открытия на append там нет? И атомарного открытия-или-создания без ебли с fileexists тоже нет? Бедняги, как вы там вообще что-то пишете...
procedure TForm1.Button1Click(Sender: TObject);
var
fileStream: TFileStream;
begin
try
(* Attempt to open a non-existant file *)
fileStream := TFileStream.Create('NOT_THERE.FILE', fmOpenRead);
(* Process the file contents... *)
fileStream.Free;
except
on EFOpenError do ShowMessage('EFOpenError Raised');
else
ShowMessage('Exception Raised');
end;
end;
Это примерчег из справки седьмых дельфей - там они вообще на except исключение ловят.
> что бы машина стонала
Это я сейчас так развлекаюсь. Рисую множества Мандельброта и Жюлиа на GPU. При 10000 итераций на пиксель бедное GPU начинает стонать и крутить вентилятор 😉
Да ну, у них же сейчас у всех thermal throttling. Обороты сбавит немного, да и остынет. Ну и охлаждение неплохое, выше 50 градусов на этой видюхе я не видел.
предлагаю лениво обсудить застой в железках
вот например хотелось бы комп обновить, так интел штампует один шлак, нвидия стоит на месте, а радеон уже четвертый год одно и то же продает, только нумера перерисовывает
куда катится этот мир...
ну меня заебала материнка гигабайтовская
хочу выкинуть на помойку
сломала мне харды своим дерьмовым чипсетом
не грузится со своих же рейдов с первого раза
отсюда желание обновить все кишки
где блять ddr-4, какого хуя extreme процы у интела вечно тормозят на поколение от ширпотребного шлака, какого хуя их проц за килобакс должен сосать в чипсете
какого хуя их хасвельные процы заставляют меня нервно теребить материал про снятие крышки проца, ведь под крышкой птичье дерьмо вместо термопасты
Ивики не трожь, у меня ивик i5-3570 холодный как собачий нос 🙂
При полной загрузке 4 ядер залмановский пепелац вполне держит его на 50 градусах. Правда через пару минут такой работы обороты достаточно высокие набирает, и шумит.
> k
А он K. И материнка позволяет разгон, и память годная и с радиаторами. Их останавливает только один распиздяй, которому уже полгода лень настроить параметры и потестить 😉
> блин, хочу собраться духом и запилить в новом системнике водянку...
Тогда уж с полным погружением материнки в дистиллированную воду или вазелиновое масло:)
Бесшумно, не греется, правда есть риск разлить хладагент.
> а чего залман купил?
> ноктуа самое то
Ноктюа заказывать надо было. А залманы неплохие и у нас в городе лежали.
не, не хочу так...
у меня была на курсе 1-2 лаба по физике, где надо было всю лабу в глицериновой трубе шарик ронять, замерять и вытаскивать
до сих пор руки помнят этот пиздец, хоть и прошло уже дохуя лет
не смогу себя пересилить
да и стрёмное рассеивание будет от этого аквариума - надо будет делать стенки ребристыми и не ставить в глухой угол квартиры (чтобы хоть какой-нибудь сквозняк был)
> купи уже нормальный проц да погоняй его на 5Ггц
Купил @ погонял:
cpu MHz : 5000.013
cpu MHz : 4999.938
cpu MHz : 5000.266
cpu MHz : 5000.488
cpu MHz : 4999.999
cpu MHz : 5001.996
cpu MHz : 5000.022
cpu MHz : 5000.667
cpu MHz : 5001.747
cpu MHz : 4999.958
cpu MHz : 4999.653
cpu MHz : 5000.124
Да там скорее всего её никто и не измеряет... мне кажется, что тупо циферки из настроек PLL перемножают. А на входе у PLL'ок кварц с известной частотой.
Лол, померил чайник - показало 2кВт, как и написано на дне. Но теперь на компе все показания упали вдвое, что больше похоже на правду. Откалибровался что ли ебучий показометр?
если память без высокой накладки радиатора (типа vengeance в эпоху ddr-3), то войдет, просто сверху покроет
возможно, придется сначала ближнюю к сокету память ставить, а потом уже кулер (чтобы пальцы не корябать, если в нормальном порядке собирать)
П0мнишь я тебя про дерево девайсов на винде спрашивал?
С помощью msdn, книжек Oney и Руссиновича и windbj !devobj и !devstack я разобрался (это к вопросу о пользе живого дебага кстати).
В общем менеджер PnP строит дерево устройств из структур devnode. Каждая такая devnode -- значок в device manager. С ней всегда связан PDO -- инстанс объекта devobj (DEVICE_OBJECT). Это честный объект у Object Manager в неймспейсе \Device, у него даже ACL есть.
Создав PDO, PnP ищет драйвер (через реестр: причем драйвер может быть как у класса, так и у устройства) и вызывает у него AddDevice передавая указатель на PDO.
Драйвер создает FDO (ну или фильтр FIDO, там еще могут быть фильтры, например класс обычно фильтр создает).
FDO это тоже devobj, то-есть тоже объект Object Manager'а, и драйвер цепляет этот объект к PDO через IoAttachDeviceToDeviceStack.
Таким образом вокруг каждого devnode есть stack из нескольких device objects.
Растет куча говна (стек) с PDO внизу.
Драйвер так же регистрирует интерфейс устройства чтобы его мог найти userspace через SetupDi**
Драйвер может создать ссылку в \??\Global, чтобы userspace мог потом CreateFile.
И вот когда делается CreateFile то IRP идет к драйверу устройства по всему связанному с ним стеку: драйвер может сам обработать, а может передать дальше, в PDO.
Так что создать ссылку может как и драйвер PDO так и драйвер FDO, и даже круче: одно устройство может быть как PDO так и FDO (например хаб usb)
У devnode всгеда ессть ссылка на детей и на PDO (именно потому PDO виден у devnode в device manager)
У PDO (как и у любого device) есть ссылка на стек.
Так что отвечая на свой вопрос "как найти FDO по devnode" надо сделать так.
1) найти PDO для devnode (!devnode в windbg)
2) найти его стек (!devstack [адрес PDO])
И там будут все йстройства, включая FDO.
Есть еще !drvobj (объект драйвер который можбыть связян с 1 или более devobj) и можно по драйверу тоже найти.
Если просто ланчануть winobj то ты можешь увидеть все devobj в \Devices, но чтобы узнать какие они образуют стеки и к каким devnodes относятся (devnode не виден в winobj ибо не объект object manager'а) нужна или утилита DEVVIEW зазавтроством Oney или windbg.
Ебануться ваш WDM сложный, как только люди его понимают
"kernel32.dll" —— это не ядро. Это один из интерфейсов к ядру.
Ядро —— это "ntoskrnl.exe" ("ntkrnlpa.exe", "ntkrnlmp.exe", "ntkrpamp.exe") в "Windows NT", "vmm32.vxd" в "Windows 95/98/Me", "win386.exe" в расширенном режиме "Windows 3.x" и "dosx.exe" в стандартном режиме "Windows 3.x".
Коэффициент теплопроводности дерьма упоминается в ГОСТ Р 53042-2008, однако, таблиц с примерами значений для разных сортов мне найти не удалось. Ссылочками не поделитесь?
Как, на главном специализированном сайте по говну никто не знает, где скачать таблицы теплопроводности дерьма? Безобразие!
На данный момент располагаю информацией, что смесь навоза с соломой обладает низкой теплопроводностью, поскольку:
1. Куча может самовозгораться из-за протекающих химических реакций.
2. Под кучей даже летом можно обнаружить лёд или снег, если её клали зимой.
Но пока более точных данных нет, имею подозрение, что низкая теплопроводность обусловлена соломой. Где бы найти данные по чистому дерьму?
В ней описана только форма. Вероятно, форма непосредственно связана с количеством воды в дерьме (насколько помню, последние номера бывают при поносе, а первые при состоянии, близком к запору). Можно предположить, что у разных форм разная теплопроводность из-за разного содержания воды, но в таблице значения теплопроводности нет. Придётся измерять самостоятельно.
> Юзать панели Пельтье религия не позволяет?
Там на хасвеллах между кристаллом проца и его крышкой теплопередача плохая. Народу приходится разбирать проц и менять теплопроводящую херню 🙂 Элементы пельте тут не особо помогут. Разве что если их засунуть между кристаллом и крышкой.
Вот вам проекты моего препода на растерзание:
Этот на делфи. Вроде требует SQL Server. Но я думаю знающие люди оценят квалификацию моего уважаемого преподавателя. http://yadi.sk/d/AcndhxgNFbP7N
А эти два помоему на бейсике, препод со слюнями у рта кричит что это его 3Д и 2Д движки собственной разработки. Я делаю вид, что ему не верю что это возможно, а он бедный аж на говно исходит. Компилятор мне неизвестен, но не беда - экзэшники препод оставил http://yadi.sk/d/Q2IORhp3FbP96 http://yadi.sk/d/iEq_cCjLFbP9n
неясно только, ты хвалишься или жалуешься?
все остальное в вузе устраивает?
ты ведь не надеялся, что каждый первый встреченный в жизни препод будет светилой передовой науки, пренебрегающий гуглами, микрософтами, айбиемами и ораклами, выстроившимися в очередь с офферами к нему, и желающим передать всю глубину своего блестящего жизненного опыта за 40 тыщ рублей?
И как оно у тебя в гоголове уляляглось?
Помнишь в какой момент появилась SSE? Помнишь, когда intel стал RISC?
Помнишь кто такой Томасуло? Помнишь зачем нужен регистр C3?
какой курс? дельфи и (о ужас) бейсик - скорее всего первый
сомневаюсь, что один и тот же препод тащит все курсы один - скоро сменится на другого, значит
тем более, если ты назвал его курс информатикой
Вам необходимы парсеры или база электронных ящиков с вебсайтов? <a href=http://parsinfo.ru/products/parser_2gis>активация парсер 2gis ver 4 6</a>. Вы желаете купить граббер или базу e-mail оптово-розничных магазинов? Тогда вы попали туда, куда нужно!
На страницах нашего сайта вы найдёте парсеры и грабберы для маркетинга, приобрести информацию с базами контактов и e-mail. <a href=http://parsinfo.ru/products/parser_2gis>купить рарсер 2 гис</a>. Мы можем предложить даже базы порталов и устойчивые SMTP серверы для рассылки электронных сообщений.
Наше ПО и базы контактов смогут вам помочь в вашем бизнесе! <a href=http://parsinfo.ru/products/smtp-servera-dlya-rassylki>купить smtp</a>. Они созданы для того, дабы систематизировать информацию для её наиболее эффективного использования. Подобный подход к делу позволяет заниматься маркетингом во много раз эффективнее и зарабатывая соответственно во много раз больше денег. А базы контактов и e-mail позволят всегда иметь актуальный список постоянных и потенциальных заказчиков, держать связь и сотрудничать, договариваться и заключать сделки.
Для каждого пользователя мы предлагаем бесплатный парсер e-mail с сайтов, остальное ПО и базы контактов и данных мы предлагаем вам по низкой цене. <a href=http://parsinfo.ru/catalog/bazy-email-lyudej>база список жителей амурских область</a>. Вложенные подобным образом деньги помогут повысить ваши доходы на порядок!
21 век на дворе, юникод кругом, и только дельфины продолжают грызть кактус...
> filestream1 := TfileStream.Create('file.dat', fmcreate);
> WriteString('bla bla bla');
> filestream1.Destroy;
Инкапсуляция на высоте 🙂
> Строки 8-13
Интересно, а зачем автор посимвольно копирует строку перед записью в файл? Он как-то этот момент пояснил?
Гы, а он логичен. А мы то и не заметили, что он строку собирает 🙂
Тут вопрос в другом - нахрена строку разбирать на символы и собирать из нее еще одну точно такую же? 🙂 Почему бы просто не записать первую, которая st, без всех этих махинаций?
То ли дело "PHP", в котором для использования глобальной переменной нужно написать "global", а для захватывания родительского контекста в замыкании нужно написать "use".
stk := stk + ss;
много же в этом смысла
Уж либо все в один метод, либо поток создается при первом обращении и диспозится в конце работы модуля
Хрен бы с ним с созданием потока, ты посмотри в какую переменную его нужно помещать, чтобы WriteString нормально отработал... Чудеса инкапсуляции 😉
это не только инкапсуляция, это еще и высокое зацепление. )
Хотя да, ооп и делфи...
Да вполне адекватное там ООП, просто большинство дельфинов его не осилило, и никогда не сможет запилить свой класс (за исключением автосгенеренных TForm1, TForm2 и т.п.), что уж говорить о своем компоненте... Многие даже Form1 и Button1 во что-то более вменяемое не догадываются переименовать...
Так что правильней говорить так - ООП и дельфины.
Стрим - не поток в буквальном смысле, к потокам вообще никакого отношения не имеет. Это обертка над файловыми функциями винды, такими, как CreateFile/SetFilePointer, и т.д.
Как это не имеет? Это самый настоящий поток ввода-вывода, аля stream (не путать с потоком исполнения, нитью, аля thread).
раз уж Вы здесь, посоветуйте, как сделать так, чтобы регулярка не хватала токены, отдаленно похожие на прокси:
333.666.222.555:8080
я делаю так:
\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1, 5}
Скобки захватят значения. Как их достать со стороны делфи - смотри в документации к библиотеке с регулярками, которую юзаешь. Что-нибудь в духе r.group(1).
Ну а дальше тупо TryStrToInt и проверка на 0..255 и 0..65535. Вот и все.
Вот моя говнопрога на хаскеле, которая генерит такое регулярки, ибо руками писать их совсем уж влом: http://govnokod.ru/13674.
Для 0..255 регулярка будет [0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]
Для 0..65535 будет [0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]
Я думаю после этого тебе не захочется проверять число на попадание в диапазон при помощи регулярок 🙂
Совсем напрасно. Как только одолею - только на них и буду опираться при парсинге. Спасибо.
Не стоит 😉 Во многих случаях регулярки не самый лучший инструмент.
Например JSON и XML и HTML лучше разбирать готовыми парсерами, чем писать свой велосипед. По крайней мере от кучи граблей эти парсеры тебя уберегут.
А для достаточно сложных грамматик (например если ты пилишь свой скриптовый язык) есть генераторы парсеров типа flex/bison, antlr и им подобных...
казалось бы причем тут царь...
Убогое говно для калькулятора
лучше ли заюзать какой-нибудь lua
Конечно лучше.
Но вдруг очень-очень надо написать свой язык или извратный формат конфига? 🙂
У вас в говноделфях неужели нет функции strtoip?
Раз уже затронули тему регулярок: знает ли кто редактор регекспов, который \d{1,3}\. показывает как \d{1,3}. , т.е. подсвечивает синтаксис и убирает экранирующие бекслеши, а то синдром зубочистки заёбует.
>> strtoip
Что должна делать эта функция?
Готовой нет, но можно попытаться запилить свою. Кстати, первый раз вижу, чтобы IP выводили в число. Обычно отдельный тип пишут.
Nuclear launch detected.
>Готовой нет
А если найду? Сходу нашел какой-то модуль, который проверяет ipv4 на валидность.
(
Заберите этого мудака.
(_O_)
2.Я в одиночку без преподавателя освоил то, чему годами учат в вузах - в чем выражается мое нежелание учиться?
Уебанство - это что, плохие манеры? Лично я считаю, что уебанство - это постинг разного дерьма с анонимной учетки, обусловленный боязнью необходимости ответить за свои слова и упрекание других в том, чего ты не стоишь сам.
Нежелание слушать людей, которые знают больше тебя. Ебись тогда сам, что я могу сказать.
если не знаешь - зачем говоришь
обычно в "вузах" не тратят больше 2 семестров на один и тот же язык, и более того, просто используют выбранный язык как иллюстрацию неких технологий - т.е. не учат программировать например на дельфи, а иллюстрируют формошлепство, заодно дают основы ООП
т.к. не больше 2 семестров, это значит 1 пара лекции и 1 пара лабы в неделю максимум - т.е. суммарно 2*16*2*1.5 = 96 астрономических часов
при самостоятельном изучении на дому это сраных 2 недели
продолжаешь гордиться?
более того, когда у нас преподавали алгоритмы можно было сдавать на всем, что в уневере компилилось. Конечно были предпочтения типа делфи и шарпа, но и на руби можно было сдавать, никто не выгонял за это. А ответ прост - основная часть программирования - это осознание тонкостей задачи и проектировка решения.
Написать код по блок схеме каждый дурак сможет.
>>т.к. не больше 2 семестров, это значит 1 пара лекции и 1 пара лабы в неделю максимум - т.е. суммарно 2*16*2*1.5 = 96 астрономических часов
Из них ты приходишь на пары через раз, на лабы вообще не ходишь - ибо а че там делать? Дали техзадание - пиши код. В итоге такие предметы как методы оптимизации, на которые я приходил только по праздникам, я учил за 3-4 дня, после этого 2-3 дня писал лабы и сдавал на пять. И не только я так делал.
У универа на самом деле 2 задачи
1. положить какие то основы и выкинуть дребедень.
2 научить быстро и качественно осваивать новый материал
А учить хоткеям в VS и 1000 способам написать синглтон тебя никто не будет
(большая часть адресована стертору и пустоте)
Кстати, писать лабы - бесполезное занятие. Большинство даже не въезжают, зачем они их вообще пишут, не говоря уже о понимании поставленной задачи.
Ты не поверишь... Но очень часто в одиночку лучше.
Толковых и опытных преподов информатики, которые не засирают тебе мозг морально устаревшей и кривой хуйней, а разбираются в теме и могут ответить на любой твой вопрос, не так уж много, особенно в провинции...
В добавок к этому, если препод не сумеет заинтересовать группу, то толком послушать лекцию тебе не удастся, ну разве что ты будешь сидеть на первой парте...
А еще в вузе обязательно встретится куча предметов, которые, скорее всего, тебя не особо заинтересуют. Но вымотают нервы на зачетах и потратят твое время...
Поэтому самообразование в любом случае очень важно (и даже подразумевается учебной программой).
> Кстати, писать лабы - бесполезное занятие.
Ну почему, надо же на чем-то экспу набивать. Не все же могут придумать себе интересную задачку самостоятельно. А чем больше ты думаешь, проектируешь, кодишь - тем лучше.
Ну тогда мне сказочно повезло - у меня очень хорошие преподы были - всегда слушал с удовольствием, всегда грамотно отвечали на мои вопросы и отправляли на хорошие источники. Ну это в основном физика-вышмат-кодинг. Хотя многим эти преподы не нравились
Препод по никсам вообще добровольно провел курсы по erland, мне понравилось
Рашка-парашка? Спрошу еще раз, это в СНГ везде так?
Да и вообще код писать -бесполезное занятие. Все проги давно написаны
Это где так учат? У меня было:
Паскаль - 252 часа
С - 198 часов
Жаба - 210 часов
Все по одному семестру.
252/16 = 15.75 часов в неделю
т.е. это надо заниматься паскалём примерно 2-3 полных учебных дня из 6 в неделе
так и было??
Выходит где-то 2 лекции, 2,5 семинара и 2,5 лабы в неделю.
Так это поди вместе с самостоятельной работой, которую преподы любят приписывать к полным часам 😉
пример из жизни - на первой же лекции по крестам (между прочим, неплохой) преподаватель порекомендовал книжки, упомянув, что страуструпа не покупайте - слишком сложно будет для вас - я тогда пошёл и назло купил страуструпа и ещё какую то небольшую - за несколько недель чтения я уже знал весь курс семестра и на лекции ходить смысла не стало
на лабах по программированию на любом языке задания были всегда несложные - потому что их ориентировали на средний уровень студентов, а не с целью подзавалить (или дать подзаработать нескольким людям из группы)
После 50 страниц понял, что кроме хеллоуворда там ничего полезного нет, Начал читать книженцию с грозной препиской "для профессионалов". Которая была понятна и проста
Так я узнал, что я профессионал
не нахватав при этом лишнего?
p/s/ поменьше пафоса, господа.
содержимое font - в 1й группе
Если правильно понимаю, надо выделить нужную группу.
Если тупо этот шаблон с точностью до символа, но меняется только строка "Прокси не найден или используется высокоанонимный прокси", то можно использовать 1 группу из:
а нужна только сама строка, без тегов.
Ок. Наверно, я неправильно формулирую задачу.
Но... скобки, группы? С ними должно работать.
Как говорил Борманд,
Скобки захватят значения. Как их достать со стороны делфи - смотри в документации к библиотеке с регулярками, которую юзаешь. Что-нибудь в духе r.group(1).
А он точно умеет с группами работать? Обычно есть test, exec и match. test проверяет соответствие регулярке, а exec/match и из скобок достают.
Я с дельфи не знаком, но в примерах 2 и 3 к самому tregexpr http://regexpstudio.com/TRegExpr/Help/article_bird_eye_view.html они используют TRegExpr.Exec и TRegExpr.Match.
По крайней мере, в ко-ко-консолечке браузера на жс работает (см. второй элемент массива в последней строке):
кстати, послушайте Джоя 😉
p/s/ Горе Вам, если Вы-преподаватель. Если студенты, имея возможность общаться с преподавателем и задавать ему вопросы, ваяют такие вот глупости - преподавателя нужно гнать в шею. Таково мое мнение.
т.е. дельфи не умеет сделать это само?
Тогда вообще жопа полная 🙁 В делфи, получается, нет способа безопасно (при наличии конкурирующих процессов, которые пытаются сделать то же самое) открыть файл для дописывания... Ну разве что через WinAPI...
есть режимы
fmCreate If the file exists, open for write access, otherwise, create a new file. Unlike the other constants, which are declared in the SysUtils unit, this constant is declared in tge classes unit.
fmOpenRead Open for read access only.
fmOpenWrite Open for write access only.
fmOpenReadWrite Open for read and write access.
fmShareCompat Compatible with the way FCBs are opened. Do not use this mode in cross-platform applications.
fmShareExclusive Read and write access is denied.
fmShareDenyWrite Write access is denied.
fmShareDenyRead Read access is denied. Do not use this mode in cross-platform applications.
fmShareDenyNone Allows full access for others.
можно, наверно, совмещать режимы, хотя я с этим не заморачивался.
Авотхуй. Только что проверил. Все эти режимы кроме fmcreate кидают исключения, если файл не существует, если же комбировать fmcreate с другими режимами (или по отдельности), файл перетирается. Придется, все же, проверять существование файла, иначе никак.
p/s я немного не понимаю Вас, кэп. Если файла нет, его так или иначе придется создать. Чем это помешает разным процессам читать/писать в файл? Есть режимы же. Просто поставить проверку на сущестсвование и выбрать режим.
Жопа в атомарности 🙂 Между вызовами fileexists и open файл могут удалить. Между вызовами fileexists (или try + open) и create файл могут создать, и мы перетрем инфу в нем... И режимы тут никак не спасают.
В API операционок для этого специальные флаги при открытии файлов есть - O_CREAT в никсах и OPEN_ALWAYS в виндах.
Само собой, что вероятность такого бага очень и очень маленькая, и в типичной дельфийской проге на это всем насрать... 146%,что ты с этими косяками никогда и не столкнешься за всю свою жизнь...
Просто я ёбаный параноик ;(
Не думаю, что это столь плохо 😉
Как? 🙂 Ну разве что с нуля переписать егонный Create... И enum с режимами один хрен не расширить...
С тем же успехом лучше сделать своего потомка TStream.
Это примерчег из справки седьмых дельфей - там они вообще на except исключение ловят.
procedure WriteString(ST: Ansistring);
begin
filestream1.Write(st[1], Length(st));
end;
Препод в ахуе))
Это я сейчас так развлекаюсь. Рисую множества Мандельброта и Жюлиа на GPU. При 10000 итераций на пиксель бедное GPU начинает стонать и крутить вентилятор 😉
И это не титанчик, а дохленькая GTX 660.
вот например хотелось бы комп обновить, так интел штампует один шлак, нвидия стоит на месте, а радеон уже четвертый год одно и то же продает, только нумера перерисовывает
куда катится этот мир...
хочу выкинуть на помойку
сломала мне харды своим дерьмовым чипсетом
не грузится со своих же рейдов с первого раза
отсюда желание обновить все кишки
где блять ddr-4, какого хуя extreme процы у интела вечно тормозят на поколение от ширпотребного шлака, какого хуя их проц за килобакс должен сосать в чипсете
какого хуя их хасвельные процы заставляют меня нервно теребить материал про снятие крышки проца, ведь под крышкой птичье дерьмо вместо термопасты
любое дерьмо плохо проводит тепло
реально, для энтузиастов даже выпускают специальные наборы для использования ivy/haswell без крышки (naked ivy)
http://www.ekwb.com/shop/ek-supremacy-precisemount-add-on-naked-ivy.html
ну куда это годится...
При полной загрузке 4 ядер залмановский пепелац вполне держит его на 50 градусах. Правда через пару минут такой работы обороты достаточно высокие набирает, и шумит.
купи уже нормальный проц да погоняй его на 5Ггц, не позорься
А он K. И материнка позволяет разгон, и память годная и с радиаторами. Их останавливает только один распиздяй, которому уже полгода лень настроить параметры и потестить 😉
ноктуа самое то
блин, хочу собраться духом и запилить в новом системнике водянку...
Тогда уж с полным погружением материнки в дистиллированную воду или вазелиновое масло:)
Бесшумно, не греется, правда есть риск разлить хладагент.
> а чего залман купил?
> ноктуа самое то
Ноктюа заказывать надо было. А залманы неплохие и у нас в городе лежали.
Вот такой вот пепелац: http://market.yandex.ru/model.xml?modelid=6031541
у меня была на курсе 1-2 лаба по физике, где надо было всю лабу в глицериновой трубе шарик ронять, замерять и вытаскивать
до сих пор руки помнят этот пиздец, хоть и прошло уже дохуя лет
не смогу себя пересилить
да и стрёмное рассеивание будет от этого аквариума - надо будет делать стенки ребристыми и не ставить в глухой угол квартиры (чтобы хоть какой-нибудь сквозняк был)
думаю что-нибудь попроще - обычный радиатор на выдув через верх + возможно от немцев стенку http://www.alphacool.com/images/product_images/popup_images/759_0.jpg
А ещё были задроченные осциллоскопы, с прыгающим лучом, и престарелые мосты Уитстона.
Купил @ погонял:
А то. Жаль, что охлаждения хватает всего на 4 треда из 12 на этой частоте. Всё-таки старый кулерок оказался слабоват.
Судя по исходникам ядра - через ACPI.
ну тоесть проц сам свою частоту считает?
а ты уверне что не врет?
Моники тратят 35 и 30 ватт соответственно.
Системник без разгона:
100W idle
180W игра в кружочки
280W 12x sha256
320W ffmpeg -preset slow
400W far cry primal на максималочках
Системник под разгоном до 5GHz:
300W 4x sha256
330W 5x sha256
370W 6x sha256
На 7x и выше охлаждения не хватает, скидывает частоту 🙁
З.Ы. Будет чем погреться холодными зимними вечерами...
И его не перекишвает?
750.
Да копейки, на самом деле. У нас же не европка.
З.Ы. Проц в простое 700МГц всего, почти как селерон Тараса (ютубчик, редакторы и т.п. = простой).
Это обращение, или syoma спрашивает?
ковырятель некротредов
Ну пока не тормозит...
Старой доброй перформы ему только на штатные 4.4-4.7 хватает...
из воздуха одна из наиболее збс
до водянки, даже в заводском контуре, у меня так руки и не дошли
З.Ы. Да можно и водянку, в принципе. Места в системнике теперь дохуя...
а так сейчас современная здоровенная - D15, бери, если место есть под такую ебанину (и деньги)
водяные шумят сильнее, там помпа
но потенциально эффективнее (для 8700k ноктуа хватит вообще без проблем)
Ебать, почти 1.5кг. Мне теперь перформа кажется маленькой... Да должна войти, если за память не зацепится.
возможно, придется сначала ближнюю к сокету память ставить, а потом уже кулер (чтобы пальцы не корябать, если в нормальном порядке собирать)
твой тоже позволяет, проверь
Не хотелось бы верхние заглушки снимать. Они неплохо шум гасят, а у меня системник на полу.
Здесь ещё стоит задуматься о том, сколько потребляет проц, которому нужен такой кулер...
С помощью msdn, книжек Oney и Руссиновича и windbj !devobj и !devstack я разобрался (это к вопросу о пользе живого дебага кстати).
В общем менеджер PnP строит дерево устройств из структур devnode. Каждая такая devnode -- значок в device manager. С ней всегда связан PDO -- инстанс объекта devobj (DEVICE_OBJECT). Это честный объект у Object Manager в неймспейсе \Device, у него даже ACL есть.
Создав PDO, PnP ищет драйвер (через реестр: причем драйвер может быть как у класса, так и у устройства) и вызывает у него AddDevice передавая указатель на PDO.
Драйвер создает FDO (ну или фильтр FIDO, там еще могут быть фильтры, например класс обычно фильтр создает).
FDO это тоже devobj, то-есть тоже объект Object Manager'а, и драйвер цепляет этот объект к PDO через IoAttachDeviceToDeviceStack.
Таким образом вокруг каждого devnode есть stack из нескольких device objects.
Растет куча говна (стек) с PDO внизу.
Драйвер так же регистрирует интерфейс устройства чтобы его мог найти userspace через SetupDi**
Драйвер может создать ссылку в \??\Global, чтобы userspace мог потом CreateFile.
И вот когда делается CreateFile то IRP идет к драйверу устройства по всему связанному с ним стеку: драйвер может сам обработать, а может передать дальше, в PDO.
Так что создать ссылку может как и драйвер PDO так и драйвер FDO, и даже круче: одно устройство может быть как PDO так и FDO (например хаб usb)
У devnode всгеда ессть ссылка на детей и на PDO (именно потому PDO виден у devnode в device manager)
У PDO (как и у любого device) есть ссылка на стек.
Так что отвечая на свой вопрос "как найти FDO по devnode" надо сделать так.
1) найти PDO для devnode (!devnode в windbg)
2) найти его стек (!devstack [адрес PDO])
И там будут все йстройства, включая FDO.
Есть еще !drvobj (объект драйвер который можбыть связян с 1 или более devobj) и можно по драйверу тоже найти.
Если просто ланчануть winobj то ты можешь увидеть все devobj в \Devices, но чтобы узнать какие они образуют стеки и к каким devnodes относятся (devnode не виден в winobj ибо не объект object manager'а) нужна или утилита DEVVIEW зазавтроством Oney или windbg.
Ебануться ваш WDM сложный, как только люди его понимают
и ядро еще свое собрать не забудь, каждую опцию осмысленно выбирав
depmod.alias или как там оно
полный PnP же, как в винде.
когда-то было нельзя: надо было осмысленно или вкопаливать дрова в ядро или modprobe их
Я так делал пару раз (тогда ещё 2.6 ядро было), но возня при обновлении ядра утомляет.
Ты про ревью новых опций ядра прямо в соснольке во время апгрейда со старого конфига? Да, не особо приятная вещь.
Ядро —— это "ntoskrnl.exe" ("ntkrnlpa.exe", "ntkrnlmp.exe", "ntkrpamp.exe") в "Windows NT", "vmm32.vxd" в "Windows 95/98/Me", "win386.exe" в расширенном режиме "Windows 3.x" и "dosx.exe" в стандартном режиме "Windows 3.x".
На данный момент располагаю информацией, что смесь навоза с соломой обладает низкой теплопроводностью, поскольку:
1. Куча может самовозгораться из-за протекающих химических реакций.
2. Под кучей даже летом можно обнаружить лёд или снег, если её клали зимой.
Но пока более точных данных нет, имею подозрение, что низкая теплопроводность обусловлена соломой. Где бы найти данные по чистому дерьму?
Боюсь, только составлять таблицу самому...
Там на хасвеллах между кристаллом проца и его крышкой теплопередача плохая. Народу приходится разбирать проц и менять теплопроводящую херню 🙂 Элементы пельте тут не особо помогут. Разве что если их засунуть между кристаллом и крышкой.
Но в данном состоянии я солидарен со стертором, процедура - сраное говно.
p/s/
Ава - заебись.
Этот на делфи. Вроде требует SQL Server. Но я думаю знающие люди оценят квалификацию моего уважаемого преподавателя.
http://yadi.sk/d/AcndhxgNFbP7N
А эти два помоему на бейсике, препод со слюнями у рта кричит что это его 3Д и 2Д движки собственной разработки. Я делаю вид, что ему не верю что это возможно, а он бедный аж на говно исходит. Компилятор мне неизвестен, но не беда - экзэшники препод оставил
http://yadi.sk/d/Q2IORhp3FbP96
http://yadi.sk/d/iEq_cCjLFbP9n
все остальное в вузе устраивает?
ты ведь не надеялся, что каждый первый встреченный в жизни препод будет светилой передовой науки, пренебрегающий гуглами, микрософтами, айбиемами и ораклами, выстроившимися в очередь с офферами к нему, и желающим передать всю глубину своего блестящего жизненного опыта за 40 тыщ рублей?
Помнишь в какой момент появилась SSE? Помнишь, когда intel стал RISC?
Помнишь кто такой Томасуло? Помнишь зачем нужен регистр C3?
А что это?
ничетак, актуальненько
сомневаюсь, что один и тот же препод тащит все курсы один - скоро сменится на другого, значит
тем более, если ты назвал его курс информатикой
Или вот наверни http://www.lektorium.tv/subject/?id=2716
Ничего не найдено
ты соврал
На страницах нашего сайта вы найдёте парсеры и грабберы для маркетинга, приобрести информацию с базами контактов и e-mail. <a href=http://parsinfo.ru/products/parser_2gis>купить рарсер 2 гис</a>. Мы можем предложить даже базы порталов и устойчивые SMTP серверы для рассылки электронных сообщений.
Наше ПО и базы контактов смогут вам помочь в вашем бизнесе! <a href=http://parsinfo.ru/products/smtp-servera-dlya-rassylki>купить smtp</a>. Они созданы для того, дабы систематизировать информацию для её наиболее эффективного использования. Подобный подход к делу позволяет заниматься маркетингом во много раз эффективнее и зарабатывая соответственно во много раз больше денег. А базы контактов и e-mail позволят всегда иметь актуальный список постоянных и потенциальных заказчиков, держать связь и сотрудничать, договариваться и заключать сделки.
Для каждого пользователя мы предлагаем бесплатный парсер e-mail с сайтов, остальное ПО и базы контактов и данных мы предлагаем вам по низкой цене. <a href=http://parsinfo.ru/catalog/bazy-email-lyudej>база список жителей амурских область</a>. Вложенные подобным образом деньги помогут повысить ваши доходы на порядок!