• Установка старой версии PHP (5.4) на Debian 9?

    @ShamblerR
    Только что проверял
    apt-get update
    apt-get install -y libfcgi-dev libfcgi0ldbl libjpeg62-dbg libmcrypt-dev libssl-dev libxml2-dev zlib1g-dev libcurl4-gnutls-dev libjpeg-turbo8-dev libbz2-dev libjpeg-dev libfreetype6-dev libmcrypt-dev libcurl4-gnutls-dev
    ln -s /usr/include/x86_64-linux-gnu/curl curl
    
    cd /usr/local/include
    mkdir /opt/php-5.4.45
    mkdir /usr/local/src/php5
    cd /usr/local/src/php5
    wget http://de2.php.net/get/php-5.4.45.tar.gz/from/this/mirror
    mv mirror php-5.4.45.tar.gz
    tar -xzvf php-5.4.45.tar.gz
    cd php-5.4.45
    ./configure --prefix=/opt/php-5.4.45 --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --enable-mbstring --enable-sockets --enable-exif --enable-bcmath --enable-calendar --enable-zip --enable-ftp --enable-gd-native-ttf --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-freetype-dir --with-zlib --with-zlib-dir --with-bz2 --with-mcrypt --with-mhash --with-pcre-regex --with-libxml-dir=/usr --with-xmlrpc --with-xsl --with-mysql --with-libdir=/lib/x86_64-linux-gnu --with-curl
    make
    make install



    /opt/php-5.4.45/bin/php -v
    PHP 5.4.45 (cli) (built: Mar 12 2019 20:05:50)
    Copyright (c) 1997-2014 The PHP Group
    Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
    Ответ написан
    Комментировать
  • Установка старой версии PHP (5.4) на Debian 9?

    nazarpc
    @nazarpc
    Open Source enthusiast
    Используйте Docker и запускайте старую версию PHP в контейнере.
    Ответ написан
    Комментировать
  • Как получить элемент, по которому кликнули (js)?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Проявите любопыство! Напишите простой обработчик клика, который выведет в консоль получаемые параметры:
    document.addEventListener('click', function(){ console.log(this, arguments); });

    Посмотрите, что туда попадает при клике по разным кнопкам.

    Кроме того, если обработчик вешать не на document, а непосредственно на каждую из кнопок, внутри обработчика this будет тем самым кликнутым элементом.
    Ответ написан
    Комментировать
  • Что такое Less и Sass?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Лень двигатель прогресса. Хороший пример - принцип DRY - Don't repeat yourself. Я весьма подозреваю что вы стараетесь соблюдать этот принцип когда делаете макеты или чем вы там занимаетесь. Так же я весьма уверен что вы хотя бы пытались чуть автоматизировать рутину своей повседневной работы. Так же у вас могли быть ситуации когда вы переиспользовали какие-то элементы. Мало ли.

    Так вот... CSS это тупая таблица стилей. Селектор и стили, ничего сверх умного тут придумать нельзя. Лет 5-10 назад было довольно модно держать один мегажирный CSS файл на 10К+ строк и радоваться жизни внося все больше изменений и т.д. Соответственно даже если вы соблюдаете всякие правила модульной верстки и все такое, у вас возникает несколько проблем:
    • организация стилей, то есть держать все в одном файле не удобно особенно когда проект длится годами
    • Дублирование стилей и селекторов. По мере развития проекта появляются какие-то снипиты которые можно реюзать. Так же у вас может появиться масса однообразных селекторов отличающихся лишь немного. При модульных подходах вложенности редко имеет место быть но все же имеет. Но не будем забывать что большинство фигачит селекторы просто так. В итоге если мы переместили блок или переименовали класс какого-то блока нужно отредактировать еще массу селекторов.
    • Привязка размеров и параметров к другим стилям, например у вас в стилях задана ширина блока, от нее зависят другие параметры, отступы для других блоков и т.д. Да, в css3 появился calc для этого но это было относительно недавно и только с недавних пор можно почти без опаски использовать эту штуку.
    • Таблицы стилей, как и HTML ориентированы на удобный разбор этого добра машиной, но не человеком. Человек же существо ленивое и как-то вот лень лишний раз скобку поставить или точку с запятой. Просто лень.


    Есть так же хорошее правило, или идея если хотите.... Если код можно сгенерить - его лучше сгенерить. То есть для решения всех выше перечисленных проблем придумали препроцессоры. Они как бы были и раньше всех этих scss/less/stylus но как-то не решали всех проблем и т.д. Что в итоге было предложено (перечисляю в том же порядке что и в списке выше).

    • У CSS есть такая штука как @ import. Но не очень круто импортировать сотню стилей в продакшене. Стоит сделать так что бы все стили были склеены при сборке проекта. Эта идея в итоге развилась и если разработчик использует это дело правильно, можно зайти в любой файл со стилями и увидеть список всего от чего зависят эти стили. Какие стили подключаются и т.д. Причем один файл с зависимостями может быть подключен в нескольких файлах а препроцессор сам разберется как и куда все вставлять сгенерив максимально оптимизированный по структуре файл. А разработчик получил четкую структуру файлов и возможность быстро найти где что и от чего зависит.
    • С селекторами проблему предложили решить наиболее логичным вариантом. Если у нас есть вложенные селекторы, то имеет смысл определять их внутри блока этого селектора. Это существенно упрощает поддержку стилей. Так же для управления снипитами и прочим добавили миксины - эдакие параметризованные или нет функции которые выплевывают шматок CSS. До появления штук вроде autoprefixer это был единственный способ писать поддерживаемые стили, использовать плюшки CSS3 и вообще новые плюшки и не сойти с ума от префиксов. Префиксы это только пример, там могут быть самые разные штуки позволяющие грамотно производить реюз стилей
    • Проблему зависимостей значений стилей друг от друга решили... собственно самым очевидным способом - переменные. Это удобно, легко поддерживать и в умелых руках это мощный инструмент. Нужно поменять базовые цвета - не нужно лазить по 100500 блоков и править значения руками, можно поправить переменные и все будет хорошо.
    • Насколько я помню SCSS/LESS не стремились решить эту проблему. Какие-то решения образовывались сами собой с течением времени. В плане минимализма и выразительности пожалуй сейчас самая крутая штука это stylus.


    Что в итоге произошло. В один прекрасный момент какие-то там рубисты придумали SCSS (они вообще не любят все что не в стиле ruby в плане минимализма и выразительности). Затем чуваки подумали и сказали, SCSS это круто но почему-то они используют синтаксис знакомый именно Ruby разработчикам а не обычные для CSS конструкции. В итоге реализовали LESS, причем его уже реализовали на javascript, что с наличием node.js позволило это все добро еще на одной платформе собирать. А так как под эту платформу и так плодили препроцессоры оно удачно вписалось.

    Далее уже шли какие-то модификации дальнейшие, вроде того же Stylus, где синтаксис упростили просто до нельзя.

    Личное мнение. На сегодняшний день я не вижу смысла использовать чистый CSS хоть на малых хоть на больших проектах. Вот вообще никакого.
    Ответ написан
    3 комментария
  • Скаченные библиотеки не работают в PyCharm. Как настроить PyCharm?

    @elZiga Автор вопроса
    Короче сам спросил сам ответил:
    Я нашел как можно это исправить (но это не точно, в моем случае помогло):
    1. В редакторе открываем терминал View=>Tools Windws=>Terminal (сделайте как показана на картинке) или зажимаем Alt и F12 (тоже можно увидеть на картинке)
    2. У нас выйдет в низу что то похожее на кансол
    3. Пишем туда команду pip install xlrd вместо xlrd пишете свою библиотеку, которую установили (но у вас она не работала) или хотите установить
    5af0930e4033f938405530.png
    Ответ написан
    Комментировать
  • Будущее за JS или еще не всё потеряно?

    DevMan
    @DevMan
    не читайте по утрам советских газет.

    Скоро, скоро, благодаря серверному JS у серверных приложений тупо ничего не останется кроме последнего выбора — сдаться. Ну просто так сложилось, что ничто не в состоянии составить конкуренция JS. Питон и Руби могут попытаться, но вряд ли )
    https://habr.com/post/106274/#comment_3341256
    прошло уже 8 лет....

    один игрок на рынке - это стагнация. доказано историей не раз.
    Ответ написан
    Комментировать
  • Как переопределить if в python?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Прежде всего хочу заметить, что настолько больших возможностей по расширению языка, как в Lisp'ах, никакой другой язык не предоставляет. Но в некоторых языках, в том числе в Python, можно немного поколдовать с кодом на этапе его разбора.

    dumb_translator.py
    import ast
    import sys
    
    class DumbLisp(ast.NodeTransformer):
        def fix(self, source, result):
            ast.copy_location(result, source)
            ast.fix_missing_locations(result)
            return result
    
        def visit_Expr(self, node):
            if isinstance(node.value, ast.Tuple):
                t = node.value
                if isinstance(t.elts[0], ast.Name):
                    if t.elts[0].id == 'newif':
                        _else = [ast.Expr(value=t.elts[3])] if len(t.elts) == 4 else []
                        _if = ast.If(test=t.elts[1],
                                    body=[ast.Expr(value=t.elts[2])],
                                    orelse=_else)
                        self.generic_visit(_if)
                        return self.fix(node, _if)
                    elif t.elts[0].id == 'define':
                        assign = ast.Assign(targets=[ast.Name(id=t.elts[1].id, ctx=ast.Store())],
                                            value=t.elts[2])
                        return self.fix(node, assign)
                    else:
                        call = ast.Expr(value=ast.Call(func=t.elts[0], args=t.elts[1:], keywords=[]))
                        return self.fix(node, call)
            return node
    
    
    with open(sys.argv[1]) as fh:
        tree = ast.parse(fh.read())
        DumbLisp().visit(tree)
        code = compile(tree, filename=sys.argv[1], mode="exec")
        exec(code)

    test.dl
    (define, a, 1)
    
    (newif, a == 1, (print, 'Yes'), (print, 'No'))

    Запускаем
    python dumb_translator.py test.dl

    Естественно, пример предельно простой, а потому в качестве s-форм приходится использовать кортежи. Но есть полноценный фронтенд компилятора Python, транслирующий в python-байткод диалект Lisp близкий к Clojure - Hy.
    Ответ написан
    1 комментарий
  • Как получить массив файлов из определённой директории?

    rockon404
    @rockon404
    Frontend Developer
    На стороне севрвера:
    const fs = require('fs');
    
    fs.readdir('./folder', (err, files) => {
      files.forEach(file => {
        console.log(file);
      });
    })

    fs.readdir
    Ответ написан
    Комментировать
  • Как в iframe передать значение переменной?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    передать его через GET параметр?

    href: "/fitting/tryon.php?id=". arResult['ID'] ?
    Ответ написан
    2 комментария
  • Нужен ли диплом для устройство на работу программистом или важны знания?

    Spetros
    @Spetros
    IT-шник
    Для программиста важны навыки.
    Но если навыков нет, то нужен.
    Конкретно в вашем случае, диплом нужен - так как навыки поиска информации очень важны для программиста.
    https://toster.ru/search?q=%D0%B4%D0%B8%D0%BF%D0%B...
    Ответ написан
    Комментировать
  • Настраивать DMARC/SPF/DKIM нужно на dns-хостинге или на почтовом сервере?

    Sanes
    @Sanes
    spf/dkim/dmarc на DNS
    dkim ключ генерируется на почтовом сервере
    В яндексе откройте редактор DNS там будет ключ. И делайте CNAME запись для mail
    Ответ написан
    2 комментария
  • Настраивать DMARC/SPF/DKIM нужно на dns-хостинге или на почтовом сервере?

    Изменения следует вносить в действующий DNS. На Яндекс у вас не делегирован домен, а значит настройки DNS там не применяются
    Ответ написан
    Комментировать
  • Как победить ошибку?

    copist
    @copist
    Empower people to give
    Посмотри лог ошибок на сервере - скорее всего была ошибка (исключение), которое в результате было отображено в формате HTML, а не JS или JSON

    Посмотри панель "Network" в Google Chrome - там возможно будет запись с кодом 4xx или 5xx - это ошибка
    5737225ce9db431faf67c054f2d2fffa.png

    И посмотри на текст ответа - там может быть HTML вместо JS
    ed296226618d458ba43dadaa33f29481.png
    Ответ написан
    Комментировать
  • Кем можно пойти работать после программиста?

    @f9k56
    А зачем вам сидеть по 10 -15 часов, при почасовой оплате 4 часов на жизнь достаточно. Хотите восстановить зрение меняйте режим. Измените структуру питания. 2 дня в неделю совсем без пк, лучше на природе. Переедьте за город, выхлопные газы вредят глазам, про отравление организма говорить нечего. Легкие физ нагрузки в режиме без фанатизма. Организм человека потрясающая вещь имеющая функцию самовосстановления, просто не нужно его каждый день убивать.
    Ответ написан
    6 комментариев
  • Как бы Вы организовали синхронизацию внешней базы данных с OpenCart?

    arutyunov
    @arutyunov
    Mooza.ru — Делаем сайты
    Зависит от количества товаров. Если их не очень много, то просто кроном можно обновлять.
    Если товаров много, то надо искать другие пути - например, обновлять по частям.

    Как часто в приложении меняются данные, которые надо на сайт выгружать?
    Ну и т.к. у Опенкарта нет нормального api, то надо будет написать некоторую прослойку, которая будет искать/обновлять/добавлять товары. Модели там есть, конечно, но мне было крайне неудобно с ними работать при написании модуля для импорта товаров - слишком неудобно подавать туда данные.
    Ответ написан
    2 комментария
  • Есть ли годный учебник по opencart для разработчиков?

    @amfetamine
    Я начинал отсюда s-engineer.ru/struktura-opencart
    Там есть еще странички, когда разобрался с этим всем, тогда все и понеслось.
    А вообще годного мануала нет, но по частичкам в сети информацию найти можно по многим вопросам.
    Ответ написан
    Комментировать
  • Существуют ли операционные системы сделанные в России?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Операционная система без приложений, практически никому не нужна. Операционная система, которая будет полностью поддерживать приложения, написанные для другой операционной системы - огромнейшая, практически неподъемная работа.

    Что подразумевается под российским аналогом Ubuntu?
    Видимо у вас недостаток информации в том, что такое дистрибутив Linux, ибо ядро линукс общее для всех Линуксов, а дистрибутив разный.
    Кроме того, Linux - открытый код, никаких запретов на него быть не должно. Другой вопрос, что ПО под Linux не так много.
    Если кому-то не нравится кем финансируется Линукс - форкаете исходники и допиливаете свою - никто не запрещает. Просто если государство это хочет контролировать - пусть финансирует разработку, нанимает программистов, обеспечивает мощностями для поддержки репозитариев, для документации, для комьюнити.

    Возможно вас заинтересует отечественный проект ReactOS, как один из самых свободных проектов, с замахом на запуск windows приложений - на Хабре про него отписываются в блоге. Уже на уровень 98 винды и даже дальше вышли успешно, и поддерживают виртуализацию.

    Что же касается аналогов MacOS и Windows, обратите внимание на размер и прибыль Microsoft и Apple. Как вы думаете, в РФ реально может открыться и существовать такой проект, или его быстро подомнут под себя определенные структуры?

    Вдобавок, любая частная разработка, включая отечественную, очень легко может быть продана зарубеж, или поменять юрисдикцию.
    Ответ написан
  • Существуют ли операционные системы сделанные в России?

    GaneevRR
    @GaneevRR
    Вместо спасибо отмечайте Нравится
    Kolibri но она продолжение MinuetOS. Но и различные дистрибутивы на ядре Linux, AstraLinux например
    Ответ написан
    Комментировать
  • Что будет если сделать алиас ya.ru на свой домен?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    В своей зоне Вы можете хоть черта прописать - только никто за резолвом ya.ru в Вашу зону не обратится. А к файлам той зоны, где нужно прописать, и к которой обращаются - у Вас доступа нет - ее контролирует либо Яндекс, либо его регистратор.
    Ответ написан
    Комментировать