Получение HTML после выполнения клиентских скриптов

vasinsky

Новичок
Да уж, 140+ постов за 3 дня – ага, ваще времени нет
я же говорил - я общительный

днём - чтобы на 5 секунд отвлечся от рутины на работе
вечером - больше лёжа на боку под одеялом уже

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

vasinsky

Новичок
не-не-не, я всегда хотел понять ход мыслей попова
ты напрасно тратишь время, я его приёмы не использую, наоборот-объясняю что этого делать не надо

Кстати, этого уже научили display_errors прописывать
учил не ты, не присваивай себе славу другого.

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

hell0w0rd

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

hell0w0rd

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

AmdY

Пью пиво
Команда форума

vasinsky

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

или что-то ещё?
 

vasinsky

Новичок
не надо путать вещи

если я не учёл правило в htaccess, т.к. я больно в этих правилах не шарю - это ещё не делает меня поповым.

у тебя на фото бородка и очки, ты знаешь php - видишь - у тебя больше аргументов называться попвым - чем у меня.

не оценил юмор? вот и я тебе про тоже.
 

vasinsky

Новичок
а я не вижу смысла искать доводы и доказывать что либо - если я в этом не шарю, и мне не стрёмно в этом признаться.
 

hell0w0rd

Продвинутый новичок
vasinsky,
Я пишу запрос:
Код:
SELECT good_name, price, count FROM bla WHERE price BETWEEN (f:price AND f:price * i:count) AND count > i:count
Каким-то образом имею возможность подставить значения на место count и price. Имею следующие плейсхолдеры:
  • int
  • float (double)
  • string
  • bool
  • null
 

vasinsky

Новичок
ответ на мой вопрос по поводу класса мне ждать? или просто посмеёмся над вопросом?
понял
 

WMix

герр M:)ller
Партнер клуба
порешать предложил ты вроде, я уже порешал с матрицами практически -- очень простая задачка первый курс. ты достойно выбрал посложнее.
 

WMix

герр M:)ller
Партнер клуба
ну както так
PHP:
class Martix{

    private $data;

    public function __construct( array $data ){
        $this->data = $data;
    }

    public function elem( $x, $y ){
        return $this->data[$x][$y];
    }
    /* TODO cache */
    public function cols(){
        return count( $this->data[0] );
    }
    /* TODO cache */
    public function rows(){
        return count( $this->data );
    }

    public function mult( Martix $m2 ){
        if( $this->cols()==$m2->rows() ){
            $tmp = array();
            for( $x=0; $x<$this->rows(); $x++ ){
                for( $y=0; $y<$m2->cols(); $y++ ){
                    $tmp[$x][$y]=0;
                    for( $i=0; $i<$m2->rows(); $i++ ){
                      $tmp[$x][$y] += $this->elem( $x, $i ) * $m2->elem( $i, $y );
                    }
                }
            }
            return new Martix($tmp);
        }
        else throw new Exception ("непосильная задача");
    }

    public function html(){
        $out = '<table class="matrix">';
        foreach( $this->data as $row ){
            $out .= '<tr>';
            foreach( $row as $col ){
                $out .= '<td>'.$col.'</td>';
            }
            $out .= '</tr>';
        }
        $out .= '</table>';
        return $out;
    }
}
PHP:
$m1 = new Martix( array(
    array( 1, 2 ),
    array( 3, 4 ),
    array( 5, 6 ),
));

$m2 = new Martix( array(
    array( 7, 8, 9,14 ),
    array(10, 11,12,15 )
));
?>
<table border="1">
    <tr>
        <td> &times; </td>
        <td><?=$m2->html()?></td>
    </tr>
    <tr>
        <td><?=$m1->html()?></td>
        <td><?=$m1->mult($m2)->html()?></td>
    </tr>
</table>
 

Вурдалак

Продвинутый новичок
PHP:
class Matrix {
    // ...
}

interface MatrixMultiplier {
    /**
     * @throws \InvalidArgumentException
     * @param MatrixPool $pool
     * @return Matrix
     */
    public function mul(MatrixPool $pool);
}

class SimpleMatrixMultiplier implements MatrixMultiplier {
    // O(n^3)
}

class StrassenMatrixMultiplier implements MatrixMultiplier {
    // ...
}

