Компоненты для рисования графов на Delphi (C Builder)

При решении ряда задач требуется реализовывать отображение различных структур в виде графов - простых, ориентированных, нагруженных… В очередной раз может встать вопрос - делать ли в рамках проекта, либо использовать существующие наработки. Каждый из вариантов имеет право на существование, однако в любом случае хотя бы ознакомиться с уже имеющимся материалом по этой теме не помешает.

Читать целиком »

Опубликовано Февраль 7, 2008 | автор: levik  |  Без комментариев »

php 0010 - урок PHP вводный

Решил опубликовать на сайте серию статей (уроков, обзоров - называйте как хотите) для начинающего PHP-шника. Естественно, на сегодняшний день выпущено очень много литературы. Однако, постараюсь обойтись без лишних теорий. Будем учиться на примерах.

С чего начать!? Думаю, для начала будет правильно вообще разобраться, что такое PHP , и нужно ли его изучать.

Если же Вы твердо решили “ДА”, то, пожалуй, следует начать с установки “среды разработки”. Рекомендую воспользоваться “джентельменским набором веб разработчика” или в быту “ДЕНВЕРом”. На сайте разработчиков denwer.ru Вы можете найти всю документацию и дистрибутивы. Смело устанавливайте последнюю версию, и настройтесь  на … долгий и тернистый путь к знаниям, наберитесь упорства и смело продолжайте!

Также рекомендую установить следующие программы:

  1.  Total Commander - файловый менеджер. По сравнению со стандартным проводником Windows позволяет многие функции упростить (вплоть до “одной кнопки”). Поначалу может показаться неудобным, но это дело привычки.. И опять же дело лично каждого.
  2. Текстовый редактор с подсветкой (рекомендую bred 3 или notepad++ - в обоих есть функция подсветки синтаксиса). Настоятельно не рекомендую пользоваться “WYSIWHYG” редакторами (Macromedia Dreamweawer, например). И уж тем более, рекомендую не пользоваться Microsoft Front Page.

Вот и все, что нам потребуется для разработки.

Мы подготовили рабочее место - а это, согласитесь, неплохой задел для хорошей работы. Пожалуй, на этом пока остановимся.

Опубликовано Февраль 3, 2008 | автор: levik  |  Без комментариев »

Как работает интернет. Для начинающих

Тем, кто представляет, как “работает” Интернет, статья может показаться неинтересной. Все расписано очень простым и понятным языком. Многие подробности опущены.

Предупреждение сделано. Теперь поехали.

Раз уж Вы оказались на моем сайте, то так или иначе Вы “сидите в интернете”. Что же за этим скрывается? Совсем простым языком описать то, как “работает” интернет, можно примерно так:

Вы, сидя за своим компьютером открываете программу-браузер (скорее всего, Internet Explorer, mozilla Firefox или Opera). Программа может открыть пустую страницу - тогда придется вводить в адресной строке адрес сайта. Или же программа сразу откроет домашнюю страницу. Вот теперь поподробнее.

“Открыть страницу” - за этими словами скрывается множество действий, невидимых глазу человека. Компьютер, получив команду “открыть” посылает запрос к другому компьютеру (серверу), на котором находится эта страница. В ответ он получает какие-то данные (будем называть их файлами, хотя это не обязательно так). Вы видите не только текст, но ещё и картинки. Значит при открытии страницы компьютер получил не один файл, а несколько. Многие файлы не видны пользователю, но без них страница работала бы не так, как нужно - в файлах прописаны служебные инструкции для программы-браузера. В следующих статьях мы обязательно рассмотрим служебные файлы . А пока разберем, откуда берутся эти файлы.

Вариант первый - они хранятся на сервере в таком же виде, как и передаются браузеру. Так называемые “статические” странички - изменить данные на страничке мы можем только отредактировав сам файл с этой страничкой. Такие странички можно только просматривать.

Вариант второй - промежуточный. Странички собираются из кусочков, которые все так же хранятся на сервере. Ведь у большинства страниц одного сайта встречаются одинаковые “участки” страницы - “шапка” - верхняя часть страницы, боковое меню, “подвал” - нижняя часть страницы. В случае если требуется изменить текст, например, в подвале, достаточно отредактировать один файл (в предыдущем случае пришлось бы изменять все страницы).

Вариант третий, наиболее распространенный. При запросе странички на сервере выполняется некая программа, которая “печатает” ответ. Браузер, получив ответ, отображает его на экране. А как составляется ответ? Как захочет программист :) Нужно вывести каталог интернет-магазина? пожалуйста. А если статью из последнего номера журнала? - пожалуйста. В общем, фантазия безгранична…

