• Что быстрее 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 комментария
  • Как раскодировать строку которая приходит с сервера?

    Функция раскодирования должна выглядеть как функция кодирования. Только наоборот.
    Ответ написан
    3 комментария
  • Почему так работает, а так нет?

    Denormalization
    @Denormalization
    С PHP.NET:

    Связывает PHP переменную с именованным или неименованным параметром подготавливаемого SQL запроса. В отличие от PDOStatement::bindValue(), переменная привязывается по ссылке, и ее значение будет вычисляться во время вызова PDOStatement::execute().


    Во втором случае в момент, когда происходит связывание переменная уже не существует. Попробуйте использовать bindValue.
    Ответ написан
    Комментировать
  • Полный цикл жизни проекта: html,css,js > php, шаблоны, изменения, переиспользование?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Подход давно выработан: пакетные менеджеры. Для фронтенда это npm/bower (или, может быть, component, но это уже чуть более широкая вещь), которым можно подсовывать адрес приватного git/hg репозитария. Только добавьте в .git_ignore node_modules и bower_components.

    Другой вариант -- git submodule, но это будет более геморройно.
    Ответ написан
    9 комментариев
  • Как лучше всего реализовать мультиязычность?

    @rsi
    software engineer
    Вырасти из фреймворков это на самом деле странно слышать, но дело ваше. Странно тогда почему вы задаете такие вопросы.

    donem.com/en/new?id1
    это ваш маршрут "en" идентификатор языка. Определите хранилище для переводов. Это может быть база, это могут быть файлы. У WP как ни странно отличная реализация на данный счет, они хранят переводы в .po файлах, которые даже такие моменты как 1 слон (elephant), 2 слона (elephants), 5 слонов (elephants) учитывают. Напишите один класс, который на основе идентификатора языка и оригинального слова будет выводить перевод. У вашей CMS же есть жизненный цикл, шаблоны? Вот вызывайте этот класс переводов в момент компиляции шаблона. А выглядеть это будет как то так - t("elephant"), а там внутри уже найдется соответствие исходной строки и перевода.

    Если вам не только интерфейс, но и содержимое (например статьи) переводить хочется, то определите структуру в базе (вы же в базе материалы храните?) которая бы позволяла одни те же данные хранить на разных языках и пусть ваш класс переводов отдает шаблонам данные на нужном языке на основе идентификатора языка.
    Ответ написан
    1 комментарий
  • Можно ли таблицу MYSQL использовать как лог файл?

    SagePtr
    @SagePtr
    Еда - это святое
    Можно. К тому же, в MySQL есть специальный storage engine для логов.
    Ответ написан
    Комментировать
  • Какой тег HTML5 выбрать?

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

    1. Заголовок и описание.
    <header>
        <h2>Заголовок</h2>
        <p>Описание к заголовку</p>
    </header>

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

    2. Несколько заголовков.
    <hgroup>
        <h1>Титульный заголовок</h1>
        <h2>Подзаголовок</h2>
    </hgroup>

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

    3. Ваш вариант.
    <h2>Заголовок</h2>
    Заметьте, у вас всего лишь один элемент, который не требует группировки с чем-либо. Он самодостаточен, и по смыслу соотносится с секцией, в которой находится. Нет никакого смысла выделять ему дополнительный контейнер в данном случае.
    Ответ написан
    1 комментарий