Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как подружить два jquery на одной странице?

Лучший ответ:
Правильным решением было бы подключить  одну версию jQuery и jQuery Migrate Plugin и исправить проблемы о которых он говорит.
Если хотите костылей, можете 
или слить в один файл jquery И плагин обернуть их функцией, которую сразу выполнить и проверить внутри неё не объявляется глобальных переменных, вполне вероятно это может заработать
Или другой вариант попроще: пройдите автозаменой по jQuery и плагину, замените там jQuery на myQuery, И подключите то что получилось, ну и соответственно не забывайте про $.noConflict();

Худший ответ:
ruseller.com/jquery.php?id=61<script type="text/javascript" src="other_lib.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
 $.noConflict();
 jQuery(document).ready(function($) {
   // используем jQuery с $
 });
 // используем другую библиотеку с $
</script>
Вопрос: Как прочитать данные из файла?

Лучший ответ:
Привет!
для чтения тебе нужно FileStreamвоспользоваться. 
Пример с документацией тут.

Худший ответ:
Добрый вечер!
Используйте StreamReader
using (StreamReader sr = new StreamReader(ПУТЬ К ФАЙЛУ))
{
           Console.WriteLine(sr.ReadToEnd());
}
Вопрос: Как с помощью bash скопировать файл с сервера на сервер?

Лучший ответ:
сделайте аутентификацию по ключам
profhelp.com.ua/articles/kopirovanie-faylov-po-set...

Худший ответ:
Не совсем  bash, но tcl, вернее утилитка от него  expect (как правило есть в дефолтовой инсталяции на многих системах) и scp
Позволяет передать в вие аргумента скрипту пароль на сессию. #!/usr/bin/expect

# Do not show stdout of spawn process
log_user 0

# Show debug messages
exp_internal 0

# Timeout for executing command
set timeout 29

#
match_max 1024

set hostip [lindex $argv 0]
set user [lindex $argv 1]
set passwd [lindex $argv 2]
set srcfile [lindex $argv 3]
set dstfile [lindex $argv 4]
set port 22

if { [llength $argv] < 5 } {
    send_user "Usage ./scpput.tcl hostip user passwd srcfile dstfile \[port\]\n"
    exit 1
}

if { [llength $argv] == 6 } {
    set port [lindex $argv 5]
}

# Запись файла на удаленную хостовую машину
spawn scp -P $port $srcfile $user@$hostip:$dstfile
    expect {
        "?assword:" { 
            send "$passwd\r" 
        }
        "(yes/no)" {
                send "yes\r"
                expect "?assword:" 
                send "$passwd\r" 
        }
        timeout {
            send_user "Timeout to connect $hostip:$port\n"
            exit 2
        }
        eof {
            send_user "Can't connect to $hostip:$port\n"
            exit 2
        }
    }
    expect eof
Костыли, но работает. :)
Вопрос: Получение значения в адресной строке jQuery?

Лучший ответ:
var url_string = window.location.href
var url = new URL(url_string);
var utm = url.searchParams.get("utm_zapros");
// в переменной utm будет содержаться значение параметра utm_zapros, дальше тупо определяйте его значение.
// Если параметра нет, то utm===null
UPD: ну или можно тупо искать в URL строке нужную строку.if(location.toString().indexOf('agronavigator') !== -1) {
// Есть agronavigator
}

Худший ответ:
Вы не там ищите, agronavigator это не hash. if(location.search.indexOf('utm_zapros=agronavigator')>0) {
   $('.news').fadeIn();
}
Вопрос: Возможно ли такое реализовать?

Лучший ответ:
Да, на этом стэке это реализовать возможно.
Достаточно объёмно, но ты справишься

Худший ответ:
Добрый день.
Можно реализовать не только фриланс, но и например, "Austaushung", когда люди обменияваются своими умениями. Т.е. кому-то нужно выгулять собаку, а кому-то починить кран. И возможно, что стоимость починки крана стоит дороже, чем выгул собаки, но между ними происходит обмен (не всегда равноценный) на безвозмездной основе.

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

по приезду ставят отметку о прибытии,
Эта идея не очень нравиться, так как тут важно юзабилити. И не думаю, что каждый раз юзер залезет на сайт и поставит отметку и т.д. Если это реализовывать, то надо наверное, пуш уведомления подключить, чтобы пользователи получали информацию регулярно. Другое дело, если вы еще планируете моб. приложение поднимать)))