Так вот. В качестве “серверной программы” в третьем варианте вполне успешно выступает интерпретатор PHP - программа, которая выполняет “скрипты”, написанные на одноименном языке программирования. И если Вы хотите научиться программировать на PHP, создавать динамические страницы, научиться думать как машина (если уже умеете - отлично)…

В общем, решайте, надо ли.. или не надо.

Опубликовано Январь 31, 2008 | автор: levik  |  Комментарии (4) »

Настройки компилятора Borland Builder

Если приходилось сталкиваться с тем, что программа, созданная в Borland Builder запускается на своем компьютере, но при переносе на другой - ругается на отсутствие файлов ( vcl60.bpl).

Все дело в том, что при настройках по умолчанию (на этапе разработки программы так гораздо удобнее - экономия времени и ресурсов компьютера) скомпилированная программа Borland C++ Builder использует библиотеки Borland (Run Time Packages), в которых содержатся многие используемые функции. Естественно, если на компьютере не установлен Builder или другой продукт, содержащий эти библиотеки, программа не сможет корректно выполниться.

Для компиляции окончательного варианта программы (который будет использоваться на любых компьютерах) следует:

  • Перейти в управление свойствами проекта: Project - Options (Shift+Ctrl+F11);
  • на вкладке Packages снимаем галочку Build with runtime packages;
  • на вкладке Compiler нажимаем кнопочку Release (с зеленым человечком);

На всякий случай можно побродить по вкладкам (Linker и Compiler) и посмотреть, чем отличается режим Release и Full debug (кнопочка рядом с Release) .

После таких манипуляций программа, скомпилированная в Borland Builder будет выполняться на любом компьютере (естественно, с операционной системой Windows, которая поддерживает использованные в программе возможности)

Опубликовано Январь 22, 2008 | автор: levik  |  Без комментариев »

Оптимизация web-сервера Apache (черновик)

Скорее шпаргалка, чтоб не забыть… Постепенно дополняется… Причесать будем позже.

Настраиваем Apache - редактируем файл httpd.conf:
# TimeOut: The number of seconds before receives and sends time out.
TimeOut 60

# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to “Off” to deactivate.
KeepAlive On

# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
MaxKeepAliveRequests 100

# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
KeepAliveTimeout 10

## Server-Pool Size Regulation (MPM specific)

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves

StartServers 3
MinSpareServers 3
MaxSpareServers 10
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000

KeepAlive On имеет смысл ставить на сайтах с относительно большим количеством изображений. Оптимальное время “таймаута” и количество MaxKeepAliveRequests , скорее всего, имеет смысл подбирать “опытным” путем. Обычно не больше 10-15 секунд. Для файл-хостингов лучше будет выставить KeepAlive Off

MinSpareServers и MaxSpareServers - Spare - “запасной” - неиспользуемые процессы (баланс ресурсов процессора и памяти - на запуск процесса требуется некоторое время, которое можно “сэкономить”, если свободный процесс уже висит в памяти.. Однако, если процессов слишком много, то они занимают лишнюю память)

ServerLimit - максимальное значение MaxClients на “время жизни” процесса;
MaxClients - максимальное количество одновременно запущенных процессов (по сути - клиентов) - чем больше, тем больше одновременных запросов можем обработать (соответственно, занимая больше памяти и используя больше процессорных ресурсов);
если сервер уже обслуживает MaxClients запросов, новые запросы попадут в очередь, размер которой устанавливается с помощью директивы ListenBacklog;
MaxRequestsPerChild - максимально возможное количество “дочерних” процессов - при переполнении дочерний процесс автоматически завершается

Для изображений (более-менее постоянных) имеет смысл выставить значение Expires, например на месяц
ExpiresActive On
ExpiresByType image/gif "access plus 30 days"
#ExpiresByType image/jpeg "access plus 20 days"
ExpiresByType image/jpeg A2592000

материалы по оптимизации Apache (пополняется)

http://www.greenmice.info/node/98
http://www.salex.ru/book/book.php?httpd_prefork
http://www.xela.ru/2009/03/nastrojka-httpdconf-na-vps-pod-unix-apache/
http://linux.yaroslavl.ru/docs/serv/

memory - информация о CPU и загрузке процессора в реальном времени

netstat -atun | grep -i ‘wait’ | wc -l - количество открытых соединений в режиме ожидания
netstat -atun | grep 'WAIT' | wc -l

Узнать версию ядра и самого линукса и дополнительную информацию:

cat /etc/issue
uname -a
cat /proc/version

Опубликовано Январь 17, 2008 | автор: levik  |  Комментарий (1) »

Хранимые процедуры в MySQL 5.0

Столкнулся с тем, что иногда гораздно удобнее и правильнее спрятать логику работы базы в хранимые процедуры.

