Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Новичкам без опыта во Frontend очень сложно найти работу, а как дела обстоят у опытных Senior Developers?

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

Худший ответ:
С офисом проблем нет, а с удалёнкой пришлось напрячься, но в итоге всё отлично
Вопрос: Нормальная ли сборка ПК?

Лучший ответ:
Основной цвет чёрный
Это просчет, конечно.
А в остальном норм.
Такая сборка будет актуальна лет двести.

Худший ответ:
Если речь идет о требовательных играх
1) Смотрим видеокарту, ищем ее в яндекс-маркете и смотрим обзоры. В обзорах внимательно читаем  что там написано и смотрим на результаты. Понимаем, что уже сейчас эта карта не способна нормально потянуть игры в FullHD. ТО есть нужно минимум 8 ГБ памяти на борту.
С прицелом на настоящее замените ее на 580 радеон, с расчетом на ее замену года через два, когда появится или внятный флагман от АМД (да, я уже тоже не очень в это верю, но исключать вероятность нельзя), или nVidia выпустит следующее поколение карт с трассировкой
2) Процессор я бы тоже поменял на более производительный - 9400 может не раскрыть нормальную видеокарту.
3) Мозгов на борту минимум 16 Гб
4) Вы ничего не пишете про материнку. Там тоже могут быть подводные камни.
5) Резюмируя - попробуйте почитать вот эту статью - https://3dnews.ru/993326/kompyuter-mesyatsa-sentya...
будет понятнее, чего вам ждать и на что ориентироваться
Вопрос: Windows на ядре Linux?

Лучший ответ:
В связи с тем, что Microsoft зажрались подняли ценник на шинду Windows планируем перейти на Linux.
С таким подходом это быстро пройдёт.
Ставьте Kali, судя по стилю вопроса, вы как раз из ряда его типичных пользователей.

Худший ответ:
посмотрите в сторону ZorinOS
Вопрос: Почему ошибка в запросе mysql?

Лучший ответ:
Потому что вы пытаетесь вставить не в таблицу, а в строку.

Худший ответ:
$addid = mysqli_query($link,"INSERT INTO `wp_postmeta` (`post_id`, `meta_key`, `meta_value`) VALUES('$id', 'medafi_5ced1ba27d9ec', '$id' )")or die("Ошибка " . mysqli_error($link));
Вопрос: Не могу понять почему не работает условие?

Лучший ответ:
Судя по трейсу ошибки, у объекта feed нет атрибута published.
Если он динамический и добавляется на каком-то этапе, можете использовать проверку наличия атрибута:if hasattr(feed, 'published'):
    ...
else:
    ...
Также можно обернуть код в try ... except и отлавливать исключение AttributeError.
P.S. А в чём смысл писать "rss_published = feed.published" и в следующей строке проверять это же условие?

Худший ответ:
Все работает)# 1 = 1
rss_published = feed.published
            # if 1 != 1
            if rss_published != feed.published:
                rss_published = feed.updated
            else:
                # 1 == 1
                rss_published = feed.pubdate
Вопрос: Как преподавать алгоритмы и структуры данных слепому?

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

От вей души желаю удачи!

Худший ответ:
Грокаем алгоритмы. Абалденная книга для начинающих.
Вопрос: Как правильно разбить диск при использовании RAID1 в Linux?

Лучший ответ:
Это вам как администратору должно быть виднее, зачем вам отдельный /home в 5гб и прочие фрагменты, нужны ли они и какого именно нужны размера.
А так чаще на гипервизорах /boot на отдельном разделе raid1, всё же остальное полезное собирается в lvm поверх рейдов (и виртуалкам целиком LV монопольно, а не файлики в ФС). Возможно в разные VG.

Худший ответ:
Не нужно извращаться - отдельные разделы нужны только под /boot, /home, /, swap.
Вопрос: Вывод с UPWORK на Сбер? Стоит ли?

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

Худший ответ:
Нужен ли в этой цепочке PayPal? У него курс такой же грабительский как Direct to local bank. Но во втором случае хотя бы нет лишних звеньев в цепочке и проще объяснить доходы. 

