Задать вопрос
php dev

Достижения

Все достижения (4)

Наибольший вклад в теги

Все теги (57)

Лучшие ответы пользователя

Все ответы (73)
  • Зачем нужен ioncube, если его легко вскрыть?

    latteo
    @latteo
    У вас старая версия.
    Код после вскрытия чаще всего нерабочий и требует допила, иногда всё плохо настолько, что логику скрипта можно лишь угадывать.
    Между выходом свежей версии и появлением декодеров проходит некоторое время.
    Включение дополнительных опций сильно затрудняет декод - деобфускация будет не полная (по отзывам автора одного из декодеров).
    Ответ написан
    Комментировать
  • Скрипт, выполняемый на JavaScript за секунду, на PHP за 30 секунд проходит только 20%. В чём причина?

    latteo
    @latteo
    php можно ускорить в 2-3 раза, если сделать выход из циклов в последнем условии:
    if( 100*$d+10*$g+$j + 100*$j+10*$a+$e + 100*$b+10*$h+$f == 1000*$d+100*$d+10*$a+$b && $f*$c/$j == 10*$g+$a) {
                echo " a=",$a, " b=",$b, " c=",$c, " d=",$d, " e=",$e, " f=",$f, " g=",$g, " h=",$h, " j=",$j;
                break 9;
              }


    Ради фана переписал 2й алгоритм на Go
    package main
    
    import "fmt"
    import "time"
    
    func main() {
        st :=  time.Now().UnixNano()
        top:
        for a := 1; a<10; a++ {
          for b := 1; b<10; b++ {
            if b == a { continue; } else {
              for c := 1; c<10; c++ {
                if c==b || c==a { continue; } else {
                  for d := 1; d<10; d++ {
                    if  d==c || d==b || d==a { continue; } else {
                      for e := 1; e<10; e++ {
                        if e==d || e==c || e==b || e==a { continue; } else {
                          for f := 1; f<10; f++ {
                            if f==e || f==d || f==c || f==b || f==a { continue; } else {
                              for g := 1; g<10; g++ {
                                if g==f || g==e || g==d || g==c || g==b || g==a { continue; } else {
                                  for h := 1; h<10; h++ {
                                    if h==g || h==f || h==e || h==d || h==c || h==b || h==a { continue; } else {
                                      for j := 1; j<10; j++ {
                                        if j==h || j==g || j==f || j==e || j==d || j==c || j==b || j==a { continue; } else {
                                          if 100*d+10*g+j + 100*j+10*a+e + 100*b+10*h+f == 1000*d+100*d+10*a+b && f*c/j == 10*g+a {
                                            fmt.Println(" a=", a, " b=", b, " c=", c, " d=", d, " e=", e, " f=", f, " g=", g, " h=", h, " j=", j)
                                            break top
                                          }}}}}}}}}}}}}}}}}}
                    
        elapsed := time.Now().UnixNano()
        delta := ( float64(elapsed) - float64(st) )/ 1e6
        fmt.Println("Время выполнения (ms): ", delta)
    }


    Ну и JS тоже разжился break`ом и профилированием
    var time = performance.now();
    // некий код
    time = performance.now() - time;
    console.log('Время выполнения (ms): ', time);

    по времени в 2 раза медленне GO

    Лучшие результаты на моей машине:
    php - 600мс
    js - 40мс
    go - 20мс
    Ответ написан
    3 комментария
  • Как практиковаться в back-end, если нуб в front-end?

    latteo
    @latteo
    Как практиковаться в back-end

    Частая бэкендская задача:
    Берём данные с одного апи, пишем адаптер и отправляем на другой. Простенькое - оба апи работают с json и примерно похожи. Посложнее - один отдаёт xml, другой просит json. Еще сложнее они имеют жесткие лимиты на количество запросов и единственный метод обойти завести 10-100 акков в каждом сервисе и распараллелить процесс + приоритет заданий. Еще частый кейс разница в логике реализации, то что у одних отдаётся в одном запросе, другим заливается десятком разных.
    api сейчас есть у большинства более менее крупных сервисов, так что можешь выбрать себе по вкусу.
    Ответ написан
    Комментировать
  • Несколько простых вопросов по тестированию. Кто поможет?

    latteo
    @latteo
    Мне очень помогло вот это видео - https://www.youtube.com/watch?v=8u6_hctdhqI Хотя, стоит заметить, что до него я потратил десятки часов на чтение статей ;)

    Хорошей практикой считается создавать suite под разные виды тестов: unit, интеграционные (функциональные), UI
    Все они служат для повышение качества софта.

    Но unit в первую очередь нужны разработчикам для уверенности при рефакторинге и лучшего понимания чужого кода, конечно, если они написаны не только ради того чтобы было. Они должны быть очень быстрыми и тестировать отдельные участки кода. Для этого при написании таких тестов часто используют моки.

    То что вы описали $this->visit('/users') / see / dontSee / press. ближе всего к UI тестам. Это проверка софта с точки зрения пользователя. Очень часто они написаны даже не разработчиком, а QA. Если для их выполнения настроить Selenium, то можно приятно удивить клиента :)
    Ответ написан
    3 комментария
  • Обфускация PHP кода бесплатно - реально ли?

    latteo
    @latteo
    У ioncube есть Online Encoder за 0,5 бакса я файлики до 30КБ скармливал (этого более чем достаточно для проверки лицензии и нескольких критичных для работы всего скрипта объектов)
    Ответ написан
    1 комментарий