1. Вызов процедуры, которая возвращает результат:
CREATE PROCEDURE returnresult(IN userid INT)
BEGIN
SELECT * from ... ;
END;

Тогда
<?php mysql_query('call returnresult(2)');'?>
выдаст ошибку “PROCEDURE base.returnresult can’t return a result set in the given context “.
Проблема в том, что библиотека mysql не поддерживает мульти-запросы. Для возврата результата из хранимой процедуры следует использовать улучшенную версию - библиотеку mysqli (improved).
Заменим в коде функции mysql на mysqli, (на локальном сервере для windows - добавим в файл php.ini строку: extension=php_mysqli.dll; аналогичной команды для *nix не знаю.). После этого все заработало.

2. Рекурсивные процедуры в mysql

При попытке использовать рекурсию mysql выдал:

Recursive limit 0 (as set by the max_sp_recursion_depth variable) was exceeded for routineset …

Лечится запросом “SET max_sp_recursion_depth= 4″ // глубину рекурсии - в зависимости от задачи. Мне много не надо было. :)

Опубликовано Январь 12, 2008 | автор: levik  |  Без комментариев »

На жестком диске видно только 137 Гигабайт даже в BIOS

Вы поставили новый (или не совсем новый) жесткий диск (в быту винчестер, хард, винт), а в биосе (BIOS) его объем определяется как 137 Gb(Гигабайт) (или 136). Хотя на этикетке, на корпусе диска, на коробочке и инструкции, и даже на сайте производителя написано, что объем диска больше ( 160, 200, 500 и т.д.).

Не стоит сразу хвататься за сердце.. Конечно, производители жестких дисков нас обманывают, но не на столько. Как минимум, можно проверить диск на другом компьютере (естественно, имеется ввиду другая конфигурация, желательно более “современная”)

Причем, использование программного обеспечения в Windows (тестировалось на XP Professional) увеличить объем не позволяет - диспетчер дисков, Partition magic и ещё несколько утилит полный размер диска не определяют.

Вообще, похожая ситуация с уменьшением объема жесткого диска возникает при попытке подключить жесткий диск большого объема к материнской плате “в возрасте” - просто на момент выхода материнской платы жестких дисков такого объема не было даже в планах. Но объем в 137 гигабайт особенно характерен для материнских плат gigabyte.

Скорее всего решить “проблему 137 гигов” сможет обновление BIOS до последней версии - качать с сайта производителя.

Перед попыткой найти пропавшие гигабайты убираем с диска всю нужную информацию (после проделанных операций диск будет девственно чист)

  • обновляем BIOS - инструкции и прошивку искать на сайте производителя материнской платы
  • для переразметки можно воспользоваться утилитой mhdd (операции nhpa, config), либо поискать утилиты на сайте производителя жесткого диска (лучше запускать на компьютере с другой материнкой)

После установки винчестера на “обновленную материнку” смотрим и радуемся “полному объему”. Если не получилось… Не знаю…

http://www.ihdd.ru/forum/polnyi-obem-diska-v-xp-ne-opredelyaetsya-vt8066.html - еще интересная утилита
http://www.ihdd.ru/hdd-capacity-restore

Опубликовано Декабрь 27, 2007 | автор: levik  |  Без комментариев »

Lsass.exe - Неправильный формат конечной точки

lsass.exe: Неправильный формат конечной точки. (lsass.exe: The endpoint format is invalid) - такое сообщение появляется при загрузке, после попытки восстановления системы. “Симптомы” до восстановления бывали разные - компьютер начинал загружаться, но на определенном моменте “останавливался”, причем загрузка в безопасном режиме происходила нормально.

Однако, после попытки восстановления, “нормальная” загрузка прекращалась с ошибкой “неправильный формат конечной точки”, после чего компьютер снова перезагружался. Попытки выбрать другую точку восстановления приводили к такому же результату - были проверены несколько точек до “месяца назад”. Компьютер возможно загрузить только в безопасном режиме.

Найденные возможные причины ошибки “неправильный формат конечной точки“:
-    наиболее вероятно поражение вирусом;
-    повреждение реестра;
-    повреждение системных файлов (помогут переустановка SP2 или проверка системных файлов с помощью команды sfc /scannow);
-    повреждение диска (chkdsk);
-    эксперименты с файлом подкачки или системными службами (верните установки по умолчанию);
-    драйверы видеокарты (установите свежие).

