ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Библиотеки, Классы, полезные функции.
  #1  
Старый 29.09.2009, 20:46
Аватар для Sharky
Sharky
Познавший АНТИЧАТ
Регистрация: 01.05.2006
Сообщений: 1,021
Провел на форуме:
3424739

Репутация: 921


Отправить сообщение для Sharky с помощью ICQ
По умолчанию Библиотеки, Классы, полезные функции.

Выкладываем полезные классы, библиотеки, для облегчения жизни. Так же в теме принимаются просьба на поиски библиотек/классов. Начну первый:

MultiCurl class library
Цитата:
MultiCurl - библиотека классов, выполненная на базе MULTI CURL PHP extension. Имеет дополнительную функциональность:

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

К примеру, можно стартовать 100 закачек в 2 параллельных потока, скачивая только первые 100 Kb в каждой закачке.
Ссылки по классу:
http://www.weblancer.net/users/tvv/portfolio/231798.html
http://code.google.com/p/multicurl-library/downloads/list

Последний раз редактировалось b3; 14.12.2009 в 22:00..
 
Ответить с цитированием

  #2  
Старый 05.11.2009, 16:06
Аватар для Sharky
Sharky
Познавший АНТИЧАТ
Регистрация: 01.05.2006
Сообщений: 1,021
Провел на форуме:
3424739

Репутация: 921


Отправить сообщение для Sharky с помощью ICQ
По умолчанию

подскажите perl либу для работы с фтп через socks5
 
Ответить с цитированием

  #3  
Старый 05.11.2009, 16:11
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

ftp://ftp.linux.it/debian/pool/main/libi/libio-socket-socks-perl/libio-socket-socks-perl_0.1.orig.tar.gz
 
Ответить с цитированием

  #4  
Старый 14.12.2009, 22:09
Аватар для b3
b3
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
Провел на форуме:
1698585

Репутация: 818


Отправить сообщение для b3 с помощью ICQ
По умолчанию

Т.к. тема не пользовалась спросом, немного изменил её направление, изменения в первом посте. Продолжу:

Класс для постраничного вывода из БД:

PHP код:
<?php 
class Paging 

private 
$page_size 10
private 
$link_padding 10
private 
$page_link_separator ' '
private 
$next_page_text 'следующая →'
private 
$prev_page_text '← предыдущая'
private 
$result_text_pattern 'Показано с %s по %s из %s'
private 
$page_var 'p'

private 
$db
private 
$q
private 
$total_rows
private 
$total_pages
private 
$cur_page