class WolframAlphaMatrixMultiplier implements MatrixMultiplier {
    // ...
}
С MatrixPool можно сделать оптимальный вариант перемножения, чего не скажешь про обычный Matrix->mul().

SimpleMatrixMultiplier будет сдавать хорошист, StrassenMatrixMultiplier — отличник. А WolframAlphaMatrixMultiplier будет сдавать наёбщик и получат автоматом экзамен.
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
да мой алгоритм m^3 научи StrassenMatrixMultiplier
WolframAlphaMatrixMultiplier наоборот, учись пользоваться готовым не?
 

hell0w0rd

Продвинутый новичок
PHP:
namespace Wmix\Matrix;

class Matrix
{
    private $matrix = array();
    private $n;
    private $m;

    public function __construct($n = null, $m = null, array $matrix = null)
    {
        $this->setSize($n, $m);
        if ($matrix !== null) {
            for ($i = 0; $i < $this->n; $i++) {
                for ($j = 0; $j < $this->m; $j++) {
                    if (isset($matrix[$i]) && isset($matrix[$i][$j])){
                        $this->matrix[$i][$j] = (float) $matrix[$i][$j];
                    } else {
                        $this->matrix[$i][$j] = 0;
                    }
                }
            }
        }
    }

    public function mul(Matrix $term)
    {
        list($nTerm, $mTerm) = $term->getSize();
        if ($nTerm !== $this->m) {
            throw new \InvalidArgumentException('The matrix is not agreed');
        }
        $result = new Matrix($this->n, $mTerm);
        for ($i = 0; $i < $this->n; $i++) {
            for ($j = 0; $j < $mTerm; $j++) {
                $element = 0;
                for ($e = 0; $e < $nTerm; $e++) {
                    $element += $this->get($i, $e) * $term->get($e, $j);
                }
                $result->set($i, $j, $element);
            }
        }

        return $result;
    }

    public function setSize($n = null, $m = null)
    {
        if ($n !== null) {
            $this->n = (int) $n;
        }
        if ($m !== null) {
            $this->m = (int) $m;
        }
    }

    public function getSize()
    {
        return array($this->n, $this->m);
    }

    public function get($i, $j)
    {
        if (isset($this->matrix[$i]) && isset($this->matrix[$i][$j])){
            return $this->matrix[$i][$j];
        }
        throw new \InvalidArgumentException(sprintf('There is no element of matrix with indexes [%s][%s]', $i, $j));
    }

    public function set($i, $j, $value)
    {
        if ($i > $this->n || $i < 0) {
            throw new \InvalidArgumentException('"i" should be less then "n" and more then zero');
        }
        if ($j > $this->m || $j < 0) {
            throw new \InvalidArgumentException('"j" should be less then "m" and more then zero');
        }
        $this->matrix[(int) $i][(int) $j] = (float) $value;
    }

    public function out()
    {
        for ($i = 0; $i < $this->n; $i++) {
            for ($j=0; $j < $this->m; $j++) {
                echo $this->matrix[$i][$j], ' ';
            }
            echo "\n";
        }
    }
}

$m1 = new Matrix(2, 3, [
    [4, 5, 6],
    [7, 8, 9]
]);
$m2 = new Matrix(3, 2, [
    [4, 5],
    [7, 8],
    [4, 5]
]);
echo var_dump($m1->mul($m2));
мда)) вспоминаю лабы по плюсам - там в два раза меньше, из-за отсутствия проверок) Как же проще порою со статической типизицией
 
Последнее редактирование:

Вурдалак

Продвинутый новичок
да мой алгоритм m^3 научи StrassenMatrixMultiplier
А что учить, я его и сам не знаю, помню только название. Реализация — это скучно, это можно в Википедии посмотреть.

WolframAlphaMatrixMultiplier наоборот, учись пользоваться готовым не?
WolframAlphaMatrixMultiplier реализовать сложнее, зато забавно, это из разряда SimplePHPEasyPlus. Но нужно не забыть покрыть тестами:
PHP:
abstract class MatrixMultiplierTest extends PHPUnit_Framework_TestCase {
    // ...
}

class WolframAlphaMatrixMultiplierTest extends MatrixMultiplierTest {
    // ...
}
 
Сверху