Задать вопрос
  • Как устанавливать глобальное значение max_user_connections в mysql при загрузке (в Debian/Linux)?

    suguby
    @suguby
    программист, python, django, mysql, git, hg, linux
    https://dev.mysql.com/doc/refman/5.5/en/server-sys...
    Судя по описанию можно установить как глобально (для сервера) так и сессионно (для одного клиента)
    Оттуда же:
    System variables can be set at server startup using options on the command line or in an option file. Most of them can be changed dynamically while the server is running by means of the SET statement, which enables you to modify operation of the server without having to stop and restart it.
    То есть или прописывайте в my.cnf (какая у вас ось?) и перестартовываете сервер, или в соединении пишите
    SET SESSION max_user_connections = 123;
    https://dev.mysql.com/doc/refman/5.5/en/set-statem...
    Ответ написан
    5 комментариев
  • Разница между background: url('...') и background: url(...)?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Если в значении функционала url() не присутствуют пробельные символы (пробелы, табуляция, переносы строк), кавычки и скобки, то разницы нет никакой.
    Пример — ссылка, data:uri в кодировке base64.

    Update: После обсуждения с Алексей Уколов внёс коррекцию

    Если же в значении могут появиться пробельные символы, кавычки и скобки, то при отсутствии обрамляющих кавычек их нужно экранировать (каждый символ).
    Если же обрамляющие кавычки есть, то экранировать нужно только внутренние кавычки в том случае, если они аналогичны обрамляющим. Если же обрамляющие и внутренние кавычки разные (например, внутри двойные, снаружи одинарные и наоборот), то никаких дополнительных действий не требуется.
    Пример — data:uri в кодировке utf8.

    Спецификация:
    Parentheses, whitespace characters, single quotes (') and double quotes (") appearing in a URL must be escaped with a backslash so that the resulting value is a valid URL token

    Пример jsfiddle.net/petroveg/cexbhq4e/6

    8192c6b0c21d43afa0b9b164af297655.png
    Ответ написан
    Комментировать
  • Кем можно работать, учась на программиста?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Менеджером проектов.
    Ответ написан
    6 комментариев
  • Выбор платформы для небольшого интернет-магазина?

    @maxyc_webber
    Web-программист
    стандартный функционал битрикса. Можно найти в маркетплейсе уже готовый магазин максимально подходящий под ваши требования. купить его и не париться.
    Ответ написан
    Комментировать
  • Откуда взялись лишние отступы при верстке макета?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Никакой CSS3 тут не причём. И вообще — забудьте вы про номер. Никакого отношения к делу это не имеет.
    Смотрим https://jsfiddle.net/petroveg/exfj3L1c/1/

    Читайте:
    1. Про то, какие есть стили по умолчанию.
    2. Про блочную модель и, в частности, про margin-collapse.
    3. Про псевдоэлементы.
    4. Про шрифты.


    Замечу, что даже в версии 2.1 есть всё, что нужно было знать в вашем случае. Единственное, чего там точно нет — flex, но я бы пока на вашем месте обошёлся float:left.
    Ну и классы, классы — не нужно писать правила с использованием в селекторах исключительно имён тэгов.

    Update: Каждый второй пишет про сброс margin. Кто-то советует только для body и p, радикалы вообще для всего. Как это даст знания про margin-collapse? Эти советы — как красить ржавчину.
    Ответ написан
    8 комментариев
  • Как переписать класс?

    @SlivTime
    Я бы сделал так. Переменную endpoint, конечно, можно не инициализировать, а сразу передавать строку в вызов _call_with_endpoint. Но так нагляднее.

    class Vehicle(API):
        def _call_with_endpoint(self, lang, fields, account_id, endpoint):
            if type(fields) is list:
              fields = self._format_fields(fields)  
            return self._api_call(endpoint=endpoint,
                                  fields=fields,
                                  language=lang,
                                  account_id=account_id)
    
        def vehicle_stats(self, lang='ru', fields='', account_id=''):
            endpoint = '/tanks/stats/'
            return self._call_with_endpoint(lang=lang,
                                            field=fields,
                                            account_id=account_id,
                                            endpoint=endpoint)
            
    
        def vehicle_achievements(self, lang='ru', fields='', account_id=''):
            endpoint = '/tanks/achievements/'
            return self._call_with_endpoint(lang=lang,
                                            field=fields,
                                            account_id=account_id,
                                            endpoint=endpoint)
    Ответ написан
    Комментировать
  • Как разобрать регулярное выражение?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Весь (и он же единственный) изюм — \1, что означает найденную ранее строку (ссылка на первый шаблон) (\w).
    Итог — условию удовлетворяет строка, не содержащая нескольких одинаковых символов (латинской буквы в любом регистре, арабской цифры или знака подчёркивания), и находящихся в любом её месте.
    Ответ написан
    8 комментариев
  • Что быстрее C++ или Java (вывод строк в консоль)?

    angry_cellophane
    @angry_cellophane
    Ребята, я вам покушать принёс. Открываем специальную олимпиаду.
    :~/src/cpp_time_test$ cat /proc/cpuinfo 
    processor	: 0
    vendor_id	: GenuineIntel
    cpu family	: 6
    model		: 23
    model name	: Intel(R) Core(TM)2 Duo CPU     T6600  @ 2.20GHz
    stepping	: 10
    microcode	: 0xa07
    cpu MHz		: 1200.000
    cache size	: 2048 KB
    physical id	: 0
    siblings	: 2
    core id		: 0
    cpu cores	: 2
    apicid		: 0
    initial apicid	: 0
    fdiv_bug	: no
    hlt_bug		: no
    f00f_bug	: no
    coma_bug	: no
    fpu		: yes
    fpu_exception	: yes
    cpuid level	: 13
    wp		: yes
    flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm dtherm
    bogomips	: 4389.29
    clflush size	: 64
    cache_alignment	: 64
    address sizes	: 36 bits physical, 48 bits virtual
    power management:
    
    processor	: 1
    vendor_id	: GenuineIntel
    cpu family	: 6
    model		: 23
    model name	: Intel(R) Core(TM)2 Duo CPU     T6600  @ 2.20GHz
    stepping	: 10
    microcode	: 0xa07
    cpu MHz		: 1200.000
    cache size	: 2048 KB
    physical id	: 0
    siblings	: 2
    core id		: 1
    cpu cores	: 2
    apicid		: 1
    initial apicid	: 1
    fdiv_bug	: no
    hlt_bug		: no
    f00f_bug	: no
    coma_bug	: no
    fpu		: yes
    fpu_exception	: yes
    cpuid level	: 13
    wp		: yes
    flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm dtherm
    bogomips	: 4389.29
    clflush size	: 64
    cache_alignment	: 64
    address sizes	: 36 bits physical, 48 bits virtual
    power management:

    :~/src/cpp_time_test$ lsb_release -a
    No LSB modules are available.
    Distributor ID:	Ubuntu
    Description:	Ubuntu 13.04
    Release:	13.04
    Codename:	raring

    ~/src/cpp_time_test$ java -version
    java version "1.7.0_51"
    Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
    Java HotSpot(TM) Server VM (build 24.51-b03, mixed mode)
    ~/src/cpp_time_test$ g++ --version
    g++ (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3

    Замеры проводились всего по паре раз, ибо лень, так что присутствует некоторая погрешность. Прошу простить и понять.
    Java:
    time java Main
    real   5m38.489s
    user   0m30.184s
    sys   0m56.864s

    C++
    int main() {
    
        for (int i = 0; i < 10000000; i++) {
    
            printf("Number = %i \n", i);
        }
    
        return 0;
    }

    g++ -O2 origin_main.cpp -o origin_main.o
    time ./orinig_main.o
    real   5m54.260s
    user   0m7.700s
    sys   0m36.768s

    Надеваем мокасины скорости:
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
      for (int i=0; i < 10000000; i++)
        {
          cout<<"Number = "<< i << '\n';
        }
      return 0;
    }

    g++ -O2 main.cpp -o main.o
    time ./main.o
    real   5m35.629s
    user   0m8.424s
    sys   0m37.408s

    Пробуем магию:
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
      static char buffer[1024*1024*4] ;
      std::cout.rdbuf()->pubsetbuf( buffer, sizeof(buffer) ) ;
      ios_base::sync_with_stdio(false);
      for (int i=0; i < 10000000; i++)
        {
          cout<<"Number = "<< i << '\n';
        }
      return 0;
    }

    g++ -O2 main.cpp -o main.o
    time ./main.o
    real   5m35.555s
    user   0m3.568s
    sys   0m22.688

    Добавим в топку Java печки дровишек:
    public class Main {
        public static void main(String[] args) throws IOException {
            try (BufferedOutputStream bos = new BufferedOutputStream(System.out, 2 << 22)) {
                try (PrintWriter pr = new PrintWriter(bos, false)) {
                    int i = 0;
                    for (int j = 0; j < 10_000; j++) {
                        for (int k = 0; k < 1000; k++) {
                            pr.write("Number = " + i++ + '\n');
                        }
                        pr.flush();
                    }
                }
            }
        }
    }

    time java -XX:LoopUnrollLimit=42000000 -XX:+AggressiveOpts -Xmx512m -Xms256m  -XX:+OptimizeStringConcat -XX:CompileThreshold=200 Main
    real   5m35.963s
    user   0m4.408s
    sys   0m23.456

    На этом и остановимся, так как это может продолжаться бесконечно.
    Вывод: искусственный тест не показатель, и все сложно.
    Самый главный вывод: не пристало воспитанному джентельмену мериться скоростью, размером и количеством.
    Ответ написан
    Комментировать
  • Каким должен быть адрес у админки?

    zo0m
    @zo0m
    full stack developer
    в вк, фейсбуках и прочем, даже не одна админка, и вход в нее вряд ли через интернет возможен.

    а вообще адрес без разницы, выбирайте чтоб пользователям было удобно,

    "спрятать" урл - это не средство защиты, разве что от дурака, но он дальше застопорится на вводе логина и пароля.
    Ответ написан
    Комментировать
  • Как активировать input file поля с помощью click()?

    Romanche
    @Romanche
    Жизнь–игра. Задумано плохо, но графика потрясная!
    е мае ответ то прост - кнопка субмитит форму )
    Для того что бы не было субмита
    $(function () {
        $("#formUploadBtn").click(function () {
            $("#formInput").click();
            return false;
        });
        $('#formInput').change(function () {
            $('#test_form').submit();
        })
    });


    jsfiddle.net/mLgeLtgy
    Ответ написан
    4 комментария
  • Что будут дальше требовать от PHP программиста? К чему все движется?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вот охота было придраться к одной левой вакансии, которую составила, не разобравшись, дурочка-эйчар. Потрать свою жизнь на что-нибудь более полезное.

    У тебя есть полное право не отзываться на эту вакансию, а отозваться на другую.
    Ответ написан
    2 комментария
  • Как выбрать из нескольких разработчиков и что делать с рисками?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Есть 3 кандидата, по описанному в резюме стеку технологий подходят. Как среди них выбрать самого квалифицированного?


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

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

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

    запороть что-нибудь

    Вы знаете людей, которые никогда не делали ошибок?)) Что бы не запороть есть комплекс мер: контроль версий, разработка только на локальной машине, авто тестирование, анализаторы кода, автоматические миграции баз данных, CI системы и т.д. Если же у вас все работы выполняются на боевом сервере - не обижайтесь, но ваш проект изнутри говно.

    взять проект под свой контроль

    Вы шутите?)) Если программист не будет иметь прав работы с кодом - он не сможет ее выполнять. Это как надеть смирительную рубашку на водителя и посадить его за руль.

    Вы в любом случае связаны с рисками, правильно составьте договор. Платите достойную ЗП и в срок. Доверяйте его решениям, по реализации кода, для этого собственно вы его и наняли.
    Не ставьте над ним кучу менеджеров - профита от этого не будет.
    Не оценивайте его работу по тому, что он непосредственно делает (само написание кода обычно только 10% рабочего времени, остальное в большей части - "думалка"), оценивайте результат.
    Ответ написан
    Комментировать
  • Изменение цвета при наведении. Что не так?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    jsfiddle.net/IonDen/7cfhftsk/1 - так будет работать.
    К тому же, вы неправильно используете mousemove, он нужен для другой ситуации. Вам же нужен mouseenter.

    По поводу аргументов true и false. Это параметр отвечающий за направление распространения события (false - всплытие, стандарт и true - захват), это довольно сложная концепция для новичка, по этому для начала примите для себя за данность, что этот параметр всегда должен быть false.

    Подробнее об addEventListener: https://developer.mozilla.org/ru/docs/Web/API/Even...
    Подробнее о всплытии/захвате: habrahabr.ru/post/126471
    Ответ написан
    Комментировать
  • Код PHP работает, но правильно ли?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Хорошо что ты спросил.
    Попробуем посчитать ошибки
    1. SQL инъекция (в реальном, а не игрушечном коде)
    2. пропуски в подсчетах. (пока ты в скрипте прибавлял, там уже двое прибавили, а ты обратно только +1 перезаписал)
    3. избыточный код.
    4. отсутствие информации об ошибках.
    5. Дублирование кода.

    Попробуем решить эти проблемы.

    $sql = "UPDATE post SET counter=counter+1 WHERE id=?";
    $pdo->prepare->($sql)->execute([$id]);
    
    $stm = $pdo->prepare("SELECT counter FROM post WHERE id=1");
    $stm->execute([$id]);
    echo $stm->fetchColumn()
    Ответ написан
    22 комментария
  • Как поменять referer_url, user_agent у files_get_contents?

    w999d
    @w999d
    Web-developer
    Примерно так
    $opts = array(
      'http'=>array(
        'method'=>"GET",
        'header'=>"Referer: http://example.com/\r\n".
                  "User-Agent: Mozilla/5.0\r\n"
      )
    );
    
    $context = stream_context_create($opts);
    
    $file = file_get_contents('http://example.com/', false, $context);
    Ответ написан
    Комментировать
  • "красивые" ссылки ??

    Почему бы не использовать готовый роутер, вместо того, чтобы готовить свою лапшу?
    Ответ написан
    1 комментарий
  • Какая Архитектура файлового хранилища?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Нанять программиста, он все сделает.
    Ответ написан
    Комментировать
  • Почему не работает document.write во внешнем js файле?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Вы определили атрибут async. Рекомендую почитать, что делают defer и async.

    При выполнении такого асинхронно загружаемого скрипта потребуется переписать всё распарсенное ранее дерево. Многие браузеры, во избежание этой глупости, выдадут вам примерно следующее:
    Вызов document.write() из асинхронно-загруженного внешнего сценария был проигнорирован.

    В любом случае, использование document.write — совсем не комильфо. И смотрите почаще в консоль.
    Ответ написан
    2 комментария
  • Позднее статическое связывание php: как это работает?

    в вашем примере area - не статический метод, позднее статическое связывание позволяет переопределять статические методы предков.
    посмотрите офф документацию, там же всё разжёвано с примерами
    Ответ написан
    2 комментария