Вы читаете журнал [info]kosenka

kosenka
Свежие записи 
26-Мар-2010 10:42 am - Настройка nokia 6233 GPRS
Настройки интернета для 40-й серии 3-го издания. В частности для моделей Nokia 6125, 6131, 6270, 6280, 6288, 6233, также они должны подходить для 6230i, 6101, 6103, 6111, 7370.
Для начало нужно убедиться, подключена ли эта услуга у оператора. ОпСоСы предоставляют два способа доступа к интернет ресурсам – GPRS-WAP и GPRS-INTERNET, интернет дешевле вапа, поэтому будем настраивать его. Если настраиваете впервые то после настройки нужно произвести перерегистрацию симкарты в сети, то есть нужно выключить, а затем включить телефон.

Настройка телефона: Меню – Настройки – Конфигурация - Настройки персональной конфигурации

1. Левая софт клавиша “Функции” – добавить новые – Точка доступа . Появляется меню настройки точки доступа, пишите что угодно, как правило – название того оператора, чья эта точка доступа, так удобней. Следующий пункт – Параметры точки доступа, в пункте канал данных выбираем – Пакетные данные ( это и есть пресловутый GPRS). Переходим в раздел – Настройка канала – Т/д пакетных данных (это и есть сама точка доступа), тут пишем следующее – internet.mts.ru (для абонентов МТС), internet.beeline.ru (Билайнеры), internet.mc (Мегафон центр), internet.nw (Мегафон северо-запад), и так далее в зависимости от своего региона. Те, кто пользуется несколькими операторами могут сразу настроить несколько точек доступа, чтобы при смене симкарт не менять настройки, а просто переключать точки доступа.
Меню – Настройки – Конфигурация - Настройки персональной конфигурации

2. Левая софт клавиша “Функции” – добавить новые – Интернет. Имя учетной записи – пишем произвольно, Домашняя страница – тоже произвольно, можно вообще не указывать, Имя пользователя и Пароль оставляем пустыми, Использовать предпочтительную точку доступа – ставим ДА.
Для тех, кто хочет настроить стандартный почтовый клиент телефона - Настройка телефона: Меню – Настройки – Конфигурация - Настройки персональной конфигурации Левая софт клавиша “Функции” – добавить новые – Электронная почта. Имя учетной записи – Произвольно, Свое имя , Адрес электронной почты – тут все понятно, Защищен. Регистр SMTP – Выключить, Имя пользователя SMTP – пишем свой login, Пароль SMTP – свой пароль, производим настройки также как и на компьютере. POP3 (в настройках входящей почты) также как и SMTP. Для тех у кого почта на мейле – сервер вх. почты (POP3) pop3.mail.ru, сервер исходящей (SMTP) smtp.mail.ru. Использовать предпочтительную точку доступа – ДА. Теперь снова, тоже самое делаем для почты и точки доступа- если настраивали несколько то все. Те кто настроил несколько точек доступа будут просто Выбирать (Меню – Настройки – Конфигурация – Предпочтительная точка доступа – необходимая точка доступа, - Выбрать).
Теперь Меню – Настройки – Конфигурация – Стандарт. Конфигурации – Персональные конфигурации – “Функции”- Как стандартный. Стандартный набор (все прилож) – “Выбрать”, “Да”

3. Меню – Интернет – Настройки – Параметры конфигурации – Конфигурация – Персональн . конфигурации. Учетная запись – выбираем, ту, которую создали. Тоже самое делаем в настройках сообщений электронной почты.
http://p2k.ru/archives/52

<?php
####################################################
# class for generation YML (yandex market language)
####################################################

class yml
{
    var $from_charset = 'windows-1251';
    var $shop = array('name'=>'', 'company'=>'', 'url'=>'');
    var $currencies = array();
    var $categories = array();
    var $offers = array();

    # конструктор
    function yml($from_charset = 'windows-1251')
    {
        $this->from_charset = trim(strtolower($from_charset));
    }

    # преобразование массива в тег
    function convert_array_to_tag($arr)
    {
        $s = '';
        foreach($arr as $tag=>$val)
        {
            $s .= '<'.$tag.'>'.$val.'</'.$tag.'>';
        }
        $s .= "\r\n";
        return $s;
    }

    # преобразование массива в атрибуты
    function convert_array_to_attr($arr, $tagname, $tagvalue = '')
    {
        $s = '<'.$tagname.' ';
        foreach($arr as $attrname=>$attrval)
        {
            $s .= $attrname . '="'.$attrval.'" ';
        }
        $s .= ($tagvalue!='') ? '>'.$tagvalue.'</'.$tagname.'>' : '/>';
        $s .= "\r\n";
        return $s;
    }

    # подготовка текстового поля в соответствии с требованиями Яндекса
    function prepare_field($s)
    {
        $from = array('"', '&', '>', '<', '\'');
        $to = array('&quot;', '&amp;', '&gt;', '&lt;', '&apos;');
        $s = str_replace($from, $to, $s);
        if ($this->from_charset!='windows-1251') $s = iconv($this->from_charset, 'windows-1251//IGNORE//TRANSLIT', $s);
        $s = preg_replace('#[\x00-\x08\x0B-\x0C\x0E-\x1F]+#is', ' ', $s);
        return trim($s);
    }

    # указать данные магазина
    # @name - название интернет-магазина
    # @company - официальное название компании
    # @url - адрес сайта
    function set_shop($name, $company, $url)
    {
        $this->shop['name'] = $this->prepare_field($name);
        $this->shop['name'] = substr($this->shop['name'], 0, 20);
        $this->shop['company'] = $this->prepare_field($company);
        $this->shop['url'] = $this->prepare_field($url);
    }

