пятница, 22 февраля 2008 г.
Logitech QuickCam Communicate STX
Реальное (матрица) разрешение 640х480, видео до 30 к/с.
Kubuntu 7.10 распознал камеру сразу и подгрузил модуль gspca.
Камера замечательно работает в Skype и kopete.
Запись в avi через mencoder - отлично.
Вобщем доволен :)
четверг, 21 февраля 2008 г.
Маршруты Москвы
Позволяет выбрать оптимальный маршрут.
Вводим адреса начального и конечного пункта и получаем несколько вариантов маршрута, которые можно посмотреть на карте Москвы. Варианты так же содержат информацию об общем времени в пути, колличество остановок/пересадок и общей стоимости поездки на общественном транспорте, включая маршрутки.
Вышла новая версия VirtualBox
VirtualBox 1.5.6 (released 2008-02-19)
- GUI: fixed several error messages
- GUI: fixed registration dialog crashes once and for all
- GUI: really ask before resetting the VM
- GUI: release mouse and keyboard before the host activates the screensaver
- GUI: fixed issue with license display on big screens
- GUI: added setting for network name for internal networks
- GUI: added setting for network device type
- GUI: keyboard fixes
- GUI: seamless mode and fullscreen mode fixes
- GUI: fixed soaked hostkey keyup event under certain conditions
- GUI: more informative message dialog buttons
- GUI: VM selector context menu
- VBoxSDL: added -termacpi switch
- VBoxSDL: fixed automatic adaption of the guest screen resolution to the size of the VM window
- VMM: under heavy guest activity, for example when copying files to/from a shared folder, the VM could crash with an assertion
- VMM: added an option to select PIIX4 (improves compatibility with Windows guests created by VMware)
- VMM: fixed a bug which could lead to memory corruption under rare circumstances
- VMM: improved performance of Solaris guests
- VRDP: fixed a 1.5.4 regression: VRDP client and server were out-of-sync if the VM was started using the GUI
- VRDP: proper error handling if the VRDP library could not be loaded
- VBoxManage: fixed crash during clonevdi
- VBoxManage: added ’list runningvms’ command
- VBoxManage: improved the compatibility when reading the partition table of a raw disk
- Shared Folders: added support for read-only shared folders
- Shared Clipboard: several fixes
- Network: experimental support for E1000 device emulation
- iSCSI: better check for misconfigured targets
- iSCSI: allow to directly attach to internal networks with integrated mini IP stack
- PulseAudio: don’t hang during VM initialization if no sound server is available
- VDI: fixed sized virtual disk images are now completely written during creation to workaround buggy sparse file handling on some OS (e.g. Vista)
- VDI/VMDK: prevent indexing of .vdi and .vmdk files on Windows hosts
- RDP: fixed compilation of the Linux rdesktop client on newer Linux kernels
- RDP: install rdesktop-vrdp on Linux hosts
- ACPI: added sleep button event
- Serial: proper handling of inaccessible host devices
- Windows installer: allow smooth upgrade without deinstallation
- Linux installer: fixed Slackware detection regression
- Linux installer: updated VBoxTunctl allowing to assign a tap device to a group on Linux kernels > 2.6.23
- Windows additions: several fixes, in particular for Windows NT4
- Linux additions: fixed installer for Kubuntu 8.04
- Linux additions: add default video mode for handling video mode hints from the host
- Linux host: compatibility fixes with Linux > 2.6.24
среда, 20 февраля 2008 г.
Контрасты в веб-типографике
Итак, как вы наверное знаете, большинство пользователей интернета не читают строчку за строчкой, а «сканируют» текст, перемещаясь от одной точки к другой. По этой причине, дизайнеры создают типографические контрасты, чтобы подчеркнуть определенный текст. Контраст важен по тому, что не всё содержание страницы имеет одинаковое значение, одно более важно, чем другое. Создавая контрасты, вы можете направить внимание читателя на важные сообщения и в тоже время повысить привлекательность внешнего вида страницы. Вот семь основных методов как добиться типографического контраста.Читать дальше...
пятница, 15 февраля 2008 г.
Оптимизация работы с MySQL
Ни для кого не секрет, что работа с базой данных занимает большую часть работы практически любого сайта. И именно работа с БД чаще всего является узким местом веб-приложений.Читать дальше...
В этой статье хотелось бы дать практические советы использования MySQL.
Сразу оговорюсь:
- данная статья написана про MySQL, хотя общие вещи скорее всего справедливы для любой СУБД.
- все написанное в статье является моей личной точкой зрения, и не является истиной в последней инстанции.
- советы не претендуют на новизну и являются результатом обобщения прочтенной литературы и личного опыта.
- в рамках данной статьи я не буду касаться вопросов конфигурирования MySQL.
четверг, 14 февраля 2008 г.
Программирование на Python+Qt для начинающих
Это руководство нацелено на получение представления о том как писать маленькие приложения на python, использующие библотеку Qt.Читать дальше...
Для успешного выполнения всех заданий необходимо иметь базовые знания python, однако, Qt знать не обязательно. Я использую linux в этих примерах и я предполагаю, что вы уже имеете работающий Python и PyQt.
суббота, 9 февраля 2008 г.
PHP XML-RPC server, Python XML-RPC client
Технологий web-сервисов в принципе две: SOAP и XML-RPC. SOAP - тяжелая и замороченная, предназначена для крупных проектов, пока еще не окончательно стандартизована. XML-RPC легкая и полностью стандартизована, построена на использовании XML формата передачи данных между клиентом и сервером по HTTP протоколу. PHP5 поддерживает обе технологии. В дерево исходников PHP5 входит одна из реализаций библиотеки XML-RPC, написанной на С. Правда документация крайне скудная, но разобраться можно.
XML-RPC server:
1. Определяем функции, которые будут доступны клиенту. Для примера напишем функцию сложения двух чисел:
function srvAdd($MethodName, $Params, $AppData)Любая функция, регистрируемая на xml-rpc сервере, должна принимать 3 параметра:
{
return $Params[0]+$Params[1];
}
$MethodName - внешнее имя функции;
$Params - массив параметров, передаваемых клиентом;
$AppData - дополнительные параметры, передаваемые при вызове функции xmlrpc_server_call_method().
2. Создаем XML-RPC сервер вызовом функцииsrv=xmlrpc_server_create();
3. Регистрируем на сервере, определенные ранее функции
xmlrpc_server_register_method($srv, "Add", "srvAdd");
Здесь:
Add - внешнее имя функции srvAdd,
srv - handler сервера.
4. Получаем "сырой" запрос от клиента
$xmlRequest = $HTTP_RAW_POST_DATA;
5. Передаем запрос в диспетчер функций, который автоматически определит какую функцию вызвать.
$response = xmlrpc_server_call_method($srv, $xmlRequest, Null);
Здесь:
$srv - handler xml-rpc сервера;
$xmlRequest - данные от клиента в xml-формате;
Третий параметр, в данном случае пустой, передает дополнительные данные для определенных ранее функций (параметр $AppData).
6. Отдаем клиенту результаты работы функции
print $response;
7. Закрываем сервер.
xmlrpc_server_destroy($srv);
Приведу весь код xml-rpc сервера в котором клиенту доступны несколько функций:
function About($MethodName, $Params, $AppData)
{
$sAbout="ekXMLRPCServer Class v0.9.5\n (c) 2008 Klek\n Author: Eugene Klepikov\n Email: ";
return $sAbout;;
}
//-----------------------------------------------------------------------------
class ekXMLRPCServer
{
private $srvh=null;
private $xmlRequest="";
private $response="";
private $about="";
private $help="";
private $userData=null;
private $arOutOptions=array(
"output_type" => "xml",
"verbosity" => "pretty",
"escaping" => array("markup", "non-ascii", "non-print"),
"version" => "xmlrpc",
"encoding" => "iso-8859-1"
//"encoding" => "utf-8"
);
//-----------------------------------------------------------------------------
function __construct()
{
$this->srvh=xmlrpc_server_create();
$this->registerMethod("system.about", "About");
$this->registerMethod("help", "help");
}
//-----------------------------------------------------------------------------
function __destruct()
{
xmlrpc_server_destroy($this->srvh);
}
//-----------------------------------------------------------------------------
function registerMethod($methodName, $functionName)
{
xmlrpc_server_register_method($this->srvh, $methodName, $functionName);
}
//-----------------------------------------------------------------------------
function request($Request)
{
$this->xmlRequest=$Request;
}
//-----------------------------------------------------------------------------
function run()
{
$this->response=xmlrpc_server_call_method($this->srvh, $this->xmlRequest, $this->userData, $this->arOutOptions);
print $this->response;
}
//-----------------------------------------------------------------------------
}
Поместим файл с кодом xml-rpc сервера в защищенный каталог apache, чтобы к нему можно было коннесктится через SSL https://www.mydomain.ru/xmlrpcserver.php
XML-RPC Client
Клиента проще всего написать на Python, т.к. все нужные библиотеки уже есть в стандартной поставке.
>>> import xmlrpclib
>>> server = xmlrpclib.Server("https://www.mydomain.ru/xmlrpcserver.php")
Теперь можно вызывать функции сервера.
>>> server.Add('10', '15')
>>> 25
>>>
Функции Array() и Dict() различаются типом возвращаемого массива.
>>> server.Array("Peter")
>>>['Peter', 'Hello, Peter. How are you today?']
Array() возвращает список.
>>> server.Dict("Peter")
>>>{'name': 'Peter', 'greeting': 'Hello, Peter. How are you today?'}
Dict() возвращает словарь, т.к. в реализации функции мы использовали именованный массив.
XML-RPC сервер имеет и несколько встроенных функций, одна из которых
>>>server.system.listMethods()
>>>['system.listMethods', 'system.methodHelp', 'system.methodSignature', 'system.describeMethods', 'system.multiCall', 'system.getCapabilities', 'Uptime', 'Array', 'Dict', 'Add']
возвращает список всех доступных на сервере функций.
Замечания:
1. В питоновских библиотеках xmlrpclib, urllib, httplib не предусмотрена проверка сертификата сервера.
2. Для работы с библиотекой XML-RPC в PHP5 нужно поставить модуль php5-xmlrpc из репозитария дистрибутива или, при самостоятельной сборке, добавить к команде configure параметр --with-xmlrpc[=DIR].
пятница, 8 февраля 2008 г.
3D игры в (K)ubuntu. Wine + DirectX 9
Под Linux существует множество довольно интересных игр, но что делать, если хочется поиграть во что-нить новенькое, 3D-ое, которое обычно выпускается только под ЗлоОС :(
Есть несколько вариантов выйти из положения:
1) Использовать нативные версии игр, выпущенные специально под Linux. К таким играм относятся, например, игры компании idSoftware (все помнят Quake4, Doom3, Enemy Territory: Quake Wars), за что им отдельное спасибо.
2) Использовать эмуляторы Wine или Cedega. Wine поддерживает множество виндовых программ и игр, но к сожалению не поддерживает DirectX 9, а ведь именно эту библиотеку используют многие современные игры. Cedega в этом плане немного опередила Wine - добавив у себя поддержку DirectX 9, но в плане юзабилити Cedega очень и очень придирчива к тому, что она запускает (реально запустить под Cedega у вас получится всего пару игр).
Ну что же, будем исправлять положение, установим поддержку DirectX 9 для Wine.
Устанавливаем последнюю версию wine. Для этого добавим себе официальный репозиторий Wine HQ для Ubuntu 7.10wget -q http://wine.budgetdedicated.com/apt/387EE263.gpg-O- | sudo apt-key add -
sudo wget http://wine.budgetdedicated.com/apt/sources.list.d/gutsy.list -O /etc/apt/sources.list.d/winehq.list
и устанавливаем wine
sudo apt-get update
sudo apt-get install wine
Если у вас уже установлен wine, то для чистоты эксперимента, удалите папку с настройками wine (или перенесите ее в другое место):rm -dr ~/.wine
1. Для создания папки с настройками, в первый раз, запускаем конфигуратор wine:
winecfg
2. Теперь ищем в интернете или, если у вас установлен на компе ЗлоХП, копируем из папки windows\system32\ файлы mscoree.dll и streamci.dll в папку ~/.wine/drive_c/windows/system32/
3. Удаляем wine'ские файлы d3d:
cd ~/.wine/driver_c/windows/system32/
rm d3d8.dll d3d9.dll ddraw.dll dsound.dll dsound.vxd quartz.dll dxdiagn.dll
4. Редактируем файл user.reg:
gedit ~/.wine/user.reg
в конец файла вставляем:
[Software\\Wine\\DllOverrides] 1196330736
"d3d8"="native"
"d3d9"="native"
"d3dim"="native"
"d3dx8"="native"
"d3dxof"="native"
"dciman32"="native"
"ddrawex"="native"
"devenum"="native"
"dinput"="native"
"dinput8"="native"
"dmband"="native"
"dmcompos"="native"
"dmime"="native"
"dmloader"="native"
"dmscript"="native"
"dmstyle"="native"
"dmsynth"="native"
"dmusic"="native"
"dplay"="native"
"dplayx"="native"
"dpnaddr"="native"
"dpnet"="native"
"dpnhpast"="native"
"dswave"="native"
"dxdiagn"="native"
"mscoree"="native"
"quartz"="native"
"streamci"="native"
5. Распаковываем последнюю версию DirectX (скачать последнюю версию можно отсюда):
wine directx_nov2007_redist.exe
6. Выбираем папку куда распакуются файлы, после распаковки переходим в эту папку и запускаем установку:
wine DXSETUP.EXE
7. Снова запускаем конфигуратор wine:
winecfg
7.1. Переходим на вкладку 'Библиотеки', выбираем из ниже приведенного списка названия библиотек, нажимаем редактировать и выбираем пункт 'Встроенная (Wine)'d3d8, d3d9, ddrawex, dinput, dinput8
8. Запускаем диагностику DirectX:
wine dxdiag.exe
8.1. В окне диагностики переходим на вкладку 'Дисплей' и выполняем тест 'Проверка Direct3D'.
Если все тесты прошли успешно, то все отлично, теперь у вас в wine есть поддержка DirectX 9, с чем я вас и поздравляю!!! Теперь запускайте ваши любимые игры и наслаждайтесь, но учтите, даже с поддержкой dx9, многие игры до сих пор еще не работают в wine.
P.S. Различные нюансы по запуску нужной вам игры вы можете посмотреть в базе приложений Wine HQ.
Взял отсюда...
вторник, 5 февраля 2008 г.
Дюжина самых необыкновенных револьверов
Дюжина самых необыкновенных револьверов
понедельник, 4 февраля 2008 г.
"Выходят на арену силачи..." (с) А.Б. Пугачева
Отсюда...Основной темой IT-изданий по-прежнему остается судьба интернет-гиганта Yahoo!. Microsoft объявила о намерении приобрести компанию за 44,6 миллиарда долларов, что на 62 процента выше рыночной стоимости портала. Казалось, что MS сделала предложение, от которого нельзя отказаться (сделка сулит выгоды обеим сторонам: объединенная компания будет контролировать почти треть американского поискового рынка, общая прибыль составит более 17 миллиардов долларов, а экономия от такого слияния оценивается в $1 млрд. ежегодно), однако в Yahoo взяли паузу.
Возможная покупка Yahoo! корпорацией Microsoft больше всего не по душе Google, который считает, что такая сделка поднимает «тревожные вопросы», связанные с «фундаментальными принципами Интернета — открытостью и новаторством». Защищать эти принципы Google намерен различными способами, в том числе и с помощью лоббистов в Вашингтоне.
В Yahoo! считают, что Microsoft недооценила компанию, сообщили два неназванных источника Reuters. Google в свою очередь пообещал Yahoo! любую помощь в попытках «отбиться» от Microsoft.