По поводу сбербанка - а стоит ли связываться с госбанком? Вряд ли вам дадут какие-то бонусы за эти поступления. Всё равно это не зарплата. А банки не любят ни ИПшников, ни самозанятых. Я бы на вашем месте воспользовался частным проверенным банком типа Тинька.
Вопрос: Как заставить функцию ждать пока другая не вернёт результат?

Лучший ответ:
Пример 1 - fetch, async/await
async function start() {
  const user = await getUser();
  
  console.log(user);
}

function getUser() {
  return fetch('https://jsonplaceholder.typicode.com/users/1')
    .then(response => response.json());
}

start();
/*
{
  id: 1,
  name: 'Leanne Graham',
  username: 'Bret',
  email: 'Sincere@april.biz',
  address: {
    street: 'Kulas Light',
    suite: 'Apt. 556',
    city: 'Gwenborough',
    zipcode: '92998-3874',
    geo: { lat: '-37.3159', lng: '81.1496' }
  },
  phone: '1-770-736-8031 x56442',
  website: 'hildegard.org',
  company: {
    name: 'Romaguera-Crona',
    catchPhrase: 'Multi-layered client-server neural-net',
    bs: 'harness real-time e-markets'
  }
}
*/
или
Пример 2 - XHR, async/awaitasync function start() {
  const user = await getUser();
  
  console.log(user);
}

function getUser() {
  return new Promise((resolve, reject) => {
    const xhr = new XMLHttpRequest();
    
    xhr.open('GET', 'https://jsonplaceholder.typicode.com/users/1');
    xhr.addEventListener('load', () => {
      if (xhr.status === 200) {
        resolve(JSON.parse(xhr.response));
      } else {
        reject(xhr.response);
      }
    });
    
    xhr.send();
  });
}
или
Пример 3 - XHR, callbackfunction start() {
  getUser(user => {
    console.log(user);
  });
}

function getUser(callback) {
  const xhr = new XMLHttpRequest();

  xhr.open('GET', 'https://jsonplaceholder.typicode.com/users/1');
  xhr.addEventListener('load', () => {
    if (xhr.status === 200) {
      callback(JSON.parse(xhr.response));
    } else {
      callback(xhr.response);
    }
  });

  xhr.send();
}

start();
Для варианта с функцией обратного вызова, чаще всего используют два параметра: первый - ошибку, второй - результат, тогда код будет выглядеть так:
Пример 4 - XHR, callback с обработкой ошибокfunction start() {
  getUser((error, user) => {
    if (!error) {
      console.log(user);
    }
  });
}

function getUser(callback) {
  const xhr = new XMLHttpRequest();

  xhr.open('GET', 'https://jsonplaceholder.typicode.com/users/1');
  xhr.addEventListener('load', () => {
    if (xhr.status === 200) {
      callback(null, JSON.parse(xhr.response));
    } else {
      callback(new Error(xhr.response));
    }
  });

  xhr.send();
}

start();
Также, для XHR надо дополнительно обрабатывать ошибки.

Худший ответ:
"use strict"

let requestCount = 0;

window.addEventListener('scroll', async () => {
	const result = await getComment();

	console.log(result);
});


function getComment() {
	return new Promise(((resolve, reject) => {
		const xhr = new XMLHttpRequest();
		xhr.open('GET', `${document.URL}comments/${requestCount}/`);
		xhr.onload = function () {
			if (xhr.status === XMLHttpRequest.DONE) {
				set_comment(...);
				requestCount++;

				resolve(xhr.response);
			} else {
				reject(xhr.status);
			}
		};
		xhr.send();
	}));
}

Изучите Fetch API, это упростит жизнь
Вопрос: Чем можно заняться по дороге на работу?

Лучший ответ:
Расслабляться, рефлексировать.

По пути на работу - можно декомпозировать свои задачи и составлять план на день.

По пути домой - просто рефлексировать, приходить в себя.