    # добавить валюту магазина
    # @id - код валюты (RUR, USD, EUR...)
    # @rate - CBRF или свой курс
    # @plus учитывается только в случае rate = CBRF и означает насколько увеличить курс в процентах от ЦБ РФ
    function add_currency($id, $rate = 'CBRF', $plus = 0)
    {
        $rate = strtoupper($rate);
        $plus = str_replace(',', '.', $plus);
        if ($rate=='CBRF' && $plus>0)
            $this->currencies[] = array('id'=>$this->prepare_field(strtoupper($id)), 'rate'=>'CBRF', 'plus'=>(float)$plus);
        else
        {
            $rate = str_replace(',', '.', $rate);
            $this->currencies[] = array('id'=>$this->prepare_field(strtoupper($id)), 'rate'=>(float)$rate);
        }
        return true;
    }

    # добавление категории товаров
    # @id - id рубрики
    # @parent_id - id родительской рубрики, если нет, то -1
    # @name - название рубрики
    function add_category($name, $id, $parent_id = -1)
    {
        if ((int)$id<1||trim($name)=='') return false;
        if ((int)$parent_id>0)
            $this->categories[] = array('id'=>(int)$id, 'parentId'=>(int)$parent_id, 'name'=>$this->prepare_field($name));
        else
            $this->categories[] = array('id'=>(int)$id, 'name'=>$this->prepare_field($name));
        return true;
    }

    # добавление позиции
    # @id - id товара
    # @available - товар доступен сейчас (true) или на заказ (false)
    # @data - массив остальных параметров (звездочкой помечены обязательные)
    #    *url - URL-адрес страницы товара
    #    *price - цена товара
    #    *currencyId - идентификатор валюты товара (RUR, USD, UAH...)значением цены.
    #    *categoryId - идентификатор категории товара (целое число не более 18 знаков). Товарное предложение может принадлежать только одной категории
    #    picture - Ссылка на картинку соответствующего товарного предложения. Недопустимо давать ссылку на "заглушку", т.е. на картинку где написано "картинка отсутствует" или на логотип магазина
    #    *delivery - элемент, обозначающий возможность доставить соответствующий товар. "false" данный товар не может быть доставлен("самовывоз"). "true" товар доставляется на условиях, которые указываются в партнерском интерфейсе http://partner.market.yandex.ru на странице "редактирование".
    #    *name - наименование товарного предложения
    #    vendor - производитель
    #    vendorCode - Код товара (указывается код производителя)
    #    *description - Описание товарного предложения
    #    country_of_origin - Элемент предназначен для указания страны производства товара.
    #    downloadable - Элемент предназначен обозначения товара, который можно скачать.    
    function add_offer($id, $data, $available = true)
    {
        $allowed = array('url', 'price', 'currencyId', 'categoryId', 'picture', 'delivery', 'name', 'vendor', 'vendorCode', 'description', 'sales_notes', 'country_of_origin', 'downloadable');

        foreach($data as $k=>$v)
        {
            if (!in_array($k, $allowed)) unset($data[$k]);
            $data[$k] = strip_tags($this->prepare_field($v));
        }
        $tmp = $data;
        $data = array();
        foreach($allowed as $key)
        {
            if (isset($tmp[$key])) $data[$key] = $tmp[$key]; # Порядок важен для Я.Маркета!!!
        }
        $this->offers[] = array('id'=>(int)$id, 'data'=>$data, 'available'=>($available)?'true':'false');
    }

    # шапка документа
    function get_xml_header()
    {
        return '<?xml version="1.0" encoding="windows-1251"?><!DOCTYPE yml_catalog SYSTEM "shops.dtd"><yml_catalog date="'.date('Y-m-d H:i').'">';
    }

    # тело документа
    function get_xml_shop()
    {
        $s = '<shop>' . "\r\n";

            # shop info
            $s .= $this->convert_array_to_tag($this->shop);

            # currencies
            $s .= '<currencies>' . "\r\n";
            foreach($this->currencies as $currency)
            {
                $s .= $this->convert_array_to_attr($currency, 'currency');
            }
            $s .= '</currencies>' . "\r\n";

            # categories
            $s .= '<categories>' . "\r\n";
            foreach($this->categories as $category)
            {
                $category_name = $category['name'];
                unset($category['name']);
                $s .= $this->convert_array_to_attr($category, 'category', $category_name);
            }
            $s .= '</categories>' . "\r\n";

            # offers
            $s .= '<offers>' . "\r\n";
            foreach($this->offers as $offer)
            {
                $data = $offer['data'];
                unset($offer['data']);
                $s .= $this->convert_array_to_attr($offer, 'offer', $this->convert_array_to_tag($data));
            }
            $s .= '</offers>' . "\r\n";

        $s .= '</shop>';
        return $s;
    }

    # футер документа
    function get_xml_footer()
    {
        return '</yml_catalog>';
    }

    # получить весь XML код
    function get_xml()
    {
        $xml = $this->get_xml_header();    
        $xml .= $this->get_xml_shop();
        $xml .= $this->get_xml_footer();
        return $xml;
    }
}
?>


* This source code was highlighted with Source Code Highlighter.
11-Дек-2009 11:53 am(без темы)
31-Окт-2009 10:28 pm(без темы)
<?php
// Создание stored-RAR архивов
// Версия 0.3
// Автор: Алексей Рембиш a.k.a Ramon
// E-mail: alex@rembish.ru
// Copyright 2009