Можно не делить людей на соседей и фрилансеров. У них могут быть одинаковые роли (несколько ролей). И каждый из них может оказывать услугу и просить об услуге.

возможно ли такое создать с такими стэком 
Можно.

насколько это будет объемно?
Если речь идет о полноценном приложении, то да, это будет объемно.

Хочу использовать Java или JavaScript именно по этому планирую бэк сделать на java, фронт на react, angular, база mysql, sqlserver.
Как по мне стека Java (Spring) + JS (VueJS) + MySQL (или Postgres) будет предостаточно.
Вопрос: Как правильно организовать последовательно выполнение одной функции js?

Лучший ответ:
Используйте Promisefunction forse(){
  return new Promise((res,req) => { // и в случае ошибки не забудьте вызвать req
     setTimeout(function(){
    $.post(
      "post.php",
      {
               params: params,
               count: count
      },	
      function(data){
           $("#result").append(data);
            res();
      }
    );
  },5000);
  });
}
Для актуальных браузеров c поддержкой async/await (должно быть внутри async функции)for(let i=0;i<10;i++)
    await forse();
И для тех, что постарше:var i = 0;
function iter(){
    if(++i>10)return;
        return forse().then(iter)
}
iter();

Худший ответ:
Используйте Promisefunction forse(){
  return new Promise((res,req) => { // и в случае ошибки не забудьте вызвать req
     setTimeout(function(){
    $.post(
      "post.php",
      {
               params: params,
               count: count
      },	
      function(data){
           $("#result").append(data);
            res();
      }
    );
  },5000);
  });
}
Для актуальных браузеров c поддержкой async/await (должно быть внутри async функции)for(let i=0;i<10;i++)
    await forse();
И для тех, что постарше:var i = 0;
function iter(){
    if(++i>10)return;
        return forse().then(iter)
}
iter();
Вопрос: Какое событие прокрутки на смартфонах?

Лучший ответ:
Лови свойство события event.changedTouches.
event.changedTouches[0] выдает  объект события первого касания к тачскрину. Используя его свойства можно получить направление движения пальца через pageX и pageY.

Худший ответ:
Используется событие scroll. Как определить direction скролла - запрос в Гугл
Вопрос: Как установить драйвера на видеокарту AMD Radeon, которые предназначены для Windows 8.1 на системе Windows 10?

Лучший ответ:
Как установить драйвера на видеокарту AMD Radeon, которые предназначены для Windows 8.1 на системе Windows 10?Очень просто - запустите инсталлятор драйвера.
Правда работать он в 99% случаев не будет, но это уже другой вопрос.
Драйвер это программа которая адаптирует железо к операционной системе.
В вашем случае драйвер обеспечивает нормальное взаимодействие видеокарты и ОС Windows 8.1
Что такое Windows 10 ваш драйвер не знает.

Худший ответ:
Скорее всего, драйвер устанавливать не потребуется. Винда сама его найдёт и поставит.
Вопрос: С какой целью может быть создан подозрительный WiFi у соседей с моими SSID/Ключом?

Лучший ответ:
Возможно, у соседа его собственный девайс хуже покрывал некоторые участки квартиры, чем ваш на тех же участках, и сосед таким образом создал себе бесшовное покрытие по всей квартире.

Худший ответ:
Проверьте свой роутер на уязвимость этим или одним из этих приложений.
Поставьте последнее обновление прошивки, смените пароль на более надёжный.
Вопрос: Как заставить печатать пересохший Brother MFC-J2320?

Лучший ответ:
Brother можно промыть, если повезет, но это сложно из-за встроенной СНПЧ с длинными трубками. Во всех трубках чернила тоже подсохли и их очень трудно оттуда вымыть. Для этого надо аккуратными возвратно-поступательными движениями шприца с чистящей жидкостью, подключенного в соплам вместо картриджей раскачивать-размачивать всю систему (инструкция 1). + салфетку положите, пропитанную чистящей жидкостью под головку.

