Выношу на всеобщий флуд исходники моего прокси чекера. Всё описание тут: /showpost.php?p=2338518&postcount=16 В архиве найдете файлы: funct.cpp - разные вспомогательные функции, module_check.cpp - функции проверки прокси module_file.cpp - работа с файлами (диалоги, загрузка, сохранение) ProxyCheck.cpp - главный файл funct.h module_check.h module_file.h ProxyCheck.h resource.h - хидер с ID ресурсов icon1.ico - иконко ProxyCheck.rc - исходник ресурсов ProxyCheck.vcproj - файл проекта. Проект компилится в MS VC++ 2008 как Release. Как Debug может и не скомпилится, да и неособо нужно P.S. Мне абсолютно пох** на указанные вами недостатики или корявость кода, писал сам в своё удовольствие, тем более в ограниченное время, так что если что-то не нравится по коду - напишите лучше. P.P.S. для многих начинающих будет полезным реализация работы с проксями с использованием таймаутов. P.P.P.S флуд в теме преветствуется!!! Один хер удалю не понравившееся))) А вот теперь самое главное: не выкладывал по той причине, что шас из этих исходников накомпилят чекер который будет сливать на лево прокси. Сам уже не раз видел софт который юзает прокси, но через определенное время сливает их куда-либо. По этому в паблике периодически всплывают приватные бекконнет прокси. Как говорит народная реклама: Опасайтесь подделок. P.P.P.P.S для всякого рода умников которые встраивают в код черные дыры или сливают прокси - если будите делать, то хотя бы копирайты убирайте мои. А то уже за***ло слушать претензии от людей юзающих софт с пабликовскими исходниками, который начинал делать непредусмотренные мною функции.
<FLOOD> исходники исходники мои перекомпилят боялся выкладывать в паблик... такое ощущение что у вас простите мания величия. как будто кроме вас никто несможет написать подобное. блин в C++ билдере к примеру простенький многопоточный HTTP прокси чекер пишется пять минут. реально не больше. </FLOOD>
2 good_man нет, это не мания величия. Если думать как ты рассуждаешь, то для подставы вообще нинидо ничего брать, а можно самому написать. да на делфи и билдере с компонентами тож можно написать но это будет уродство, которое способен навоять любой начинающий мего кодер). Насчет перекомпилят - простой пример: 1) штуки 3 пабликовский прокси чекера и все сливали листы на лево. 2) когда выложил исходник билдера для пинча, то буквально через пару дней уже появился поддельный билдер. 3) на днях встретил уже мою DLL для работы с аськой (IcqMod) которая посе коннекта к серваку отсылала логин и пас на определенную аську. И при этом этого кода так мало было, что по размеру была DLL как и старая. 4) Вот шумиха небольшая была по поводу троя SpyEye когда ктото ломанул его и выложил в паблик. А оказалось что потом эти боты уходили на левый сервак. И таких случаев десятки.
GhostOnline ну знаешь, лейкой тоже можно нос закапывать, вот тока это будет уродство. Тыже не будешь заказывать огромный грузович, чтобы перевести телевизор? Вот и тут тоже самое. VCL - это предназначена чуть для другова типа софта. Чтобы запустить 200 потоков проверки, тебе придется создать динамически все компоненты. А это уже само сабой уродство. Если дело на то пошло, то можно вообще чекер написать в 50 строк кода: 1) залил список на спец сайт 2) сайт отчекал 3) забрал результат чека 4) спарсил и вывел на экран. Еслибы винду писалибы по такому принципу, то и вычислительного кластера бы не хватило чтобы нормально обеспечить работу всей системы. И веселабы она гдето этак пару терабайт.
Зря ты думаешь что VCL такая медленная. Я раньше тоже так думал, пока не провел тесты. Создать 200 невизуальных компонентов в рантайме - смешно. Невизуальные можно и десятками тысяч создавать. http://diary.ru/~himself/p102937529.htm И это не пустые слова, я своими руками создаю многопоточные программы работающие в 500 потоков на компонентах с низкой нагрузкой на процессор. Просто надо знать некотрые особенности delphi А про венду - не надо. Венда это системное ПО, а мы тут прикладное обсуждаем. И кстати, почему некрософт усиленно пиарит дотнет последние лет 10? Уж не потому-ли, что winapi-подход считается устаревшим? По твоему мнению получается что на .NET , VCL, Qt весь софт медленный и уродливый. И, мое скромное имхо оптимизировать надо не тут. Вот пример: когда я только начал кодить многопоточный софт под веб, у меня 100 потоков нагружали проц. на 50%. Я начал думать что это компоненты виноваты. Однако вспомнил старый принцип: прежде чем оптимизировать выясните что именно тормозит выполнение. Потому что большинство программистов ошибаются с предметом оптимизации. Я начал профилировать свой код, проводить замеры и т.п. И выяснил узкие места своего кода. Теперь я добился 10-кратного уменьшения нагрузки на проц. А с асинхронными запросами - вообще минимальной. Пройдет еще время и я уверен что добьюсь еще лучших результатов. Вот например, написал прокси-чекер для себя за 2-3 часа на асинхронной библиотеке сетевых компонентов ICS. Программа однопоточная но держит одновременно 1200 коннектов. Больше не ставил, т.к. не было необходимости, но уверен что и 2000 выдержит. Другие чекеры меня как раз не устраивали: то нельзя свою страницу чекинга задавать, то ограничение на количество потоков, то еще что нибудь.
хмм какой то нездоровый диалог дельфи няшечка бесспорно по сравнению с Си и именно из за тучи готовых компонентов никто на дельфе писать не заставляет ядро чем бы оно не занималось просто в ядре сами понимаете все охота руками потрогать можно и для души пописать ядро на asm/c/c++ кому что ближе а вот например гуи обвеску писать на Си задротство в высшей степени никчемное убиение времени тут идеально бы подошло c++/delphi/c#/java p.s ...да и даже если смотреть только на ядро это для нас например для души Си а кто то так же для души красиво напишет на дельфи не обязательно же в ядре юзать компоненты дельфи красиво можно писать на чем угодно надо просто мастером быть и показать красоту алгоритмами или стилем чтоб глаз радовался а какой там язык какая разница для 99% прог это все равно
Лично по мне - делфи отупляет человека. т.е. для всех задач там есть уже реализованные компоненты, и вот человек пару лет пишет всё легко и быстро и юзает компоненты, а потом в один прикрасный момент получается так что чтото ему не подходит/нет компонента и надо реализовать самому всё и тут начинается жопа, потому что он незнает устройства операционной системы (в плане функций), незнает принципы работу протоколов. Потому что сидел всегда на всём готовеньком. ВОт так вот и получается что половина делфи программистов пишуших софт для веба и юзающих инди, незнаю даже банальных вещей HTTP протокола, потому что всё за них делал компонент. Лично сам проверил что делфи не оч производительная в плане нагрузки и расходывания памяти. Си тут выигрывает по полной. Конечно можно добиться и более лучших результатов, но это уже будет отдалено от принципов делфи. КОнечно всё зависит от подхода. Но у делфи он изначально настраивает слегка не на тот путь. Личный опыт - просто веб сервер заточненный на отдачу 1 файла. реализованный на СИ с испольщованием IOCP выдерживал на Win 2003 Server (4-x ядерный проц) порядка 200к единовременных коннектов. (проверено ддос атакой). и при этом всё работало нормально. правдо потом при 300к у винды закончился както лимит и у сервака наглухо TCP повис до ребута. при этом UDP и ICMP пахал отлично. В делфи самое слабое место - строки. в частности тип string - реализован ужас как. И еще ошибра если можо так сказать в архитектуре делфи - передача параметров не по ссылки а по значению (а это пздц как не по феншую). VCL - медленнее по определению уже. Достаточно классовой реализации и того что это надстройка над WinAPI а любая надстройка забирает процессорного времени с каждым своим уровнем. .NET - удобно программистам, но программы написанные на ней тормознутые улитки. Они грузятся раза в 3-4 дольше. Сильно зависят от самого .NET и опятьже по производительности слегка теряют. итого вывод: шарпы и делфи - гуи и базы, простейшие задачи с сетью Остальное Си, в режких случаях С++ Кстати, Делфи хорошо распространен тока на снгешных просторах, в забугорье - очень мало кто его признает. А теперь оцени востребованность языков: И реальное использование
В смысле? В дельфи же есть передача по var, const, out и по значению? Или ты про что? А про готовенькое - согласен полностью. Но это не значит что все кодеры на дельфи такие. Есть и специалисты. Ну быдлокодеров хватает, это да. Но что поделать то.. это мне зачем? ты думаешь я проповедую всем использовать дельфи? наоборот, в соседнем топике советовал сишарп. мне всего лишь не понравилась фраза "на компонентах уродство". и картинки - баян, потому что я знаю эти рейты и частенько их просматриваю ЗЫ Ну вот, супер тормозная джава - один из самых популярных языков
2 GhostOnline, да есть возможность по значение, по ссыле итд итп передавать. но по дефолту ведь используется по значению и 99% об этом не задумываются и передают в итоге по 10-20 килобайт строки из одной функции в другую, тока чтобы найти какоето слово в этом тексте. А всё что по дефолту - то и используется. Достаточно взять пингвинов и винду. В XP можно сидеть под админом и все и сидят, хотя по идее можно былобы сидеть под ограниченной учеткой а админа тока для инстала юзать. В пингвинах запрещено под рутом сидеть, по этому народ както и не сидит, а тока конфигурирует. И единственное что придумало MS чтобы это исправить - ввела UAC который какраз и забирает права. Многие привыкли на готовеньком и по этому мало что понимают в том, что на самом деле делается. Это тоже самое что ты купил машину и ничего не знаешь в её устрйостве. И при первой поломке будешь вызывать эвакуатор, хотя на деле может там пару минут надо для починки. Конечно есть специалисты по делфи (у самого есть знакомый - профессиональный разработчик бизнес приложений на делфи), и он пишет такое что там реально годами будешь писать без VCL ну собственно говоря делфи и создавался в первую очередь для бизнес приложений и баз данных
2 GhostOnline нам с тобой тяжеловато друг друга понять, потому что ты прикладной программист, а системный. Тут как раз в тему старинный анекдот:
string - суть указатель. умный указатель с подсчетом ссылок. по идее это тот же PChar но с автоматическим выделением/освобождением памяти. хоть у тебя string указывает на 2 ГБ строку, передавая ее ты передашь 4 байта, при этом счетчик ссылок увеличится на 1, при выходе из подпрограммы уменьшится. если счетчик станет равен 0, память освободится. если строка не модифицируется в подпрограмме можно ее передать с директивой const чтобы отключить ref count. По-моему все достаточно продумано сделано. Так о каких "по 10-20 килобайт строки из одной функции в другую" ты говоришь?