Худший ответ:
в pubg mobile покатай, на ливике 3 катки успеешь
Вопрос: Как перенести ОС дебиан установленную на RAID1 состоящий из двух дисков на новый ПК с новым железом?

Лучший ответ:
RAID же mdraid? Скорее всего, заведётся. Проблем с дисками не должно быть, если они везде прописаны по uuid, а не как /dev/sdX. Потребуется поменять udev rules, чтобы старые имена сетевых интерфейсов матчились с новыми железными сетевухами. Мб ещё что-то по мелочам. Переносил так пару раз системы.

Худший ответ:
Если вы собираете программный рейд (mdadm) - то ему всё равно на железо. Лишь бы ядро увидело сами диски. При том даже порядок дисков не важен. В метаданных рейда сохраняется информация кто есть кто без привязки к именам устройств.
Если не сделаете mdadm.conf в initramfs - то могут поплыть номера устройств самих /dev/md? и при рядовой перезагрузке. Самоопределится в какой-нибудь /dev/md127 и у вас fstab жалуется на жизнь и отказывается грузиться.
Вопрос: Стоит ли разделять базы данных между микросервисами?

Лучший ответ:
>Логично ли все базы свести в одну и из разных сервисов 
это логично только когда не корректно провели декомпозицию функционала и пытаются просто нарезать один сервис на разные части с единой базой, 
для разных микросервисов это не должно быть логичным. 
например у ресторана в сервисе "доставки блюд" и в сервисе "оформления блюда", есть и там и там "клиент", но данные этого клиента в обоих сервисах разные. 
в доставке у "клиента" есть ФИО и адрес, 
в оформлении блюд на выдачу в ресторане, у клиента ни адреса и ни фио (просто клиент №1 например), но есть например номер столика и тд
для обоих этих микросервисов источники данных разные.

Худший ответ:
Тип хранилища зависит от типа и назначения данных.
1. Если данные для микросервисов разные (разнородные) - это топология "кольцо" + централизованное API.
2. Если одинаковые - это топология "звезда" (т.е. обычная централизованная БД).
Вопрос: Как делать снимок каждую секунду при нахождении лица в реальном времени?

Лучший ответ:
Программу можно сделать, взяв буквы и цифры, скобки и пробелы, ещё всякие значки. Расставить их как вам хочется, и смотреть, какие ошибки будут. Устраняйте ошибки. Как ошибок не станет - программа готова.

Худший ответ:
https://habr.com/ru/company/netologyru/blog/434354/
https://robotos.in/uroki/obnaruzhenie-i-raspoznava...
https://neurohive.io/ru/tutorial/raspoznavanie-lic...

Далее - берете API(если есть), и допиливаете напильником.
Вопрос: Nodejs + nginx vs apache + nginx. Какую конфигурацию выбирают?

Лучший ответ:
apache не нужен

Худший ответ:
Берите любую. Если у вас есть проекты под ноду то выберите ее
Нгинкс + апач вообще по моему избыточен кроме специальных проектов
Вопрос: Как подключить скрипты и стили компонента, подключаемого по ajax?

Лучший ответ:
после успешного выполнения Ajax запроса в JS:
в res - ответ сервера c HTML, в котором есть и скрипты

let processed = BX.processHTML(res, false); // парсим HTML
BX.ajax.processScripts(processed.SCRIPT);  //выполняем найденные скрипты

Худший ответ:
Посмотрите в модуле, как реализован метод. Там всё предельно просто и понятно

public function ShowAjaxHead($bXhtmlStyle = true, $showCSS = true, $showStrings = true, $showScripts = true)
Вопрос: Как распарсить массив возвращаемый сервером в виде обычной строки?

Лучший ответ:
import re
import pandas as pd
from io import StringIO

srv_data = "A[1]=[1765540,14,2799,4790,'Ts','MSC','2019,8,7,21,00,00',-1,3,2,1,2,1,1,1,2,'20','13','','',82,'','',8,0];"\
           "A[2]=[1706041,83,4134,19230,'3DF','rSC','2019,8,7,21,00,00',-1,3,1,2,0,0,0,0,0,'14','8','','',66,'','',0,0];"