Худший ответ:
Мои соболезнования.... Вот вопрос так вопрос, уже лет 5-6 не задавали. Как же вас угораздило , как я понял, менее 2-х лет назад купить струйник. Если совершенно девственно чистый лист, то голове кердык. Не восстановить. Если листа 2 не изменилась картина, снимать головку, целая процедура отмачивания. Как на фото, шприцом к соску это убийство головы. Так нельзя.  А ещё как я понимаю насухую гоняли много. Проще скажу  печатающие дюзы могли  пережечь. Я уже лет 5 полноцветные лазерные принтеры  у студентов, домохозяек и т.д. дома.
Вопрос: Слетает подключение к wifi на Ubuntu 16.04, почему?

Лучший ответ:
Такое бывает когда в свежем драйвере баг. Чаще всего баг уже исправлен производителем. Например на моей карте Intel так было, я качал исходники драйвера с их сайта и устанавливал, делается за 2 минуты парой команд. В крайнем случае можно поставить предыдущую версию драйвера. Не нужно откатываться и тем более какие-то рестарты прописывать в автозагрузку - это полнейший бред.

Худший ответ:
Решил проблему откатом на 14.04 ))) А вы можете эту команду в автозагрузку прописать и все.
Вопрос: Как правильно использовать имена страниц?

Лучший ответ:
Привет!
Все правильно, нужны названия на транслите передающие суть того что на странице, максимально короткие, но включающие основные ВЧ ключевые слова. Вместо пробелов можно использовать тире. В конце .php лучше убрать.

Худший ответ:
Привет!
Все правильно, нужны названия на транслите передающие суть того что на странице, максимально короткие, но включающие основные ВЧ ключевые слова. Вместо пробелов можно использовать тире. В конце .php лучше убрать.
Вопрос: Не работает экспорт как Adobe Photoshop?

Лучший ответ:
починил скачав другой репак

Худший ответ:
Не пиратить?
Вопрос: Как дизайнеру сделать Parallax эффект?

Лучший ответ:
Речь о дизайнере, который в графическом редакторе делает макет? Если да, то показать все элементы в макете, передать верстальщику их поотдельности в нужном формате (png, svg и т.п.), снабдив комментариями с описанием поведения. Далее фронт-энд специалист настроит поведение как надо и всё готово.

Худший ответ:
Дизайнеру или верстальщику?
Если дизайнеру, то в чем проблема - прорисовать элементы. И начерно набрасать пару примеров с различным параллаксом.
Вопрос: Как на Windows 7 установить программу, которая идет только на XP?

Лучший ответ:
Использовать режим XP Mode и не заморачиваться.
Windows 7 XP mode: техническая информация и опыт применения: https://technet.microsoft.com/ru-ru/library/ee9237...

Худший ответ:
Ну или скачать и установить VirtualBox с образом Windows XP.
Вопрос: Какой оптимальный размер буфера?

Лучший ответ:
ну раз это нужно для диплома, то будет вполне уместно провести анализ: ряд тестов на чтений/запись больших файлов скажем размером в 10ГБ. 
Читать/писать разными блоками начиная от 512 байт, далее степень двойки (1024,2048,4096,8192,...) замеряя при этом скорость... программа простецкая, за вечер думаю управитесь... построите график зависимости производительности от размера буфера... будет шикарный раздел диплома...

Худший ответ:
4к на данный момент все еще оптимален и универсален.
Уменьшать смысла нет как правило. Увеличение может привести как к росту производительности, так и к падению. Зависит от ситуации.
Идеальный размер существует только для конкретной ситуации.
Если ситуации могут быть разными то следует выбирать не идеальный, а оптимальный - обеспечивающий адекватную работу в большинстве ситуаций. А это как раз около 4к.
Вопрос: Как сверстать блоки?

Лучший ответ:
Используйте технологию flexbox и  разделяйте блоки на составные части:

Худший ответ:
Используйте технологию flexbox и  разделяйте блоки на составные части:
Вопрос: Как заставить гит работать через ключ?

Лучший ответ:
поменять адрес репака в .git/config.

Худший ответ:
авторизация по ключу - через ssh. через всякие smart-ы и хттп - только логин/пароль
Вопрос: Как сделать проверку email и url?

