Задать вопрос
  • На чём писать сайт для строительной фирмы? Нужно: форма для предварительного расчёта дома (много параметров), печать документов, регистрация и т.д?

    Adamos
    @Adamos
    Нужно реализовать много всяких вещей, таких как: регистрация и права доступа к страницам в зависимости от группы пользователя

    Штатная функциональность любой CMS или популярного РНР-фреймворка

    подготовка документов к печати (например, коммерческое предложение, тз и так далее)

    Достаточно просто пишется с использованием mPDF

    но, самое важное это "предварительный расчёт"

    А вот это задача, перпендикулярная всему прочему сайту. Потому что всему этому расчету желательно быть на одной странице, и от прочего сайта эта страница зависит минимально. Как и он от нее. Javascript сейчас позволяет делать на странице все, что угодно - просто нужно это уметь.

    не знаем как поступить: есть МНОГО параметров, и нужно сделать так, чтобы при выборе одного, в зависимости от условий, менялись СРАЗУ ЖЕ другие

    Например, сделать расчет в виде wizard - окошек, в которых можно сделать выбор, от которого зависит, какое окошко откроется следующим (и можно вернуться, если передумал). Окошки все на одной странице (в каждый конкретный момент видно только текущее), управляются javascript-ом.
    Ответ написан
    Комментировать
  • Редактирование PDF с помощью JavaScript или PHP?

    Adamos
    @Adamos
    Аналогичная задача - на готовый диплом в PDF лепятся данные награжденного и факсимиле.
    $css = "
    div.abs {
        position: absolute;
        line-height: " . $font_size * 3 . "mm;
        text-align: center;
    }
    div.main {
        top: " . $prizer_box[1] . "mm;
        left: " . $prizer_box[0] . "mm;
        width: " . $prizer_box[2] . "mm;
    }
    div.year {
        top: " . $year_box[1] . "mm;
        left: " . $year_box[0] . "mm;
        width: " . $year_box[2] . "mm;
    }
    p.main {
        font-size: " . $font_size . "mm;
        font-family: romul;
        text-transform: uppercase;
    }
    p.user {
        font-size: " . $font_size * 2 . "mm;
        line-height: " . $font_size * 3 . "mm;
        font-family: heinrichscript;
        margin: 0 0 " . $font_size * 3 . "mm 0;
    }
    ";
    
    $html_text = "<div class='abs main'>";
    $html_text .= "<p class='main'>Награждается</p>";
    $html_text .= "<p class='user'>$name<br />$surname</p>";
    $html_text .= "<p class='main'>$award_title<br />$event_title</p>";
    $html_text .= "</div>";
    $html_text .= "<div class='abs year'><p class='main'>$year</p></div>";
    
    $image_path = $_SERVER['DOCUMENT_ROOT'] . '/images/diploma/';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/vendor/mpdf60/mpdf.php';
    $mpdf = new mPDF();
    $mpdf->img_dpi = 300;
    $mpdf->SetImportUse();
    $mpdf->SetSourceFile($image_path . 'Diplom_' . $diploma . '.pdf');
    $tmpl = $mpdf->ImportPage();
    $mpdf->UseTemplate($tmpl);
    $mpdf->charset_in = 'cp1251';
    $mpdf->WriteHTML($css, 1);
    $mpdf->WriteHTML($html_text, 2);
    $mpdf->facsimile = file_get_contents($image_path . 'facsimile_600.png');
    $mpdf->Image('var: facsimile', $fac_x, $fac_y, '50%', '50%');
    $mpdf->Output('diploma.pdf', 'I');
    Ответ написан
    1 комментарий
  • Есть ли бесплатный принтер pdf с поддержкой ssl?

    Adamos
    @Adamos
    www.pdfforge.org/pdfcreator - заявлено, что умеет нужные вам плюшки.
    Сам не пробовал.
    Ответ написан
    Комментировать
  • С++ или backend?

    Adamos
    @Adamos
    Бэкенд на PHP. Rлиент для PC/iOS/Android, дергающий API этого бэкенда - на "крестах".
    Почему "или"?!
    Ответ написан
  • Как переписать данный кусок кода, написанного на Python, на C++?

    Adamos
    @Adamos
    vector<vector<int>> Precalculate(int n, int  k, vector<int> &s) {
      int d = 0;
      vector<vector<int>> a(n, vector<int> (1, 1));
      int totalSum = 1;
      int maxValue = k;
      while (d < 9 * n && totalSum <= maxValue) {
        d++;
        vector <int> ad(n, 0);
        int last = s[n - 1];
        int tmp = 0;
        if (last - d >= 0) {
          tmp++;
        }
        if (last + d <= 9) {
          tmp++;
        }
        cout << tmp << endl;
        ad[n - 1] = tmp;
        a.push_back(ad);
        for (int j = n - 2; j > -1; j--) {
          int sum = 0;
          for (int m = 0; m < 10; m++) {
            tmp = d - abs(s[j] - m);
            if (tmp >= 0) {
              sum += a[tmp][j + 1];
            }
          }
          ad[j] = sum;
        }
        totalSum += ad[0];
      }
      return a;
    }

    Главная ошибка - место создания ad: в питоне внутри цикла, а в сях почему-то снаружи.
    Ответ написан
    2 комментария
  • Английский в первую очередь?

    Adamos
    @Adamos
    Учить английский параллельно? Конечно.
    Учить английский, читая учебник по незнакомому языку программирования? Классическое "за двумя зайцами".
    Так вы не выучите ни английский, ни целевой язык.

    Освойтесь с языком, хотя бы с азами, по русскому учебнику.
    Начните писать. У вас появятся вопросы.
    Гуглите, стараясь составить вопрос на английском и пытаясь понять, что по этому поводу говорят на английском же SO, например. Вот и будет вам практика.
    Ответ написан
  • Как ускорить работу сайта (алгоритм расчета ближайшего цвета по известной палитре цветов)?

    Adamos
    @Adamos
    В приведенной вами в комментариях функции явно не хватает двух вещей:
    1. Кэширования, чтобы не повторять расчет для того цвета, который уже был обсчитан. Предвижу рост скорости на пару порядков.
    2. Понимания того, что для нахождения ОДНОГО оптимального значения на хрен не нужно собирать целый массив и сортировать его. Вы никогда не видели алгоритм поиска наименьшего значения в массиве?
    Ответ написан
  • Быть узкоспециализированным или разносторонним? Что лучше?

    Adamos
    @Adamos
    "Не могу определиться, в каком спорте стать чемпионом - или сразу замахиваться на триатлон. Так напряженно об этом думаю, что даже зарядку сделать некогда!"
    Ответ написан
    Комментировать
  • Как выбрать элемент из массива с разным весом вероятности?

    Adamos
    @Adamos
    $sum_weight = 0;
    foreach($values as $value) {
      $sum_weight += $value['procent'];
    }
    $rest = rand(0, 100500) / 100500 * $sum_weight;
    $result = false;
    foreach($values as $value) {
      if($value['procent'] >= $rest) {
        $result = $value['value'];
        break;
      }
      $rest -= $value['procent'];
    }
    Ответ написан
    Комментировать
  • Какой подход к компиляции кода считается самым лучшим? Через дефайны, передаваемые в билдовый скрипт, создание нескольких бинарников и т.д.?

    Adamos
    @Adamos
    4. Вынос всех функций, зависящих от железа, в динамические библиотеки.
    При старте определяется железо и подключаются нужные либы.
    Особенно актуально, если железо включено не постоянно или может измениться по ходу работы.
    Ответ написан
    Комментировать
  • Как недостатки блокчейн повлияют на эффективность деятельности предприятий?

    Adamos
    @Adamos
    Тоже пытался понять, что за шум, и понял так.
    Блокчейн - технология, позволяющая гарантировать, что:
    1. вот этот кусок данных здесь появился не просто так
    2. он и сейчас точно такой, как в момент появления.
    Это, собственно, единственное достоинство технологии.
    Дальше к нему примешивают:
    3. возможность хранить данные где попало - мы же можем гарантировать, что они не были изменены. Однако тут же встает вопрос - а кто и зачем будет этим заниматься? Криптовалюты дают ответ на этот вопрос. Распределенные системы внутри банка или между банками - тоже, при наличии у самих банков такого интереса.
    Сажать на это целую отрасль - а ради чего, собственно? Никаких революционных решений блокчейн не предполагает, это чистое паразитирование на модной теме.

    Проблемы конфиденциальности и прочие возникающие у новичков вопросы, на самом деле, не критичны - хранящиеся в блокчейне данные могут быть сколь угодно открытыми, но если эти данные зашифрованы и открываются только ключом, разница с БД, доступ к которой требует ровно того же ключа-пароля, минимальна.
    Изменение данных в блокчейне просто предполагает добавление новой, изменяющей записи. То, что сохраняется и неверная - ну, Википедии это не мешает, например.
    Картельный сговор крупных игроков, имхо, менее вероятен, чем очередной взбрык бешеного принтера. Да и примитивно это - им-то как раз в последнюю очередь нужно ломать работающую систему.
    Мертвые ветви, конечно, должны отсекаться и уничтожаться. Но ведь и данным необязательно быть непрерывными цепочками. Создаем узловые блоки доверия - и можем "ронять" все, что было между ними. Или дерево из цепочек, растущих независимо друг от друга.
    Вообще, многие проблемы надуманы из-за непонимания места блокчейна в системе. Это глубокий уровень, хранение данных. Над ним может быть чертова уйма надстроек, так же, как над БД. Главное - сформулировать требования. "Спаси нас, блокчейн, от лукавого" - это не требование, если что ;)
    Ответ написан
    2 комментария
  • Почему Линус не пользуется Debian?

    Adamos
    @Adamos
    Если бы у вас была такая же работа, как у него - вы бы подобных вопросов не задавали вовсе.
    А раз задаете, значит, работа у вас другая и выбор дистрибутива под нее - тоже по другим критериям.
    Ответ написан
    Комментировать
  • Какие есть сайты для проверки своих знаний PHP?

    Adamos
    @Adamos
    Во-первых, знание чего бы то ни было в IT без практики - фуфло.
    Во-вторых, достаточно и во-пераых ;)
    Ответ написан
    Комментировать
  • Как проанализировать код большого проекта на PHP на наличие неиспользуемых кусков кода и файлов?

    Adamos
    @Adamos
    Если файлы в проекте подключаются исключительно по PSR - анализаторы, может, и помогут.
    Но РНР никому не мешает подключать их через отдаленные глубины задниц, как шаблоны и локализация в Битриксе, например. Ни один робот эти дебри не расковыряет в жизни.
    Так что пробуйте анализаторы, конечно. Но не надейтесь, что вы по результатам анализа сможете просто все выбранное взять и безболезненно удалить. Головой думать все равно придется.
    Например, тот же Шторм позволяет сделать быстрый поиск строки по всему проекту. И если название класса не встречается нигде, кроме файла с этим классом - да, возможно, он кандидат на удаление...
    Ответ написан
    8 комментариев
  • Как распарить сложный exel файл?

    Adamos
    @Adamos
    ТРИЗ гласит: "сделай наоборот".
    Файл вовсе не придется парсить, если расписание будет формироваться онлайн, а подобные таблички "для людей" будут формироваться на сайте, а не руками секретарей.

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

    Кстати, за этим первым шагом могут логично последовать дальнейшие - расписание работы преподов, график занятости аудиторий... Информация-то единая.
    Ответ написан
  • Как не умудрённому клиенту выбрать честного и эффективного SEO-оптимизатора для своего сайта? Есть ли чек-лист по выбору сеошника?

    Adamos
    @Adamos
    Сейчас пришло такое странное время, что люди, собравшись полечить зубы, лезут в интернет. Нет, не найти какой-то там сайт - ближайшие клиники легко находятся, даже если у них вовсе сайта нет.
    Почитать отзывы! ;)
    Вот тут понимающий сеошник уже может разгуляться... хотя, пожалуй, не совсем сеошник. Или даже - совсем не.
    Ответ написан
    Комментировать
  • Как инициализировать массив массивов массивов?

    Adamos
    @Adamos
    Если накладные расходы некритичны - вложенный вектор.
    Если хочется оптимально - класс с двумя функциями set / get и конструктором, в который передаются размеры. Внутри хранятся размеры и плоский динамический массив, номер ячейки в котором элементарно вычисляется при каждом обращении.
    Ответ написан
  • Как собственнику удержать клиентов при увольнении РОПа?

    Adamos
    @Adamos
    Теоретически, если у вас база клиентов и материалы по общению с ними, а также данные всех сделок крутятся в CRM и за ними может следить любой грамотный руководитель - важность РОПа в основном не в общении с клиентами, а в управлении отделом.
    Если же у вас без РОПа никто ничего сделать не может - удерживать придется именно его, а не клиентов ;)
    Ответ написан
    Комментировать
  • Как обеспечить соблюдение закона о персональных данных для сайта с обратной связью?

    Adamos
    @Adamos
    Публичная оферта - это немного другое. Вы имеете в виду политику конфиденциальности.
    На сайте ее желательно иметь, особенно если в ней честно написано, что вы используете данные только для функционирования открыто заявленных пользователям служб самого сайта и не передаете их третьим лицам.
    В этом же случае, подозреваю, любой грамотный юрист докажет, что заполнение пользователем полей со своими ПД в форме на сайте не может означать ничего иного, кроме согласия пользователя на обработку этим сайтом этих данных. Но можно и явно подписать это под формой (со ссылкой на ПК) или даже сделать чекбоксом, если вам так пригорает и вы реально верите, что кто-то вдруг будет иметь именно к вам, а не ко всему остальному интернету, претензии именно по этим статьям.

    А вот если вы все-таки сливаете данные пользователей спамерам или прочей сволочи - то горите в аду, кто ж вам помогать-то будет?!! ;)
    Ответ написан
    1 комментарий