csv_data = '\n'.join(re.findall('=\[(.+?)\];', srv_data))

# Вариант без регулярок:
# csv_data = '\n'.join(line.split('=')[1].strip('[]') for line in srv_data.split(';') if line)

df = pd.read_csv(StringIO(csv_data), quotechar="'", header=None)
Самый лаконичный  вариант, но строго не рекомендуется ввиду риска запуска переданного кода:import pandas as pd

data = "A[1]=[1765540,14,2799,4790,'Ts','MSC','2019,8,7,21,00,00',-1,3,2,1,2,1,1,1,2,'20','13','','',82,'','',8,0];"\
       "A[2]=[1706041,83,4134,19230,'3DF','rSC','2019,8,7,21,00,00',-1,3,1,2,0,0,0,0,0,'14','8','','',66,'','',0,0];"

A = {}
exec(data)  # Потенциально опасная операция, т.к. в ответе сервера может быть вредоносный код

pd.DataFrame(A.values())
Если не хотите связываться с Pandas, можно применить namedtuple.

Худший ответ:
Непонятна боязнь автора перед регулярками. 
Как будто любой другой парсер не споткнется о пропущенную точку с запятой.
При том что регулярки делают код на порядки короче.preg_match_all('!A\[\d+\]=\[(.*?)\]!', $s, $matches);
$data = [];
foreach ($matches[1] as $row) {
    $data[] = str_getcsv($row, ",", "'");
}
ЗЫ.
Мне не верится, что в питоне все настолько плохо.
Хотелось бы увидеть решение от человека знающего язык.
Вопрос: Как понимать програм-е, и писать собственный код?

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

Худший ответ:
Хотите книгу вроде "500 вариантов написания Hello World"? Ну прочитаете её - дальше что? Вы будете знать 500 вариантов вывода на экран строки. А какой от этого толк? Правильно, никакой.

Все учебники и туториалы по ЯП рассказывают об основах программирования.  Ну так в учебниках по языках как раз не учат программирование как таковое, там в основном синтаксис конкретного языка, его устройство, его библиотеки и т.д.
Вопрос: Как создать свое интернет радио нубу на VPS ubunu 16.04?

Лучший ответ:
Сколько угодно статей в этих ваших интернетах. Например, https://habr.com/ru/post/239541/

Худший ответ:
Заведите лучше ютуб канал и вещайте 24/7)) минимум затрат
Вопрос: Сколько стоит ПО сканера штрихкодов, для ведения учета посетителей спортзала?

Лучший ответ:
Все очень сильно зависит от ТЗ, разработка которого стоит отдельных денег и времени.
Нужно провести аналитическое исследование, изучить потребности клиентов зала и владельцев заведения. Например, достаточно ли просто фиксировать факт входа выхода, или еще нужно использовать пропуск в зал в качестве ключика от шкафчика? А может, стоит привязать к пропуску еще и пульсометр и ввод антропометрических данных клиента в тренажеры?
Если вы хотите продать свое поделие владельцам фитнесов (которые как правило, люди не очень дружащие с ойти, им как-то штанга роднее будет), походите сами в разные фитнесы, посмотрите, где вам больно, а где удобно, авось, родите интересную бизнес-идею.
Слишком много вариаций существует, отсюда и огромный разброс цен. И стоимость непосредственно разработки составляет в данном случае около 1/5 всей стоимости, больше нервов и средств уйдет на аналитику и поддержку, потому что если ваше самописное чудо бахнет под утро, когда час пик и толпы разгневанных качков недожгли свои калории - у владельцев заведения будет неплохой соблазн отдать им вас в качестве тренажера.

Худший ответ:
Сканер штрих кода в системе появляется как виртуальный com port. 
В зависимости от модели есть SDK как правило COM ActiveX или примеры на C# C++ Delphy
готовое решение вот. 
Правда я бы рекомендовал поставить NFC ридер. Или вообще использовать метки wifi
shtrih-center.ru/avtomatizaciya/fitness.html
Вопрос: Mikrotik: да куда же девается весь Интернет?