Лучший ответ:
Для URL - тоже: /https?:\/\/[a-z0-9:@./?\\%&=]+/i
Для vk.com: /https?:\/\/vk\.com\/[a-z0-9:@./?\\%&=]+/i
E-MAIL: /^[a-z0-9_%+-]{1,}([.]|)[a-z0-9_%+-]{1,}@([a-z0-9_%+-]{2,}[.]{1}[a-z0-9_%+-]{2,}([.]{1}[a-z0-9_%+-]{2,})?)$/i

Худший ответ:
для эемайла простой регэксп /.+@.+\..+/i
Вопрос: Что лучше выбрать много запросов через 1 mysql соединение или под каждый запрос отдельное?

Лучший ответ:
Соединение с MySQL не "бесплатное" с точки зрения времени.
Так как помимо соединения, происходит "хендшейк" и аутентификация пользователя, кроме того зачастую еще идет запрос с выбором кодировки соединения, а только потом сам запрос. Т.е. получается 6 пакетов вместо 2-х на один запрос.
Поэтому кроме особых случаев лучше использовать одно соединение для всех запросов. Несколько соединений можно использовать, если работать с MySQL асинхронно (например, делать бэкап в несколько потоков, или  контролировать длительный запрос), но это уже не для начинающих.

Худший ответ:
естественно одно соединение
Вопрос: Как лицензировать закрытое проприетарное по?

Лучший ответ:
Как лицензировать закрытое проприетарное по?
Как угодно. В смысле просто берете и излагаете нормальным русским языком (или какой вам понятнее) ваши требования.
После чего приглашаете юриста, чтобы он сформулировал все это юридически грамотно.
Лицензия это разновидность договора.
А грамотное оформление договоров - задача юриста.

Худший ответ:
Вы кем приходитесь этому закрытому проприетарному ПО? Автор, владелец исключительного права?
Вопрос: Какие температуры чипсета ноутбука приемлемы?

Лучший ответ:
Контакт чипсета видимо обеспечивался за счет достаточно толстой термопрокладки, я разумеется ее выбросил, надавил термопасты (не целую кучу, о чем потом пожалел)У термопасты очень низкая теплопроводность.
Т.е она очень плохо проводит тепло.
Все дело в сравнении - теплопроводность термопасты гораздо выше чем у воздуха, но на порядок ниже чем  у меди или алюминия. 
Используют термопасту для обеспечения более плотного контакта ее нужно наносить так, чтобы она заполняла неровности, но никак не класть  толстый слой термопасты.
Поэтому для корректного теплоотвода надо обеспечить плотное прилегание радиатора к чипу.
Верните на место термопрокладку, а на место контакта термопрокладки с радиатором и чипом нанесите тонкий слой термопасты.
Для сравнения - теплопроводность меди 394 Вт/(м*к)
Для термопасты это значение в зависимости от качества пасты 1-15 Вт/(м*к)
Для термопрокладок это значение в зависимости от качества прокладки 5-100  Вт/(м*к)Какие температуры чипсета ноутбука приемлемы?Сложно сказать, нужно смотреть даташит на конкретный чип.
Дело в том что температура понятие растяжимое - та температура которую вы можете измерить на поверхности чипа это одно, а та температура которая внутри чипа может сильно отличатся. Поэтому некоторые чипы могут сгореть если их поверхность нагревается до 50градусов, а некоторые могут и до 120прогреваться без проблем.
Сам полупроводник спокойно выдержит и 1000градусов.
Вот только его свойства меняются и при повышенной температуре его может тупо пробить.

Худший ответ:
Верните термопрокладку. Жаль что ASUS начал страдать тем же, на чем погорели HP и Acer. 
Вообще говоря, у Вас возможно охлаждение вообще не способно справиться с мощностью более производительного процессора. 
Термопрокладки продаются, только погуглите какие они бывают, вам абы-какая не подойдет, нужна с хорошей теплопроводностю и подходящей толщины. 
Ну и datasheet нужно смотреть на конкртеную микросхему в конкртеном корпусе. Тогда будет понятно какая температура нормальная.
Вопрос: Redis и PHP, с чего лучше начать?

Лучший ответ:
Какие основы-то?
Там get и set.
Сколько нужно программистов чтобы вкрутить лапмпочку выучить две функции?

Худший ответ:
Пример кода реализующего очередь URL страниц для парсера: https://toster.ru/answer?answer_id=290173#comments...
Вопрос: Можно ли считать php код, написанный без ошибок E_NOTICE, преимуществом, которое можно указать в резюме? Как, например, валидная верстка?