Как ни странно, мне ничего из вышеперечисленного не помогло:
- LiveCD антивирус ничего не нашел;
- реестр не проверял - утилиты под рукой не оказалось;
- sfc в безопасном режиме ругнулась на “Сервер RPC”, попытка переустановить SP2 в безопасном режиме тоже не увенчалась успехом;
- chkdsk прошел, однако формату конечной точки особо не помог :) ;
- все значения для файлов подкачки поставил “авто”.. службы - по умолчанию;
- драйвера видеокарты удалил вообще. :) В безопасном же режиме без драйверов работает…

Воспользовался установочным диском WinXP SP2 (с которого была установлена система) - после восстановления (не через консоль) файлов XP сообщение о неправильном формате конечной точки пропало.

Система, похоже, не пострадала - 20 минут, “полет нормальный”.

зы. Видимо, решение слишком очевидно, потому как такого я не нашел.. :) все найденные мной варианты решения проблемы Lsass.exe перечислены выше. Ну, или плохо искал…

Опубликовано Декабрь 17, 2007 | автор: levik  |  Комментарии (2) »

FreeBSD и Sony Vaio pcg-z600lek uhub1: port 2 reset failed

После установки FreeBSD на ноутбук Sony Vaio pcg-z600lek при загрузке выдает ошибкуuhub1: port 2 reset failedНа форумах говорят, что это характерно для случаев, когда usb-панель плохо закреплена. Ничего болтающегося в корпусе найдено не было. Вообще все попытки найти этот UHUB1 завершились неудачей. Логичным продолжением было бы отключение порта (как сказать системе, чтоб забила?)usb - выход выдаёт как uhub0usb на репликаторе - как uhub1 port 3Из советов на форуме:

1. расширитель usb есть в порт pcmcia, и ещё вроде там есть порт мини-юсб, с которого есть переходник на стандартный юсб.2. с модема, если поставить нормальный драйвер, и поиграться с его региональными настройками можно выходить в интернет.3. оперативка там вроде нестандартная(квадратная с двумя разьёмами внизу), наверно не найти (бывала такая на суперслимах sharp и больше нигде не видел).5. это порт “репликатор” к которому подключалась панель со стандартными lpt, com, вторым usb и т.п.(шёл в комплекте). На эти порты существуют usb-преобразователи.

С другого форума:

На мой взгляд, есть несколько вариантов:1) плохой вариант: убрать из ядра поддержку USB девайсов, т.е. просто пересобрать ядро. Но может у вас есть и другие USB-девайсы, работающие?…2) ещё хуже: убрать из /etc/syslog.conf ругаклю на консоль. Не делайте так, козлёночком станете, рано или поздно.3) лучше: лучше напишите в англоязычный список рассылки.4) тоже вариант: расслабьтесь, чтоб это была ваша главная проблема!

Забугорный форум наводит на мысль, что, возможно USB действительно сломан? :)

> uhub7: port 3 reset failed> uhub7: port 4 reset failedI wonder if my laptop’s USB is physically broken.I think it has always had this problem but infrequent, but now theproblem is near continuous and often anything using USB is unusable.

http://www.nout.ru/viewtopic.php?p=22549#22549http://forum.nbprice.ru/1/topic1826-1.htmhttp://www.freebsddiary.org/ibm-thinkpad-t41.phpСо временем проблема стала неактуальна, однако, если кто подскажет решение - буду благодарен.

Опубликовано Декабрь 12, 2007 | автор: levik  |  Без комментариев »

Office Outlook - Ошибка Symantec Antivirus

При запуске MicroSoft Outlook 2000 Появляется сообщение об ошибке:

Надстройку “C:\Program Files\Symantec_Client_Security\Symantec Antivirus…” не удается установить и загрузить. Устраните неполадку с помощь команды “найти и восстановить” из меню “справка”. Не удается загрузить “C:\Program Files\Symantec_Client_Security…”.  возможно, не хватает памяти, системных ресурсов или файла dll.

Судя по всему, ранее на машине стоял Symantec Antivirus, библиотеки которого подгружаются в MS Outlook при запуске.

Пробуем найти библиотеки в “Настройки - дополнительно - Дополнительно - Приложения (или COM ) (В моем случае название было не совсем похожим на Symantec - что-то вроде LDVP) и снимаем галочку

Если не помогает - открываем реестр и пытаемся найти все, что связано со словом Symantec (обнаружил это дополнение в ветке HKLM/Software/Microsoft/Office/Outlook/Addins/ - где и был прописан путь к библиотеке DLL “C:\Program Files\Symantec_Client_Security\Symantec Antivirus…”

Да и вообще, периодически, стоит подчищать реестр компьютеров.
Кто чем пользуется?

upd. можно воспользоваться одной из утилит для удаления антивирусов - в конкретном случае см. пункт Norton Antivirus

Опубликовано Декабрь 7, 2007 | автор: levik  |  Комментарий (1) »