// Класс создания RAR-архивов со stored-сжатием
// Пример работы:
// $rar = new store_rar;
//  $rar->create("archive.rar"); # создаём архив
//  $rar->addFile("a.txt");      # пишем в него файл a.txt
//  $rar->addDirectory("b/c");   # создаём в архиве директорию "b" с поддиректорией "c"
//  $rar->addFile("d/e.txt");    # создаём директорию "d" и пишем в неё e.txt
// $rar->close();                # закрываем архив
class store_rar {
    
// Указатель на архив
    
private $id null;
    
// Внутренняя структура каталогов, чтобы не создавать лишние.
    
private $tree = array();

    
// Функция, создающая новый архив, после чего записывающая в него обязательные заголовки.
    
public function create($filename) {
        
$this->id fopen($filename"wb");
        if (!
$this->id)
            return 
false;

        
$this->tree = array();

        
$this->writeHeader(0x720x1a21);
        
$this->writeHeader(0x730x0000, array(array(02), array(04)));
        return 
true;
    }
    
// Функция, закрывающая записанный архив
    
public function close() {
        
fclose($this->id);
    }

    
// Функция, что добавляет в архив директорию. Нормально справляется с рекурсивными
    // директориями. Например, для $name = "a/b" создаст директорию "a", а в ней поддиректорию
    // "b". Не будет создавать дубликаты директорий.
    
public function addDirectory($name) {
        
$name str_replace("/""\\"$name);
        if (
$name[0] == "\\"$name substr($name1);
        if (
$name[strlen($name) - 1] == "\\"$name substr($name0, -1);

        
$parts explode("\\"$name);
        
$c = &$this->tree;
        
$cname ""$delim "";
        for (
$i 0$i count($parts); $i++) {
            
$cname .= $delim.$parts[$i];
            if (!isset(
$c[$parts[$i]])) {
                
$c[$parts[$i]] = array();
                
$this->writeHeader(0x74$this->setBits(array(56715)), array(
                    array(
04),                    // Packed size = 0 for directories
                    
array(04),                    // Unpacked size = 0 for directories
                    
array(01),                    // Host OS = "MS DOS"
                    
array(04),                    // File CRC = 0 for directories
                    
array($this->getDateTime(), 4),    // File time = Current date and time in MS DOS format
                    
array(201),                    // RAR version = 2.0
                    
array(0x301),                    // Method = Store
                    
array(strlen($cname), 2),        // Name size
                    
array(0x104),                    // File attributes = Directory
                    
$cname,                            // Filename = Directory name
                
));
            }
            
$c = &$c[$parts[$i]];
            
$delim "\\";
        }

        return 
$name;
    }

    
// Функция записывающая файл $name в архив. Если задан параметр $dir, то файл будет записан
    // в соответствующую директорию внутри архива (директория может не существовать до записи
    // файла). $name - путь к файлу на сервере. Файл будет записан с basename($name).
    
public function addFile($name$dir null) {
        if (!
file_exists($name))
            return 
false;

        
$c = &$this->tree;
        if (!
is_null($dir)) {
            
$dir $this->addDirectory($dir);

            
$parts explode("\\"$dir);
            for(
$i 0$i count($parts); $i++)
                
$c = &$c[$parts[$i]];
        }

        
$fname pathinfo($namePATHINFO_BASENAME);
        if (
in_array($fname$c))
            return 
true;

        
$data file_get_contents($name);
        
$size strlen($data);
        if (!
is_null($dir))
            
$fname $dir."\\".$name;

        
$this->writeHeader(0x74$this->setBits(array(15)), array(
            array(
$size4),                                // Packed size = File size
            
array($size4),                                // Unpacked size = File size
            
array(01),                                    // Host OS = "MS DOS"
            
array(crc32($data), 4),                            // File CRC
            
array($this->getDateTime(filemtime($name)), 4),    // File time
            
array(201),                                    // RAR version = 2.0
            
array(0x301),                                    // Method = store
            
array(strlen($fname), 2),                        // Name size
            
array(0x204),                                    // File attributes = Archived
            
$fname,                                            // Filename
        
));

        
fwrite($this->id$data);
        
$c[] = $fname;

        return 
true;
    }

    
// Внутренняя функция, пишущая заголовок блока в соответствии с форматом RAR.
    // Работает только с тремя типами заголовков: блок-маркер, заголовок архива и
    // заголовок файла - $headType. $headFlags - флаги заголовка, $data - возможно
    // пустой массив дополнительных параметров заголовка, что идут после первых
    // обязательных 7 байт.
    
private function writeHeader($headType$headFlags$data = array()) {
        if (!
in_array($headType, array(0x720x730x74)))
            return 
false;

        
$headSize 2;
        foreach (
$data as $key => $value)
            
$headSize += is_array($value) ? $value[1] : strlen($value);

        
$header $this->writeBytesToString(array_merge(array($headType, array($headFlags2), array($headSize2)), $data));
        
$header = ($headType == 0x72 "Ra" $this->getCRC($header)).$header;

        
fwrite($this->id$header);
    }

    
// Расчёт CRC для заголовка блока. CRC урезается до 2 байт из 4х.
    
private function getCRC($string) {
        
$crc crc32($string);
        return 
chr($crc 0xFF).chr(($crc >> 8) & 0xFF);
    }

    
// Внутренняя функция записи данных в обратном порядке байтов.
    
private function getBytes($data$bytes 0) {
        
$output "";
        if (!
$bytes)
            
$bytes strlen($bytes);

        if (
is_int($data) || is_float($data)) {
            
$data sprintf("%0".($bytes 2)."x"$data);

            for (
$i 0$i strlen($data); $i += 2)
                
$output chr(hexdec(substr($data$i2))).$output;
        } else
            
$output $data;

        return 
$output;
    }
    
// Запись массива данных в байт-строку с учётом размерности переданных данных.
    
private function writeBytesToString($data) {
        
$output "";
        for (
$i 0$i count($data); $i++) {
            if (
is_array($data[$i]))
                
$output .= $this->getBytes($data[$i][0], $data[$i][1]);
            else
                
$output .= $this->getBytes($data[$i]);
        }

        return 
$output;
    }

    
// Установка соответствующих битов в числе. $bits - массив номеров битов или отдельный номер бита.
    
private function setBits($bits) {
        
$out 0;
        if (
is_int($bits))
            
$bits[] = $bits;

        for (
$i 0$i count($bits); $i++)
            
$out |= << $bits[$i];

        return 
$out;
    }

    
// Получение даты в 4хбитном формате MSDOS. $time - timestamp, от которого получить дату.
    
private function getDateTime($time null) {
        if (!
is_null($time))
            
$time time();

        
$dt getdate();
        
$out $dt["seconds"] | ($dt["minutes"] << 5) | ($dt["hours"] << 11) | ($dt["mday"] << 16) | ($dt["mon"] << 21) | (($dt["year"] - 1980) << 25);
        return 
$out;
    }
};
?>


http://habrahabr.ru/blogs/php/73945/


30-Окт-2009 12:36 am(без темы)
Наша Таня громко плачет.
Уронила в речку мячик,
деньги, линзы, документы,
чемодан, рулон брезента,
кактус, веник, сигареты,
керогаз, белье, конфеты,
камень, ножницы, бумагу,
честь, разборчивость, отвагу,
совесть, справку о доходах,
самолеты, пароходы,
монитор, процессор, мышку,
табурет, вторую книжку,
пылесос, кровать, мобилу,
альпеншток, лопату, вилы,
зажигалку, дреды, кеды,
понедельник, вторник, среду,
канарейку, распашонку,
припасенную тушенку,
масло, мыло, спички, печку,
гастарбайтера, уздечку,
песни, пляски, разговоры,
солнце, звезды, лес и горы,
Кострому, Саратов, Вятку,
попрыгучую лошадку,
карбюратор, пенку, спальник,
бормашину, матюгальник,
руки, ноги, папу, маму,
патриарха, далай-ламу,
просветленье, счастье, горе.
Нахер все уплыло в море.
28-Окт-2009 09:59 pm(без темы)
27-Окт-2009 03:40 pm(без темы)
<?php

class Robokassa
{
//>Public Section
public $login;

function __construct
($login = null, $password1 = null, $password2 = null)
{
$this->init($login, $password1, $password2);
}

function init
($login, $password1, $password2)
{
$this->login = $login;
$this->password1 = $password1;
$this->password2 = $password2;
}

function getJsForm
($summa, $idOrder, $idItem, $itemDesc, $encoding = 'utf-8', $currency = 'PCR', $language = 'ru')
{
return
'<script language=JavaScript '.
'src="https://www.roboxchange.com/mrh_summpreview.asp?'.
'MrchLogin='.$this->login.
'&OutSum='.$summa.
'&InvId='.$idOrder.
'&IncCurrLabel='.$currency.
'&Desc='.$itemDesc.
'&SignatureValue='.$this->createCrc($summa, $idOrder, $idItem).
'&Shp_item='.$idItem.
'&Culture='.$language.
'&Encoding='.$encoding.
'"></script>';
}

function createCrc
($summa, $idOrder, $idItem)
{
$crc =
$this
->login.':'.
$summa.':'.
$idOrder.':'.
$this->password1.
':Shp_item='.$idItem;
return md5($crc);
}

// get status
function is_payed()
{
return $this->_check_crc($this->password1);
}
function is_ordered()
{
return $this->_check_crc($this->password2);
}

// get params
function getSumma()
{
return @$_REQUEST["OutSum"];
}
function getIdOrder()
{
return @$_REQUEST["InvId"];
}
function getIdItem()
{
return @$_REQUEST["Shp_item"];
}
function getCrc()
{
return @$_REQUEST["SignatureValue"];
}

//>Private Section
private $password1;
private $password2;

private function _check_crc
($password)
{
$summa = $this->getSumma();
$idOrder = $this->getIdOrder();
$idItem = $this->getIdItem();
$crc = $this->getCrc();

$crc = strtoupper($crc);

$my_crc = $summa.':'.$idOrder.':'.$password.':Shp_item='.$idItem;
$my_crc = strtoupper(md5($my_crc));

return
($my_crc == $crc)?true:false;
}

}

?>


example:
<?php

class Paying extends Controller
{
function Paying()
{
parent::Controller();
$this->load->library('Robokassa');
$this->robokassa->init('login', 'password1', 'password2');
}

function index()
{
$idItem = '19889'; // уникальный номер товарa
$summa = '5.96'; // стоимость товара
$itemDesc = 'Описание товара';
// уникальный номер заказа
$idOrder = $this->PayModel->createOrder($summa, $idItem);

echo $this
->robokassa->getJsForm($summa, $idOrder, $idItem, $itemDesc);
}

function order()
{
if (!$this->robokassa->is_ordered())
{
die("bad sign\n");
}
$idOrder = $this->robokassa->getIdOrder();
echo "Заказ №: $idOrder оплачивается...\n";
}

function success()
{
if (!$this->robokassa->is_payed())
{
die("bad sign\n");
}
$idOrder = $this->robokassa->getIdOrder();
$summa = $this->robokassa->getSumma();
echo "Заказ №: $idOrder на сумму $summa успешно оплачен.\n";
}

function fail()
{
$idOrder = $this->robokassa->getIdOrder();
echo "Вы отказались от оплаты. Заказ №: $idOrder\n";
}
}

?>

26-Окт-2009 12:16 am(без темы)
class http
{

var 
$curl;
var 
$urls;
var 
$conn;

function 
http($urls$timeout$proxys=0)
{
    
$this->curl curl_multi_init();
    
$this->urls=$urls;
    foreach (
$this->urls as $i => $url)
    {
        
$this->conn[$i] = curl_init($url);
        
curl_setopt($this->conn[$i], CURLOPT_RETURNTRANSFER1);
        if(
$proxys[$i])
        {
            
curl_setopt($this->conn[$i], CURLOPT_PROXY$proxys[$i]);
        }
        
curl_setopt($this->conn[$i], CURLOPT_TIMEOUT$timeout);
    }
}

function 
get()
{
    foreach (
$this->urls as $i => $url)
    {
        
curl_multi_add_handle ($this->curl,$this->conn[$i]);
    }
}

function 
post($posts)
{
    foreach (
$this->urls as $i => $url)
    {
        if(
is_array($posts[$i]))
        {
            
$post_data='';
            foreach (
$posts[$i] as $name=>$val)
                
$post_data.=$name.'='.urlencode($val).'&';

            
curl_setopt($this->conn[$i], CURLOPT_POST1);
            
curl_setopt($this->conn[$i], CURLOPT_POSTFIELDS$post_data);
        }
        
curl_multi_add_handle ($this->curl,$this->conn[$i]);
    }
}

function 
exec()
{
    global 
$mcurl_errs;
    
$mcurl_errs=array();

    do {
        
$mrc curl_multi_exec($this->curl$active);
    } while (
$mrc == CURLM_CALL_MULTI_PERFORM);

    while (
$active and $mrc == CURLM_OK)
    {
        if (
curl_multi_select($this->curl) != -1)
        {
            do
            {
                
$mrc curl_multi_exec($this->curl$active);
            } while (
$mrc == CURLM_CALL_MULTI_PERFORM);
        }
    }

    foreach (
$this->urls as $i => $url)
    {
        if ((
$err curl_error($this->conn[$i])) == '')
        {
            
$res[$i] = curl_multi_getcontent($this->conn[$i]);
        }
        else
        {
            
$res[$i] = '';
        }

        
curl_multi_remove_handle($this->curl,$this->conn[$i]);
        
curl_close($this->conn[$i]);
    }

    
curl_multi_close($this->curl);
    if(isset(
$res))
        return 
$res;
    else
        return 
false;
}
// http end

function GetPages($urls)
{
    
$counturls count($urls);
    
$http = new http($urls$counturls);
    
$http->get();
    
$pages $http->exec();
    unset (
$http);

    return 
$pages;
}

$urls[] = 'http://www.site.com/index.php?action_skin_change=yes&skin_name=3weekeng';
$pages GetPages($urls); 
7-Окт-2009 08:23 pm(без темы)
- Adblock Plus 1.1.1: http://adblockplus.org/ - Скажи "нет" рекламе!
- AutoPager 0.5.3.5: http://www.teesoft.info/ - AutoPager — это расширение для Firefox и Mozilla, автоматически подгружающее страницы в фоновом режиме. А еще его можно использовать как генератор XPath.
- Better Gmail 2 0.9.5: http://ginatrapani.org/workshop/firefox/bettergmail2/ - Enhances Gmail with a compilation of user scripts and styles. All scripts copyright their original authors. Click on the script homepage in the Help tab for more information.
- Better Kongregate 2.1: http://matthewammann.com -  A compilation of the best Greasemonkey user scripts for Kongregate.  All scripts copyright their original authors. Click on the script homepage in the Help tab for more information.
- ChromaTabs Plus 2.2: http://garycalpo.wordpress.com/chromatabs-plus - Colors browser tabs based on site favicon colors.
- Chromifox Companion 0.9.8: http://www.google.com/search?q=Firefox%20Chromifox%20Companion - Configures Chromifox Extreme with Chrome like features.
- Cooliris 1.11.1: http://www.cooliris.com/ - Cooliris transforms your browser into a full-screen 3D Wall for searching, viewing and sharing the Web.
- CustomizeGoogle 0.76: http://www.customizegoogle.com/ - Расширяет результаты поиска Google, удаляет рекламу и спам.
- Download Statusbar 0.9.6.5: http://downloadstatusbar.mozdev.org/ - Просмотр и управление загрузкой файлов при помощи компактной панели над строкой состояния
- DownloadHelper 4.6.2: http://www.downloadhelper.net - Загружай видео и музыку со множества сайтов
- Eve Online Character Status 1.4.9: http://evestatus.ath.cx/ - Character Monitoring for EVE Online
- Extended Statusbar 1.5.4: http://kondor.etf.bg.ac.yu/~kustodian/mozilla/esb - Строка состояния с показателями скорости, размера, процента и времени загрузки страницы (нечто подобное Опере).
- Fasterfox Lite 3.8Lite: https://addons.mozilla.org/firefox/9148 - Performance and network tweaks for Firefox.
- FfChrome 1.7: http://www.binaryturf.com - Firefox Chrome
- Firebug 1.5X.0a25: http://www.getfirebug.com/ - Web Development Evolved.
- FireRainbow 1.0: http://firerainbow.binaryage.com - Javascript syntax highlighting for Firebug
- FireShot 0.78: http://screenshot-program.com/fireshot/ - Позволяет осуществлять полностраничный захват веб-страниц, их редактирование, сохранение (JPEG, GIF, PNG или BMP), вывод на принтер, в буфер обмена, в другую программу обработки или отправку по электронной почте.
- Flagfox 3.3.16: http://flagfox.net/ - Отображает флаг страны, в которой находится сервер
- FlashGot 1.2.0.6: http://flashgot.net - Позволяет закачивать все или только выбранные файлы при помощи наиболее популярных менеджеров загрузки для  Windows, Mac OS X, Linux и FreeBSD (см. полный список на домашней странице расширения). FlashGot так же обладает способностью создавать галерею, которая поможет вам уместить большие медиа-галереи на одной странице без лишнего оформления для быстрой и удобной загрузки.
- Font Size 0.1.20090531.1: http://www.google.com/search?q=Firefox%20Font%20Size - Enlarge/Reduce the font size.
- Gmail Manager 0.5.7.4: http://www.longfocus.com/firefox/gmanager/ - Удобное управление GMail аккаунтами и уведомлениями о новых сообщениях.
- Google Reader Watcher 0.0.15: http://ajnasz.hu/google-reader-watcher - Checks your Google Reader for unread feeds
- Google Redesigned 0.3.5: http://www.globexdesigns.com/ - Полный редизайн популярных услуг Google.
- GoogleEnhancer 1.73: http://netticat.ath.cx/extensions.html - Adds icons, highlighting, numbers and options to Google results
- Greasemonkey 0.8.20090920.2: http://www.greasespot.net/ - Менеджер пользовательских скриптов для Firefox
- Habrahabr Comment Editor 2.0: http://habrace.kirik.ws/ - Простой редактор комментариев
- Hide Caption Titlebar Plus 0.9.0.1: https://addons.mozilla.org/en-US/firefox/user/4341183 - "Maximize your content space by controlling the presence of Firefox window Title bar (Caption)!"
    - Hide the caption (Title bar) of Firefox with 'smart' options (and key fixes and improvements)
- Hide Menubar 1.0.20090918: http://forum.moztw.org/viewtopic.php?t=15303 - Автоматически скрывает панель основного меню. Для временного её отображения нажмите клавишу Alt.
- Html Validator 0.8.5.8: http://users.skynet.be/mgueury/mozilla/ - Adds HTML validation to the View Page Source of the browser. The validation is done by Tidy or a SGML Parser from W3c.
- IdentFavIcon 0.3: http://www.cs.bme.hu/~dhanak/identfavicon/ - Use identicons to automatically generate favicons for sites without one.
- IE View Lite 1.3.5: http://www.graysonmixon.com/extension/ - Cut down version of IE View by Paul Roub.
- ImageTweak 0.18.2: http://cafxx.strayorange.com - Добавляет новые функции для просмотра изображений в отдельном окне
- Informational Tab 0.3.2009090201: http://piro.sakura.ne.jp/xul/_informationaltab.html.en - Обеспечивают миниатюры страниц, прогресс загрузки и другое в каждой вкладке.
- InstaClick 1.4: http://instaclick.mozdev.org - Open links in new tabs with right-mouse clicks
- Java Console 6.0.16: http://www.google.com/search?q=Firefox%20Java%20Console
- LastPass 1.51.4: http://lastpass.com/ - Last Password you will ever need
- Locationbar² 1.0.3: http://en.design-noir.de/mozilla/locationbar2/ - Выделяет имя домена и расшифровывает адрес для более удобного восприятия.
- lolifox - Fierr MOD 1.0.1.1: http://www.virtualfox.yoyo.pl/ - Replaces the error page with lolifox appearance.
- Microsoft .NET Framework Assistant 1.1: http://www.windowsclient.net/ - Добавляет поддержку технологии ClickOnce и возможность сообщать веб-серверу об установленных версиях платформы .NET Framework.
- MinimizeToTray 1.5: http://minimizetotray.mozdev.org/ - Minimizes Firefox windows into the system tray
- MR Tech Toolkit 6.0.3.4: http://www.mrtech.com/extensions/ - Мощный набор инструментов для настройки приложения. (ru-RU)
- Password Exporter 1.2: http://passwordexporter.fligtar.com - Экспортирует и импортирует пароли между компьютерами.
- PDF Download 2.2.0.2: http://www.pdfdownload.org - Allows you to choose what to do with a PDF file: download it, view it with an external viewer or view it as HTML.
- Quick Locale Switcher 1.6.10: http://www.captaincaveman.nl - Позволяет быстро изменять general.useragent.locale.
- Read it Later 0.9947: http://readitlaterlist.com - Save pages to read later, then bookmark.
- SearchLoad Options 0.5.7: http://www.google.com/search?q=Firefox%20SearchLoad%20Options - Настраивает работу панели поиска.
- Selenium IDE 1.0.2: http://seleniumhq.org/projects/ide - Record, edit and play Selenium tests
- Silvermel XT 0.2.1: http://www.silvermel.net - Extends Silvermel Styles
- SkipScreen 0.1.07282009_url_fix: http://skipscreen.com/ - Skips unnecessary pages on sites like Rapidshare, Megaupload, zShare, Mediafire, and more. 
      Wherever there are unnecessary pages and superfluous links, Skipscreen will be there.
- Skype extension for Firefox 3.3.0.3971: http://www.skype.com - Skype extension for Firefox
- SmallTabMix 1.46: http://smalltabmix.mozdev.org/ - Light-weight Tab Enhencement, Including Useful Firefox HIdden Settings.
- SmarterFox 2.1.4: http://smarterfox.com/ - Просматривать "похожие статьи" в Википедии, искать выделенный текст во всплывающем пузыре и контекстном меню, искать из Awesomebar,легко переключаться между поисковыми системами и переходить на закладки по сочетаниям клавиш!
- Speed Dial 0.9.1: http://speeddial.uworks.net/ - Быстрый доступ к самым посещаемым вами веб-сайтам.
- Surf Canyon - Search Engine Assistant 3.0.1: http://www.surfcanyon.com - Adds search result recommendations to Google, Yahoo!, Bing and Craigslist.
- Test Pilot 0.2.1: http://testpilot.mozillalabs.com/ - Help improve Firefox user experience by trying out new features.
- Tree Style Tab 0.8.2009090201: http://piro.sakura.ne.jp/xul/_treestyletab.html.en - Отображение вкладок в виде дерева.
- Ubiquity 0.5.4: http://ubiquity.mozilla.com - An extension that allows for the use of dynamic commands in Firefox.
- Update Notifier 0.1.5.5: http://www.longfocus.com/firefox/updatenotifier - Оповещает при наличии обновлений для установленных расширений/тем.
- Update Scanner 3.0.5: http://updatescanner.mozdev.org - Проверяет web-страницы на наличие обновлений
- Vacuum Places Improved 1: http://www.google.com/search?q=Firefox%20Vacuum%20Places%20Improved - Defragment your places.sqlite database to speed-up Firefox
- Wappalyzer 1.5.0: http://elbertf.com - Wappalyzer shows you which software is used on the page you're currently at.
- Web Developer 1.1.8: http://chrispederick.com/work/web-developer/ - Adds a menu and a toolbar with various web developer tools.
- Xmarks 3.3.2: http://www.xmarks.com/ - Синхронизирует ваши закладки перекрестным методом.
- YSlow 2.0.1: http://developer.yahoo.com/yslow - Make your pages faster with Yahoo!'s page performance tool
17-Июл-2009 11:42 pm - CI+SWFUpload
Как связать CodeIgniter и SWFUpload

1) надо подравить CI_Session.php
в самом конце функции function CI_Session() добавляем запись. это надо для того сафари и флэш не обновляли(создавали новую) сессию.
    if ( !stristr($this->object->input->user_agent(),'shockwave') and !stristr($this->object->input->user_agent(),'Adobe Flash Player') )
    {
      $this->_sess_run();
    }

* This source code was highlighted with Source Code Highlighter.


2) создаем контроллер uploader.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Uploader extends Controller
{
  function Uploader()
  {
    parent::Controller();
  }

    //swfupload
  function do_upload1()
  {
      $tmpdir='/files/temp/';

      $used_degraded = false;
      $resume_id = "";
    if(isset($_FILES["resume_file"]["name"]))
    {
      $p=pathinfo($_FILES["resume_file"]["name"]);
      $myfilename=mktime(date('H'),date('i'),date('s'),date('n'),date('d'),date('Y')).'.'.$p['extension'];     
    }

        if(isset($_FILES["resume_degraded"]["tmp_name"])) log_message('debug', "uploader: resume_degraded_tmp_name: ".$_FILES["resume_degraded"]["tmp_name"]);
        if(isset($_FILES["resume_degraded"]["error"])) log_message('debug', "uploader: resume_degraded_error: ".$_FILES["resume_degraded"]["error"]);
        if(isset($_FILES["resume_file"]["tmp_name"])) log_message('debug', "uploader: resume_file_tmp_name: ".$_FILES["resume_file"]["tmp_name"]);
        if(isset($myfilename)) log_message('debug', "myfilename: ".$myfilename);
        log_message('debug', "uploader: user_agent: ".$this->object->input->user_agent());
        if(isset($_POST['PHPSESSID'])) log_message('debug', "uploader: phpsessid: ".$_POST['PHPSESSID']);

        // Check for the file id we should have gotten from SWFUpload
        if (isset($_POST["hidFileID"]) && $_POST["hidFileID"] != "" )
        {
            $resume_id = $_POST["hidFileID"];
        }

     if (isset($_FILES["resume_file"]) && is_uploaded_file($_FILES["resume_file"]["tmp_name"]) && $_FILES["resume_file"]["error"] == 0)
     {
            log_message('debug', "uploader: move_uploaded_file...");
      if(!$result = move_uploaded_file($_FILES['resume_file']['tmp_name'],$tmpdir.$myfilename))
      {
                log_message('debug', "uploader: copy uploaded file...");
        if(!$result = copy($_FILES['resume_file']['tmp_name'],$tmpdir.$myfilename))
        {
          @unlink($_FILES['resume_file']['tmp_name']);
          echo ' '; // это надо для swfupload, чтобы он корректно показывал прогресс-бар
        }
        else
        {
          @unlink($_FILES['resume_file']['tmp_name']);
          log_message('debug', "uploader: copy uploaded file: echo filename: ".$myfilename);
          log_message('debug', "uploader: phpsessid: ".$_POST['PHPSESSID']);
          echo ' ';
// это надо для swfupload, чтобы он корректно показывал прогресс-бар
        }
      }
      else
      {
                log_message('debug', "uploader: move_uploaded_file: echo filename: ".$myfilename);
                log_message('debug', "uploader: phpsessid: ".$_POST['PHPSESSID']);
        echo $myfilename;
// это надо для swfupload, чтобы он корректно показывал прогресс-бар
      }
     }
     else
     {
      //$params['session_id'] = $_POST['PHPSESSID'];
      //$this->load->library('session', $params);
      log_message('debug', "uploader: before 'checkMedia'");
      if(isset($_POST['PHPSESSID'])) log_message('debug', "uploader: phpsessid: ".$_POST['PHPSESSID']);
      if(isset($_POST["hidFileID"])) log_message('debug', "uploader: tmpdir=".$tmpdir." ; file=".$_POST["hidFileID"]);
            log_message('debug', "uploader: goto CheckMedia");

** здесь ставим вызов на другой контроллер для обработки загруженного файла
** в переменной $myfilename у нас должен быть полный путь до закаченного файла

     }
  }
}

* This source code was highlighted with Source Code Highlighter.



3) потом создаем форму: (о всех параметрах, которые понимает/принимает swfupload смотрим в http://demo.swfupload.org/Documentation/)
<script type="text/javascript" src="/templates/js/swfupload/swfupload.js"></script>
<script type="text/javascript" src="/templates/js/swfupload/swfupload.swfobject.js"></script>
<script type="text/javascript" src="/templates/js/swfupload/fileprogress.js"></script>
<script type="text/javascript" src="/templates/js/swfupload/swfupload.handlers.js"></script>
<link href="/templates/js/swfupload/upload.css" rel="stylesheet" type="text/css" />
<style type="text/css">
.swfupload { position: absolute; z-index: 1; }
</style>
<script type="text/javascript">
  var swfu;
    window.onload = function ()
    {
      swfu = new SWFUpload({
        flash_url : "/templates/js/swfupload/swfupload.swf",
        upload_url: "/index.php/uploader/do_upload1",
        file_post_name: "resume_file",
        post_params: {"PHPSESSID" : ""},
        file_size_limit : "10 MB",  // 10 MB
        file_types : "*.jpg;*.jpeg",
        //file_types_description : "Supported Files",
        file_upload_limit : "0",
        file_queue_limit : "1",
        // Event handler settings
        swfupload_loaded_handler : swfUploadLoaded,
        file_dialog_start_handler: fileDialogStart,
        file_queued_handler : fileQueued,
        file_queue_error_handler : fileQueueError,
        file_dialog_complete_handler : fileDialogComplete,
        //upload_start_handler : uploadStart,
        upload_progress_handler : uploadProgress,
        upload_error_handler : uploadError,
        upload_success_handler : uploadSuccess,
        upload_complete_handler : uploadComplete,
        button_placeholder_id: "spanButtonPlaceholder",
        button_width: 91,
        button_height: 22,
        button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
        button_cursor: SWFUpload.CURSOR.HAND,
        custom_settings : {
          progress_target : "fsUploadProgress",
          upload_successful : false
        },
        minimum_flash_version : "9.0.28",
        swfupload_load_failed_handler : swfUploadLoadFailed,
        debug: false
      });
    }
</script>

<form id="image-upload" class="clearfix" action="/index.php/uploader/do_upload1" method="post" enctype="multipart/form-data">
<div style="width: 330px;margin-left: 150px;">
<p><nobr>
<input type="text" id="txtFileName" disabled="true" style="width:320px; border: solid 1px; background-color: #FFFFFF;" />
<div id="spanButtonPlaceholder"></div>
<input id="btnUpload" type="button" value="выбрать файл" style="width: 91px; height: 22px; font-size: 8pt;" />
<input style="font-size:8pt;height: 22px;" type="submit" id="btnSubmit" disabled name="pesave" value="загрузить" />                               
</nobr></p>
<div class="clear"></div>
<div class="flash" id="fsUploadProgress">
<input type="hidden" name="hidFileID" id="hidFileID" value="" />
<input type="hidden" name="hidFileName" id="hidFileName" value="" />
</div>
<!-- This is where the file ID is stored after SWFUpload uploads the file and gets the ID back from upload.php -->
<noscript>У Вас отключен JavaScript. Для корректной загрузки файлов Вы должны включить Javascript.</noscript>
<div id="divLoadingContent" class="content" style="background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;">
SWFUpload is loading. Please wait a moment...</div>
<div id="divLongLoading" class="content" style="background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;">SWFUpload is taking a long time to load or the load has failed. Please make sure that the Flash Plugin is enabled and that a working version of the Adobe Flash Player is installed.</div>
<div id="divAlternateContent" class="content" style="color: #FFFFFF; background-color: red; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;">У Вас не установлен Flash Player или установлена старая версия Flash Player.<br><br>Пожалуйста, установите или обновите версию Flash Player, пройдя по следующей ссылке: <a href="http://get.adobe.com/flashplayer/" target="_blank">http://get.adobe.com/flashplayer/</a><br><br>После установки или обновления Flash Player, для того, чтобы изменения вступили в силу, необходимо перезагрузить ваш браузер.</div></form>

* This source code was highlighted with Source Code Highlighter.

В принципе и все.
This page was loaded Май 25 2012, 10:32 pm GMT.