Лучший ответ:
Вы бы пошли к врачу, у которого "преимущество": знаю как поменять лезвие в скальпеле?
Вот небольшой список требований к коду приемлемого качаства: Попросили проверить код, на что смотреть нужно?

Худший ответ:
Конечно стоит научиться, и просто делать так всегда. Безотносительно резюме. 
Нотисы не случайны, они говорят о том, что в коде что-то плохо или, как минимум, не однозначно, а иногда могут указывать и на весьма серьёзные ошибки. На них всегда надо обращать внимание, и при разработке, и при эксплуатации приложения.
Вопрос: Как поступать с ботами проверяющими wp-login?

Лучший ответ:
Самое эффективное это:Disallow: /wp-login*
Disallow: /wp-upload*
В robots.txt
P.S. Роботы которые даже при этом будут стучатся к указанным в Disallow путям - нелегалы. Yandex Bot и Google Bot (да и BingSearch Bot) всегда сначала смотрят в robots.txt.

Худший ответ:
Самое эффективное это:Disallow: /wp-login*
Disallow: /wp-upload*
В robots.txt
P.S. Роботы которые даже при этом будут стучатся к указанным в Disallow путям - нелегалы. Yandex Bot и Google Bot (да и BingSearch Bot) всегда сначала смотрят в robots.txt.
Вопрос: Const char to char* сейчас не компилирует?

Лучший ответ:
поменяй сигнатуру функции, чтоб она принимала const char*

Худший ответ:
Скорее всего стоит параметр компилятора /Zc:strictStrings
Вопрос: Как правильно закупить ссылки на сайт?

Лучший ответ:
Как правильно закупить ссылки на сайт?Такие вопросы задавали лет десять назад и тогда это было еще актуально..Как на это реагируют поисковики?Помечают сайт как мусорный и опускают в выдаче.Купленная ссылка передает вес только странице на которую она закуплена или на весь сайт ?Купленная ссылка передает вес всему сайту, и он под этим весом идет на самое дно выдачи.
В стародавние времена, когда еще мамонты бегали по земле. Интернет был другой. Не было никаких JS.
И поисковик знал о сайте всего две вещи - его содержание (текст) и количество ссылок на этот сайт с других ресурсов (индекс цитирования)
И именно по этим двум параметрам он  ранжировал страницы в выдаче. И индекс цитирования играл очень большую роль.
Потом злые люди стали этим пользоваться и искуственно повышать индекс цитирования массово закупая ссылки, и повышая в выдаче всякий хлам. Но способов бороться с этим не было, ибо не было других методов оценки сайта.
А потом появился web 2.0
И сайт стал сообщать поисковику кучу параметров - сколько пользователей заходит на сайт, сколько времени пользователь читает ту или иную страницу, читает ли он текст, или сразу уходит, часто ли он возвращается на этот сайт, и.т.п.
И с тех пор поисковики для ранжирования перестали использовать индекс цитирования более чем полностью.
Они теперь ориентируются в основном на поведение пользователя ибо он платит деньги и заказывает музыку.
В общем сейчас чтобы попасть в том выдачи нужны не ссылки, а правильное поведение пользователей на вашем сайте, или банальные деньги - это тоже действует. Даете денег поисковику, он вашу ссылку поднимет. Ибо тот кто платит, тот и музыку заказывает.

Худший ответ:
Году так в 2010...
Вопрос: Зачем нужны учётные записи в windows?

Лучший ответ:
Зачем нужны учётные записи в windows?Для разграничения пользователей вестимо.Ибо не защищают они данные даже от такого ламера,как яА с чего вы взяли что они должны от чего-то защищать?

Худший ответ:
ламеры не знают про безопасный режим, тем более про загрузку с флешки, да и на компе можно хранить множество учетных записей для распределения чего-либо
Вопрос: Как создать новый Git-проект с «болванки» git clone?

Лучший ответ:
Это не проверено, но:
1) git clone
2) Удаляешь директорию .git
3) git init
4) ....

Худший ответ:
никак.
Сделайте
git clone
cd 
rm -rf .git
git init
Вопрос: Можете рассказать о минусах дизайна и взаимодействий с постом в блоге?