public function 
__construct($db$q=''$page_var='p'

    
$this->db $db
    if (
$q$this->set_query($q); 
    
$this->page_var $page_var
    
$this->cur_page = isset($_GET[$this->page_var]) && (int)$_GET[$this->page_var] > ? (int)$_GET[$this->page_var] : 1


public function 
set_query($q

    
$this->$q


public function 
set_page_size($page_size

    
$this->page_size abs((int)$page_size); 


public function 
set_link_padding($padding

    
$this->link_padding abs((int)$padding); 


public function 
get_page($q=''

    if (
$q$this->set_query($q); 

    
$r $this->db->query$this->query_paging($this->q) ); 
    
$this->total_rows array_pop($this->db->query('SELECT FOUND_ROWS()')->fetch_row()); 

    if (
$this->page_size !== 0$this->total_pages ceil($this->total_rows/$this->page_size); 
     
    if (
$this->cur_page $this->total_pages
    { 
        
$this->cur_page $this->total_pages
        if ( 
$this->total_pages $r $this->db->query$this->query_paging($this->q) ); 
    } 
     
    return 
$r


public function 
get_result_text() 

    
$start = (($this->cur_page-1) * $this->page_size)+1
    
$end = (($start-1+$this->page_size) >= $this->total_rows)? $this->total_rows:($start-1+$this->page_size); 

    return 
sprintf($this->result_text_pattern$start$end$this->total_rows); 


public function 
get_page_links() 

    if ( !isset(
$this->total_pages) ) return ''

    
$page_link_list = array(); 

    
$start $this->cur_page $this->link_padding
    if ( 
$start $start 1
    
$end $this->cur_page $this->link_padding-1
    if ( 
$end $this->total_pages $end $this->total_pages

    if ( 
$start )  $page_link_list[] = $this->get_page_link$start-1$start '...' '' ); 
    for (
$i=$start$i <= $end$i++)  $page_link_list[] = $this->get_page_link$i ); 
    if ( 
$end $this->total_pages $page_link_list[] = $this->get_page_link$end +1$end == $this->total_pages '' '...' ); 
    if ( 
$end <= $this->total_pages $page_link_list[] = $this->get_page_link$this->total_pages ); 

    return 
implode($this->page_link_separator$page_link_list); 


public function 
get_next_page_link() 

    return isset(
$this->total_pages) && $this->cur_page $this->total_pages $this->get_page_link$this->cur_page 1$this->next_page_text ) : ''


public function 
get_prev_page_link() 

    return isset(
$this->total_pages) && $this->cur_page $this->get_page_link$this->cur_page 1$this->prev_page_text ) : ''


private function 
get_page_link($page$text=''

    if (!
$text)    $text $page

    if (
$page != $this->cur_page
    { 
        
$reg '/((&|^)'.$this->page_var.'=)[^&#]*/'
        
$url '?'.( preg_match$reg$_SERVER['QUERY_STRING'] ) ? preg_replace($reg'${1}'.$page$_SERVER['QUERY_STRING']) : ( $_SERVER['QUERY_STRING'] ? $_SERVER['QUERY_STRING'].'&' '' ).$this->page_var.'='.$page); 
        return 
'<a href="'.$url.'">'.$text.'</a>'
    } 
    return 
'<span>'.$text.'</span>'


private function 
query_paging() 

    
$q $this->q

    if (
$this->page_size != 0
    { 
        
//calculate the starting row 
        
$start = ($this->cur_page-1) * $this->page_size
        
//insert SQL_CALC_FOUND_ROWS and add the LIMIT 
        
$q preg_replace('/^SELECT\s+/i''SELECT SQL_CALC_FOUND_ROWS '$this->q)." LIMIT {$start},{$this->page_size}"
    } 

    return 
$q


?>
Ссылки по классу:
https://forum.antichat.ru/showpost.php?p=1739576&postcount=2
http://www.tigir.com/paging.htm
 
Ответить с цитированием

  #5  
Старый 14.12.2009, 22:12
Аватар для life_is_shit
life_is_shit
Постоянный
Регистрация: 21.08.2007
Сообщений: 367
Провел на форуме:
3578960

Репутация: 468
Отправить сообщение для life_is_shit с помощью ICQ
По умолчанию

а можно мне хоть глазком глянуть на нормальный Doctrine ORM для codeigniter?
просто мечтаю в поллюционных снах.
 
Ответить с цитированием

  #6  
Старый 21.01.2010, 22:14
Аватар для b3
b3
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
Провел на форуме:
1698585

Репутация: 818


Отправить сообщение для b3 с помощью ICQ
По умолчанию

Класс для работы с MySQL:
PHP код:
<?php

class db
{
    var 
$db_id false;
    var 
$query_num 0;
    var 
$query_list = array();
    var 
$mysql_error '';
    var 
$mysql_error_num 0;
    var 
$MySQL_time_taken 0;
    
    function 
connect($db_user$db_pass$db_name$db_location 'localhost'$show_error=1)
    {
        if(!
$this->db_id = @mysql_connect($db_location$db_user$db_pass))
        {
            if(
$show_error == 1$this->display_error(mysql_error(), mysql_errno());
            else                 return 
false;
        } 

        if(!@
mysql_select_db($db_name$this->db_id))
        {
            if(
$show_error == 1$this->display_error(mysql_error(), mysql_errno());
            else                 return 
false;
        }

        return 
true;
    }
    
    function 
query($query$show_error=true)
    {

        if(!
$this->db_id$this->connect(DBUSERDBPASSDBNAMEDBHOST);
        
        if(!(
$result mysql_query($query$this->db_id) ))
        {
            
$this->mysql_error mysql_error();
            
$this->mysql_error_num mysql_errno();
            
            if(
$show_error$this->display_error($this->mysql_error$this->mysql_error_num$query);
        }
        
        
$this->query_num ++;

        return 
$result;
    }
    
    function 
get_row($query_result)
    {
        return 
mysql_fetch_assoc($query_result);
    }

    function 
get_array($query_result)
    {
        return 
mysql_fetch_array($query_result);
    }
    
    
    function 
super_query($query$multi false)
    {
        if(!
$this->db_id$this->connect(DBUSERDBPASSDBNAMEDBHOST);

        if(!
$multi) return $this->get_row($this->query($query));
        else
        {
            
$query_result $this->query($query);
            
            
$rows = array();
            while(
$row $this->get_row($query_result))
            {
                
$rows[] = $row;
            }
            
            return 
$rows;
        }
    }
    
    function 
num_rows($query_result)
    {
        return 
mysql_num_rows($query_result);
    }
    
    function 
insert_id()
    {
        return 
mysql_insert_id($this->db_id);
    }

    function 
get_result_fields($result)
    {
        while (
$field mysql_fetch_field($result))
        {
            
$fields[] = $field;
        }
        
        return 
$fields;
    }

    function 
close()
    {
        @
mysql_close($this->db_id);
    }
    
    function 
display_error($error$error_num$query '')
    {
        if(
$query)
        {
            
$query preg_replace("/([0-9a-f]){32}/""********************************"$query);
            
$query_str "$query";
        }
        
        echo 
'<?xml version="1.0" encoding="iso-8859-1"?>
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
        <title>MySQL Fatal Error</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <style type="text/css">
        <!--
        body {
            font-family: Verdana, Arial, Helvetica, sans-serif;
            font-size: 10px;
            font-style: normal;
            color: #000000;
        }
        -->
        </style>
        </head>
        <body>
            <font size="4">MySQL Error!</font> 
            <br />------------------------<br />
            <br />
            
            <u>The Error returned was:</u> 
            <br />
                <strong>'
.$error.'</strong>

            <br /><br />
            </strong><u>Error Number:</u> 
            <br />
                <strong>'
.$error_num.'</strong>
            <br />
                <br />
            
            <textarea name="" rows="10" cols="52" wrap="virtual">'
.$query_str.'</textarea><br />

        </body>
        </html>'
;
        
        exit();
    }
}

?>
 
Ответить с цитированием

  #7  
Старый 21.01.2010, 23:33
Аватар для nerezus
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

b3, зверюга )
Никаких проверок, исключений, никакого ООП, просто обертка стандартных устаревших функций для работы с MySQL своими функциями )
 
Ответить с цитированием

  #8  
Старый 21.01.2010, 23:35
Аватар для VDShark
VDShark
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме:
804931

Репутация: 526
По умолчанию

http://highcharts.com/
JS-библиотека для построения графиков/диаграмм и прочего-прочего со всякими вкусностями =)
Плотно не юзал, но выглядит удобоваримо.
 
Ответить с цитированием

  #9  
Старый 22.01.2010, 01:39
Аватар для b3
b3
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
Провел на форуме:
1698585

Репутация: 818


Отправить сообщение для b3 с помощью ICQ
По умолчанию

Цитата:
b3, зверюга )
исправлюсь)) Просто перенес с другого раздела тему, и нужно было апнуть =) Но кстати данным классом пользуюсь =) Для тех кому нужен "безопасный" класс могу посоветовать выдрать с DLE, там неплохой =)
 
Ответить с цитированием

  #10  
Старый 22.01.2010, 06:42
Аватар для Shadow_p1raT
Shadow_p1raT
Участник форума
Регистрация: 09.03.2008
Сообщений: 193
Провел на форуме:
2140897

Репутация: 267
Отправить сообщение для Shadow_p1raT с помощью ICQ
По умолчанию

уважаемый nerezus,не могли бы вы выложить настоящий класс для работы с mysql(т.е c OOП,исключениями,проверками )
P.S хочется глянуть )
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[HELP, С++] Библиотеки, классы, модули для работы с изображениями. [n]-c0der С/С++, C#, Delphi, .NET, Asm 1 27.10.2009 16:15
Процесс создания программного обеспечения для распределенных вычислений (С++). c0n Difesa Авторские статьи 9 09.06.2009 16:33
Начальный практикум в Code Igniter Kuzya Авторские статьи 9 20.02.2009 23:12
Кейлогер на Vb или как правильно играть в Gta!!! je0n Авторские статьи 6 25.05.2007 23:55



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