Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #71, НОЯБРЬ 2004 г.

FAQ

Степан Ильин aka Step

Хакер, номер #071, стр. 071-136-3


A: Не секрет, что эффективность алгоритмов играет далеко не последнюю роль во время разработки какого-либо проекта, пускай даже самого элементарного. Это эффективность нужно каким-то образом измерять, а для этого можно использовать разные подходы. Самый примитивный – запустить каждый алгоритм с одними и теми же данными, а потом сравнить время исполнения. Однако это не лучший вариант, т.к. при других условиях вполне может оказаться, что полученные отношения производительности не выполняются. Предпочтительнее другой способ – математический, основанный на оценке эффективности путем подсчета количества операций. Результат такого подсчета обозначается специальным символом O(n). Это так называемая верхняя оценка. Количество операций, а, следовательно, и время работы растет не быстрее, чем количество элементов. Если вместо n будет стоять n^2 (n в квадрате), то сложность будет соответственно больше, как и у, к примеру, n*log(n). Математическое обоснование этого способа, а также правила и примеры составления функции ты можешь прочитать здесь: http://algolist.manual.ru/misc/o_n.php.

Q: Существуют ли способы заставить работать Visual Basic 6 с БД Access2000? Если есть, то подскажи варианты. Пишу софт для предприятия, но не могу найти инфы по этому поводу.

A: Плохо ищешь, двоечник! Глянь ты хотя бы в банальный vba.hlm – сразу же найдешь там инфу по «Data Access Methods by Object». Ну, да ладно. Общий план работы с базой выглядит следующим образом. Первым делом следует установить ссылку на библиотеку Microsoft DAO 3.6 Object Library (версия и сама библиотека могут, естественно, быть другими). Далее деклалируем типы:

Dim dbsMy As Database

Dim rsMy As Recordset

Открытие базы происходит следующим образом:

Set dbsMy = OpenDatabase("c:\dbsMy.mdb")

А таблицы следующим:

Set rsMy = dbsMy.OpenRecordset("Таблица 1", dbOpenDynaset)

Запись добавить можно, например, так:

rsMy.AddNew

rsMy.AbsolutePosition = 1

rsMy.Edit

rsMy("Поле1") = "Хакер!"

rsMy.Update

Поиск по базе:

rsMy.FindFirst ("Поле1='Хакер'")

MsgBox ( rsMy("Поле1"))

Закрытие базы

rsMy.Close

dbsMy.Close

Q: Вопрос, возможно, довольно примитивный, но… Существует ли возможность из PHP-скрипта запустить внешнюю программу? Причем не просто запустить, но и скормить ей на вход данные, и, мало того, еще и получить результат ее работы?

A: Стандартная, казалось бы, для таких дел функция system() едва ли в этом случае будет хорошим вариантом. Я бы на твоем месте поступил так: раз нужно передать свои данные на stdin внешней программе, то почему бы не воспользоваться функцией proc_open (актуально только для PHP > = 4.3.0, PHP 5)? Она выполняет любую команду и умеет работать с потоками. Именно то, что нужно! Хорошо и то, что в справке подробно разобран пример ее использования. Здесь я его дублировать не буду.

Q: Посоветуй прогу для автоматического ввода данных в полях HTML-овских форм. В последнее время начал активно заниматься продвижением своих веб-проектов. Отсюда вытекает масса мороки с регистрацией в различных топах, рейтингах и т.п. Специальные сервисы для этого дела я юзать не хочу, потому что не доверяю я им!

Назад на стр. 071-136-2  Содержание  Вперед на стр. 071-136-4