Лучший ответ:
Расскажите о минусах и плюсах
Из плюсов - идея интересная, выглядит симпатично.
Из минусов (в самом посте):Шрифт мелкий, строки длинные. На 15-дюймовом FullHD - сложно читать. Я бы увеличил хотя бы до 16-18px.Контрастность тоже не самая лучшая. Серый текст по белому фону заставляет напрягать глаза.Вертикальный ритм немного странный. Может быть над заголовками добавить отступы?Картинки хочется сделать побольше. Хотя может быть и нет. Но отделить их отступами точно стоит.Не хватает информации об авторе, даты написания статьи (может все уже устарело на 10 лет).Иконки для расшаривания в социальных сетях тоже можно добавить.Так и хочется внизу увидеть теги, комментарии, похожие посты и.т.д. Их там нет, а очень хочется.Эффекты при наведении мыши и фокусе на элементы нужно добавить.
Скролл очень сильно лагает, так что навигацию оценить сложно. Адаптивность отсутствует. Определенно стоит подумать про сценарии взаимодействия с сайтом в целом. Если это - блог, то там точно должно быть (люди к этому привыкли и ждут этого):Список статей, который можно быстро пролистывать.Поиск по статьям. Если материалов мало, то по крайней мере поиск по тегам или категориям.Страницы авторов, или по крайней мере хоть какая-то о них информация, контакты.
и.т.д.
Красивые анимации - это уже вторичное, начинать нужно со сценариев взаимодействия, а то получается красивое, но не удобное.

Худший ответ:
Лично мне не понравилось, и не из-за каких-то технических или визуальных огрехов. А потому что дизайн должен решать проблемы посетителей/клиентов, а не создавать их.
Стрелка назад — воспринимается как действие back, в свою очередь back появлется только при наведении.  Да и горизонтальный скролл на первом экране абсолютно не очевиден.
И вот чтобы совершить простое,казалось бы, действие, посетитель должен искать нестандартное решение или искать расположение элемента в неочевидном месте(иконка комментирования).
А ещё при тестировании, каким-то образом получил это https://snag.gy/8irs4Q.jpg
Вопрос: Как исправить ошибку при переноси Yii2 на сервер?

Лучший ответ:
На локалке все отл работает. При переносе на ubuntu 14 понеслись ошибки
Ошибки были и там и там, просто на локалки ошибки уровня Notice не выводились, они не критичные. Можно отключить вывод на сервере Notice и все станет как на локалке, но я считаю, что лучше как раз включить на локалке вывод всех ошибок и исправлять их.

Худший ответ:
У Вас, скорее всего, объект не инициализирован и равный null. И, соответственно, null не является объектом. Такая же ситуация была однажды, после переноса. В местах, где ошибка, проверяйте объект:echo $obj ? $obj->param : '';
или в PHP 7:echo $obj->param ?? '';
Вопрос: Как эмулировать загрузку изображений input[type=file], через button?

Лучший ответ:
Нельзя эмулировать. Потому что у браузеров есть политика безопасности, которая позволяет забирать с компьютера только те файлы, которые юзер выбрал.
Можно СКРЫТЬ input[type=file], сделать его прозрачным, например, а под ним разместить кнопку.
Вот пример: https://jsfiddle.net/2wwgz9h9/
Сейчас стоит opacity: 0.7; а если поставить 0 он будет полностью прозрачным.

Худший ответ:
В документацииUPDATE<input type="file" id="file_uploading" style="display: none;"/>
<button onclick="onClickButton()">
Ваша кнопка
</button>

<script>
function onClickButton(){
 document.getElementById('file_uploading').click();
}
</script>UPDATE 2
Полная версия:<img src="" height="200" alt="Image preview...">
<input type="file" id="file_uploading" style="display: none;" onchange="previewFile()"/>
<button onclick="onClickButton()">
Ваша кнопка
</button>

<script>
function onClickButton(){
 document.getElementById('file_uploading').click();
}

function previewFile() {
  var preview = document.querySelector('img');
  var file    = document.querySelector('input[type=file]').files[0];
  var reader  = new FileReader();

  reader.onloadend = function () {
    preview.src = reader.result;
  }

  if (file) {
    reader.readAsDataURL(file);
  } else {
    preview.src = "";
  }
}
</script>