Лучший ответ:
В статистике интерфейса.
Можно Torch.

Худший ответ:
А про Tools-Torch уже сказали? Так вот помимо него есть ещё один способ - https://arxont.blogspot.com/2016/10/mikrotik.html
Вопрос: Стоит ли хранить зашифрованные данные пользователя в Local/Session Storage на клиенте?

Лучший ответ:
Это просто идеальная иллюстрация к известному высказыванию Дональда Кнута "Преждевременная оптимизация - корень всех зол".
Сначала высасываем из пальца проблему: "тратится время на обращение к бд". Сколько там его тратится, тратится ли вообще, замедляет ли это систему, является ли вообще это проблемой - все эти вопросы нам неинтересны. Мы хотим грудью на амбразуру, стать героем и получить медальку. 
После этого начинаем проблему решать. 
Значит, чтобы сэкономить время на запросе к базе, которая обычно лежит локально и обычное обращение занимает микросекуны, мы решаем закэшировать данные на клиенте. Который может быть в тысяче километров, а пинг в сотни миллисекунд - не редкость. И вот мы решаем что клиент будет с каждым запросом отправлять массив данных. Причем таких данных, которые на сервере и так. есть. Гениально!Стоит ли так делать и почему;
не стоит потому что не надо высасывать проблемы из пальца.Какой будет прирост производительности
ОтрицательныйКак Вы решаете подобные вопросы.
МЫ ИХ НЕ РЕШАЕМ. 
Мы решаем реальные проблемы, объективно существующие. 
А воображаемые проблемы высосанные из пальца решать не следует.

Худший ответ:
Вот основные причины.
https://habr.com/ru/post/349164/
https://habr.com/ru/post/143259/
В общем храните в сторадже некритичную информацию, даже можете хранить роль в системе, если ваш фронтэнд предполагает разное поведение для разных ролей, но единственное чему можно доверять это идентификатор сессии в паре с ip. Все остальное доставайте на сервере. Если будет проседать, то поставьте redis для кэширования
Вопрос: Какой есть адекватный бесплатный GUI для git?

Лучший ответ:
Tortoisegit,  но не уверен, есть ли портативная версия

Худший ответ:
SmartGit. Или консоль.
А так да, как сказал Decadal, можно на origin поставить гитлаб/битбакет, или вообще юзать их хосты - и смотреть прямо через вебмодру
Вопрос: Компьютерный класс для обучения по фотошопу, 3d max. Из чего выгоднее и лучше собирать?

Лучший ответ:
тонкие клиенты при работе с графикой и точным позиционированием?
Я не спец в 3d, но уверен что отдельные ПК

Худший ответ:
Терминальник выгоден там где динамические нагрузки на вычислительную систему (1с, офис и подобная хрень). Там где один активно работает а 10 простаивают на общем ресурсе.
В компьютерном классе нагрузка практически всегда статическая: Все 25 чел в один момент времени делают одно и тоже.
Соответствено никакой выгоды в распределении ресурсов терминальным сервером нет.
Поэтому комп классы всегда выгодно строить на локальном железе: ПК, неттоп, баребон, моноблок, ноутбук.
Вопрос: Почему если в php сложить число и текст, то выведется только число. Текст и число, то все равно только число?

Лучший ответ:
В php + это сложение, конкатинация строк будет ..echo '123' . 'abc' . '<br>';
echo 'abc' . '123' . '<br>';

Худший ответ:
Плюс в php всегда возвращает число. Если хотите объединение как строк, используйте оператор точка '.'.echo 123.'xxx'.987;
Осторожно так как точка ещё и десятичный разделитель
ещё неплохой вариант использовать автоматическую подстановку значений переменных, если строка в двойных ковычках то $ в строке обрабатывается с заменой на заявление переменной.$xyz='asd';
echo "\$xyz='$xyz'";
выведет$xyz='asd'
Вопрос: Как исправить зависание на логотипе виндовс 10?

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

Что можно предпринять:

1.Протестировать оперативную память
Делаете загрузочную флэшку с memtestом и грузитесь с нее. 
Гоняете мемтест. Если ошибки есть и у вас несколько плашек памяти, то нужно выявить сбойную плашку. Оставляете одну плашку и повторяете мемтест, потом меняете плашку и снова тест и т.д. На какой плашке будут ошибки ту и надо поменять. Сбойными могут быть несколько плашек памяти.
Зависания в этом случае могут быть как признаком ошибки памяти так и признаком других проблем.

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

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

4. Тест диска.
Вряд ли в проблеме виноват диск, но это сделать легко, загрузившись с той же флэшки.

5.Тест блока питания
Если есть возможность поменять блок питания на заведомо рабочий, отключить все диски, загрузится с флэшки и погонять нагрузочные тесты. Если зависаний не будет (но были на п.1), то видимо причина в блоке питания - покупаете новый БП.

Если все вышеперечисленное не поможет выявить проблему - в сервис. В этом случае причина скорее всего в материнке или в самом проце.

Хороший конструктор для изготовления загрузочной диагностической флэшки: https://adminpe.ru/winpe10/

Худший ответ:
вирус или проблема с видеокартой
Вопрос: Как два IP адреса прописать в один порт Микротик?

Лучший ответ:
Прописать 2 адреса не проблема. Прописывается на второй интерфейс физический.  Вопрос зачем? Чего хотите добиться в итоге? Чтобы клиенты локалки ходили через разные ip адреса? Для этого надо трафик в NAT разделять и указывать каждому хосту локалки свой out-interface

Худший ответ:
У вас Нат маскарадингом, а надо нат через src-nat , dst-nat 

Тогда будет возможность указать исходящий интерфейс в настройках нат. И можно уже на один ИП повешать один сервис, допустим Веб-сайт или что там у вас.
 А на второй ИП что-то другое.
Вопрос: Что учить зная базу HTML, CSS?

Лучший ответ:
JavaScript конечно. Дальше практика, ещё дальше сборщики, типа webpack, а вместе с ним и css препроцессоры, вроде sass. Дальше фреймворки, типа vue, react...

Худший ответ:
JavaScript
Для начало можно посмотреть плейлист Александр Лущенко там просто и понятно.
Потом скачать какой-нибудь курс например webformyself там больше теории.
Потом сами почувствуете что дальше:)
Вопрос: Я пишу телеграм бота с помощью TelegramBotApi. Как сделать?

Лучший ответ:
Используй три переменные и три присваивания

Худший ответ:
используй register_next_step_handler. Как это делать - информации полно в интернете, в том числе и на этом ресурсе.
Вопрос: Как получить данные input?

Лучший ответ:
document.querySelector('.класс').value

Худший ответ:
Можно отправить их с помощью Fetch, используя POST
Вопрос: Не могу найти что блокирует выделение/копирование текста на сайте?

Лучший ответ:
Как минимум есть скрипт, который запрещает правый клик мыши 

Худший ответ:
<a id="toTop">&#10148;</a>

        <meta http-equiv="imagetoolbar" content="no"><!-- disable image toolbar (if any) -->
        <script type="text/javascript">
            /*<![CDATA[*/
            document.oncontextmenu = function() {
                return false;
            };
            
            // ---удалить это---
            document.onselectstart = function() {
                if (event.srcElement.type != "text" && event.srcElement.type != "textarea" && event.srcElement.type != "password") {
                    return false;
                }
                else {
                    return true;
                }
            };
            // -------

            // ---и это---
            if (window.sidebar) {
                document.onmousedown = function(e) {
                    var obj = e.target;
                    if (obj.tagName.toUpperCase() == 'SELECT'
                            || obj.tagName.toUpperCase() == "INPUT"
                            || obj.tagName.toUpperCase() == "TEXTAREA"
                            || obj.tagName.toUpperCase() == "PASSWORD") {
                        return true;
                    }
                    else {
                        return false;
                    }
                };
            }
            // ------

            document.ondragstart = function() {
                return false;
            };
            /*]]>*/
        </script>