pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Перегрузки методов без дублирования кода в C#?

Лучший ответ: В случаях, когда код это позволяет, можно вынести основной функционал в один из методов (базовый для вас) и вызывать его из других перегрузок:string GenerateText(string text)
{
 return GenerateText(text, "Без заголовка");
}

string GenerateText(string title, string text)
{
 return title + Environment.NewLine + text;
}
Можно использовать необязательные аргументы, они как раз должны хорошо подойти в случае 1-3 различающихся параметров:string GenerateText(string title, string text = "Без заголовка")
{
 return title + Environment.NewLine + text;
 }
Никто не может запретить вам передавать вместо не используемых аргументов null и обрабатывать в коде:string GenerateText(string title, string text)
{
 return title + Environment.NewLine + (text ?? "Без заголовка");
}
А в случае неопределённого числа однотипных аргументов используем params:string GenerateText(string title, params string[] text)
{
 return title + Environment.NewLine + string.Join(Environment.NewLine, text);
}
Комбинируйте этот базовый набор и его должно быть вполне достаточно для аккуратного кода. И само собой, выделяйте повторяемый функционал в методы и классы для последующего повторного использования.

Худший ответ: Пишу общий метод (возможно, со слегка другим набором параметров), который вызываю из каждой из перегрузок. Впрочем, чаще удаётся обойтись вызовом второго метода из первого.
Вопрос: Чем открыть/посмотреть .exe?

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

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

Лучший ответ: на SO есть ответ

function post_to_url(path, params, method) {
    method = method || "post"; // Set method to post by default if not specified.

    // The rest of this code assumes you are not using a library.
    // It can be made less wordy if you use one.
    var form = document.createElement("form");
    form.setAttribute("method", method);
    form.setAttribute("action", path);

    for(var key in params) {
        if(params.hasOwnProperty(key)) {
            var hiddenField = document.createElement("input");
            hiddenField.setAttribute("type", "hidden");
            hiddenField.setAttribute("name", key);
            hiddenField.setAttribute("value", params[key]);

            form.appendChild(hiddenField);
         }
    }

    document.body.appendChild(form);
    form.submit();
}


Худший ответ: Если старые браузеры не критичны, поможет обьект FormData
developer.mozilla.org/en-US/docs/Web/API/FormData
Вопрос: Путь разработчика игр. С чем и куда?

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

Худший ответ: Мало просто изучить эти термины, более важно - столкнуться с проблемами, которые решаются с применением этих терминов, и решить их. 
Сперва стоит изучить основы программирования и комп. графики. По C# могу посоветовать книгу от Лафоре, но графике гугл в помощь, или просто изучить компоненты Unity, где объясняется что и для чего нужно (Шейдеры, деревья..). 
Ко всему этому при разработке игр (особенно 3D) часто придется сталкиваться с линейной алгеброй и аналитической геометрией, но в данном случае зубрежка этих дисциплин особых плодов не принесет, лучше уж сразу на практике узнавать "что и как".
Разница Offline от Online в том, что во втором случае еще придется позаботиться о серверной части и взаимодействии с ней. А тогда одним языком программирования не получится ограничиться.
Вопрос: С чего лучше начинать программировать?

Лучший ответ: Начинайте либо с Си либо с Паскаль. Что конкретно выберите — не очень важно. Оба языка хороши тем, что сразу приучат следить за памятью.

Я все-же склоняюсь к Си, поскольку сейчас это более популярный язык.

Худший ответ: В школе начинал с QBasic, в универе С++, сейчас С# 
Надо было сразу на С# подсаживаться.
Вопрос: Как получить callback своей функции?

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

Худший ответ: callback это вроде функция которая будет совершенна после завершения одной функции.
$('h1').hide(3000,function(){
		alert('Конец!');
	});
Вопрос: У кого-нибудь есть образец договора оферты на услуги веб-разработчика?

Лучший ответ: Странно, мне гугл выдает тыщи их.
Как неплохие примеры:раз, два, три.

Худший ответ: Публичная оферта и договор с клиентов - это вообще разные вещи.
Публичная оферта это ваше обещание, например, на обработку данных или когда вам сразу что-то оплачивают. В российских реалиях для работы с иностранными агентами - вам нужно заключать контракт, составлять паспорт сделки и согласовывать сделку с банком и их внутренними службами.
Для заключения контракта можно взять любой иностранный контракт, который устраивает вас и вашего клиента. Его надо будете перевести и в рамках этого договора и жить.
Оптимально привлечь какой-нить сервис вроде knopka.com
Вопрос: Как узнать количество посетителей?

Лучший ответ: www.similarweb.com - может помочь

Худший ответ: Если это не ваши сайты, то посмотреть посещаемость на данные сайты вы не сможете.
Вопрос: Нестандартные клавиши смены раскладки в Windows 7

Лучший ответ: Поскольку для меня «пунто» слишком тяжел, то когда-то нашел и с тех пор использую keyla. Позволяет навесить переключение на любую (у меня капс) клавишу; поддерживает те же раскладки, что установлены в винде. И, кажется, какая-то из версии крашила IE8 под семеркой =) Но тут рекомендую самому скачать и попробовать.

Худший ответ: А может кто подскажет, как смену транслитерации (то, что пунтосвитчер по принтскрин делает) повесить на капс?

Язык переключаю левым контролом
Вопрос: Как получить объект класса из списка по значению одной из переменных?

Лучший ответ: Linq вроде, у списка TestList.where(o => o.Var2 == 3).FirstorDefault();

Худший ответ: ну либоvar local = testList.Find(x=>x.Var2 == 3);
var local = testList.FirstOrDefault(x=>x.Var2 ==3);
и т д
Вопрос: Где купить книги для электронной читалки?

Лучший ответ: По русскоязычным книгам я ничего не посоветую, кроме как забить на их поиск и выучить английский.
По английским: www.safaribooksonline.com/ (доступ по подписке), oreilly.com/ и еще я использую www.wowebook.com (я тут качаю книги на шару, однако везде есть ссылка на покупку книги в Амазоне для желающих)

Худший ответ: www.manning.com/

Много отличных книг, в том числе из серии "… in Action". Возможность ознакомиться с книгами еще до выхода в печать по программе MEAP — Manning Early Access Program.
Одна из последних вышедших книг, например, Single Page Web Applications.
Все книги доступны в форматах PDF, ePub, и Kindle.
Вопрос: Си. Как сделать функцию, умножающую число?

Лучший ответ: Передать a по ссылке или указателю и делать внутри нее что угодно.

Худший ответ: использовать ссылку или указатель в качестве параметра.
Вопрос: Что читать по разработке игр на Java?

Лучший ответ: Именно книг по созданию игр на Java нет, но как вариант скачать литературу по Java,
в не должны освещаться возможности языка,
habrahabr.ru/post/145433
подборка книг habrahabr.ru/post/66568

Худший ответ: Нашел неплохую на мой взгляд серию туториалов с достаточно глубоким объяснением всего происходящего и вообще списки, туториалов, которые я не нашел сразу, перед тем как задавать вопрос. Жаль, конечно, что нет более-менее серьезной литературы.
Вопрос: Для чего используются «-» (one dash) и «--» (double dash) в командной оболочки unix?

Лучший ответ: Есть правило: если параметр однобуквенный, то используется одинарное тире, а если длиннее (слово), то двойное тире. Но это правило не везде соблюдается.
Ещё в некоторых командах двойное тире означает остановку обработки входных параметров.
Ещё одинарное тире обычно служит индикатором использования стандартного ввода (stdin) вместо файла.
Но при этом cd - это переход в предыдущую директорию.

Худший ответ: "-"  - когда параметр/параметры команды односимвольные 
Например "cp -rf test/* new": указываем два параметра "r" и "f'
"--" - когда параметры состоят более чем из одного символа. 
Например "cp --help"
Вопрос: Как корректно предложить владельцу улучшить его сайт?

Лучший ответ: Ну, смотря что за сайт, и смотря зачем тебе это нужно.
Как вариант - забухать с ним и тонко в процессе из салата намекнуть, что его сайт го*но.

Худший ответ: Сделать бесплатный технический и SEO аудит. Говорить только правду и намекать на проблемы в будущем, а так же дать примерное представление о перспективах после реконструкции.
Еще вариант, если проект не большой и больше в учебных целях, то можно сначала сделать отдельно, а потом уже предложить за н-ую суму.
Вопрос: Литература по анализу изображений и видео

Лучший ответ: Посмотрите здесь.

Худший ответ: Посмотрите здесь.
Вопрос: Какие веб-инструменты оптимальны для построения HTML-таблицы по принципам сводной таблицы Excel из увесистого .CSV?

Лучший ответ: Мне кажется вам надо для начала нужно :
1 ) создать БД для хранения этих данных.
2)  Реализовать импорт данных в нее из .CSV
 далее, когда у вас будут структурированные данные , вы сможете делать с ними что угодно.
1) отображать пользователю в удобном виде (модерируя доступ к той или иной части информации)
2) генерировать любые отчеты 
3) выгружать отчеты в необходимом формате (xls, pdf etc)
4) добавлять новые отчеты не изменяя основную структуру данных
для реализации БД, вам нужен сервер. Самый распространенный инструмент MySQL (есть и другие)
P.S.  JS ,как правило, используется на клиенте (хотя, конечно не всегда). На сервере наиболее часто PHP.

Худший ответ: Сервер вам понадобится в любом случае
Подойдет любой серверный язык ─ php, python, что то еще ...
Вопрос: Подскажите файлменеджер, умеющий работать через Интернет

Лучший ответ: Чтобы предоставить доступ через интернет у вашего коммуникатора должен быть белый IP адрес. Вы уверены, что он будет? Если будет то чем не подходит FTP?

Вообще попытаться понять чего вы хотите, то вот 2 решения, простое и сложное:
1) подключите коммуникатор кабелем к компьютеру
2) используйте Dropbox\Яндекс.Диск\Google Drive

Худший ответ: я не понимаю, вчем разница между интернет и вайфай, и там и там TCP, вам надо только знать адрес. Если провайдер дает серый, стройте VPN до дома или вашего роутра и только так вам будет доступен ваш телефон. Я так думаю.
Вопрос: Удаленный рабочий стол на винде на сервере, ищу самый дешевый вариант в аренду

Лучший ответ: Вам надо искать Windows VPS
Как-то давно на хабре была статья на эту тему: habrahabr.ru/post/86470/

Худший ответ: Поищите «daas» — desktop as a service. 
Посмотрел несколько ссылок (ActiveCloud, Agava, Softiline)… как-то дорого. Возможно это не то, что вам надо.
Вопрос: Использование шрифтов в дизайне (как не нарушить права собственности)

Лучший ответ: Ещё рекомендовал бы к прочтению.

Раз, два.

Кстати, интересно.

Однозначно незаконно использование шрифта «Verdana», права на который принадлежат Майкрософт, при просмотре документов, скажем, в программе «Консультант Плюс», если эта программа используется вне операционной системы «Windows», например, через соответствующие эмуляторы, в Linux. В отношении шрифтов иных производителей Майкрософт подчёркивает, что лицензия не предоставляет прав на сублицензирование, и для использования в каждом конкретном случае необходимо обращаться к производителю шрифта. Соответственно, воспользоваться всё тем же шрифтом «Times New Roman» можно только после получения согласия его правообладателя.

Из-за этих проблем создатели операционной системы «Red Hat Enterprise Linux» или «Fedora»7 были вынуждены заключить договор о приобретении прав на шрифты, внешне сходные с Times New Roman (в настоящее время эти шрифты доступны под названием «Liberation»).

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

Лучший ответ: Для начала объясню почему индексы в вашем случае не работают и не могут работать.
> OR links.domain LIKE CONCAT(sites.domain, '.%')
CONCAT - это функция, и вы работаете с результатом функции.
Т.е. получается что в вашем запросу нужно:
1. выбрать все строки из links 
2. подсодеденить к каждой строке по sites.domain  или sites.domain результат фунции.
=> нужно посчитать каждую строку каждый раз.
Это очень много.
что я бы сделал:
1. создал таблицу доменов
в ней:id | main_id |domain
1 | 1 | com.youtube
2. | 1 |com.youtube.www
3. | 1 |com.youtube.subdomain
Во всех таблицах - перешёл бы на этот ключ. 
2. тогда ваша выборка сокращается до:SELECT links.id, links.url, sites.id AS site_id, sites.description 
FROM links
LEFT JOIN domains ON links.domainId = domains.id
LEFT JOIN sites ON sites.id = domains.main_id
(смутно понимаю что вы хотели в этом запросе, поэтому уж не обессудьте :) )
Т.е. основной посыл:
переходите на int- ключи
PS: Так же это называется нормализация базы данных. Хранить много одинаковых строк - это плохо.

Худший ответ: 3НФ будет выглядеть такdomain_zone:
  parent = ForeignKey(domain_zone)
  name = Text

site_page
  domain_zone = ForeignKey(domain_zone)  
  url = URL
Суть такова: есть корневая доменная зона "." точка. 
Есть доменная зона com, у нее parent точка
У сайта bbc.com parent будет указывать на com
Вобщем делаем аналогично DNS
Вопрос: Как отправить PUT-запрос на нужный адрес (php, json)?

Лучший ответ: bit.ly/1CcEcUH первая же ссылка$data = array('username'=>'dog','password'=>'tall');
$data_json = json_encode($data);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($data_json)));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response  = curl_exec($ch);
curl_close($ch);

Худший ответ: Ну на js вы можете воспользоваться jQuery и написать небольшую ф-ю:$.put = function(url, data, callback, type){
 
  if ( $.isFunction(data) ){
    type = type || callback,
    callback = data,
    data = {}
  }
 
  return $.ajax({
    url: url,
    type: 'PUT',
    success: callback,
    data: data,
    contentType: type
  });
};
Вопрос: Как в форме обратной связи, созданной с помощью плагина contact form 7,добавить возможность прикрепить несколько файлов?

Лучший ответ: Самый простой способ использовать адон к плагину https://wordpress.org/plugins/multifile-upload-fie...

Худший ответ: Самый просто способ просто вывести поля для добавления файлов [file file-873][file file-178][file file-669] и так сколько угодно. Изначально показывать одну кнопку, а потом при нажатии "добавить еще файлы" показывать следующую кнопку. А сразу несколько файлов в одно поле не получится запихнуть.
Вопрос: Статистика использования приложений на iOS

Лучший ответ: Google Analytics, Flurry, Yandex статистика, TestFlight… Выбирай не хочу, недавно была хорошая статья про это.

Худший ответ: Неточный вопрос. Его можно понимать как
1) «есть ли возможность приложению узнать какие другие приложения открываются/запускаются»
Ответ: Нет нельзя
Но, можно на рутованом девайсе

2) «Есть ли способ собирать статистику использования (запуск/открытие) разрабатываемого приложения на iOS?»
Ответ дал hybridcattt

3) «Есть ли доступ к глобальной статистике запуска приложений» — 
Ответ — нет
Но есть косвенные оценки
Вопрос: Сколько минимально в день можно работать при максимальной эффективности?

Лучший ответ: Минуты полторы. Результаты моей работы не зависят от количества часов сидения на работе. Т.е. для приличия приходится 8 часов на работе отсиживать, но к реальному труду это отношения мало имеет. Иногда "тупняк" может длиться несколько дней, потом за пару часов могу сделать больше, чем за пару предыдущих недель. Программирование оно такое...

Худший ответ: 4-6 часов с перерывами на 1-2.
Вопрос: Для чего это поле на Тостере?

Лучший ответ: Межсайтовая подделка запроса.
В hhtp есть косяк, так же как картинку можно загрузить с другого сайта, можно и форму отправить на другой сайт. Т.е. злоумышленник может от твоего имени отправить форму на др. сайт на котором ты залогинен, если ты случайно попадёшь на сайт злоумышленника (пройдешь по ссылке в письме например). Так можно поставить кому нибудь плюс Вконтакте от твоего имени или перевести деньги. Но злоумышленник не может увидеть этот код: 7d5ff819-b9db-4aa4-8bf1-b4c65122c4, поэтому и подделать он его не сможет. Причём код этот всегда разный (используется односторонняя функция), т.е. злоумышленник не может зайти на нужный сайт, скопировать этот код и вставить на свой плохой с которого форма отправляется.

Худший ответ: https://en.wikipedia.org/wiki/Cross-site_request_f...
нет, https не про ето
хттпс - "я уверен, что я получил страницу с того сервера с которого нужно"
защита цсрф - "сервер уверен, что данные отправлены с той страницы, которую сервер отправил пользователю"
Вопрос: Сделать git clone в не пустую директорию

Лучший ответ: не изменяемую часть вынесите в отдельный реп и сделайте submodule (если оно все лежит в одной папке), и итоге когда вы будете клонировать реп о у вас там будет только ваш код, а но всегда есть возможность вытянуть и фреймворк

Худший ответ: Может сделать так, чтобы изменяемая часть лежала в отдельной директории?
Вопрос: Как узнать все внешние ip сервера из PHP?

Лучший ответ: Для линукса:
$array = `/sbin/ifconfig | grep \ *inet\ addr`;
(не уверен в слэшах, команду скопировал из консоли).

Худший ответ: Дополнение к вопросу. Как узнать внешние ip своего сервера если он например на амазоне (EC2 + Elastic IP)
Это хороший пример когда адреса принадлежат не на прямую вашему VPS
Вопрос: Получение дохода от бесплатной онлайн-игры?

Лучший ответ: Страничка «Связь» на сайте радует глаз))

Худший ответ: Просто так наобум и не скажешь. Нужно разработать план монетизации игры, причем разрабатывают его обычно ещё до запуска проекта. Но у игр есть один большой плюс перед простыми сайтам — в них можно продавать игровые ценности за реальные деньги. А вообще, вот, почитай: habrahabr.ru/blogs/webdev/119651/
Вопрос: Почему Ajax GET запрос, содержащий кириллицу, возвращает крокозябры?

Лучший ответ: Такое часто бывает, когда на веб-сервере (apache, nginx, etc) не указана кодировка

Худший ответ: Или в запросе ajax не указана нужная кодировка или при выводе на экран в meta тегах. Когда-то сам долго мучался.
Вопрос: Wifi точка доступа на 1000 клиентов

Лучший ответ: cisco wlc2504 как контроллер +air-lap-1142 в качестве точек, в нужном количестве, из расчёта 10-15 человек на точку.

Худший ответ: Возможно, это будет полезно: habrahabr.ru/post/196562/, хоть и не совсем то, что нужно.
Вопрос: Что почитать по IT-Консалтингу?

Лучший ответ: Что почитать по IT-Консалтингу?Книги разумеется.Подходят ли книги 70-80 годов? Вполне.Есть ли особенности национального подхода? Да, британцы например предпочитают читать у камина.

Худший ответ: Читайте блоги тех, кто преуспел в IT-консалтинге. Найдёте там информацию о книгах, которые которые помогут вам развиваться в направлении.
Вопрос: Совместное использование AngularJS и jQuery UI Spinner?

Лучший ответ: По-моему нужно как-то так. 

<body ng-controller="ctrl"> 
      <label>FirstVal: </label>
      <input ng-model="FirstVal" spinner>
      <br>
      <label>SecondVal:</label>
      <input ng-model="SecondVal" spinner>
      <br>   
  Result: {{result}}
  
</body>


var MyModule = angular.module('MyModule', []);

function ctrl($scope, numberFilter) {
	$scope.FirstVal = 3000;
	$scope.SecondVal = 2000;
    $scope.result = $scope.FirstVal + $scope.SecondVal;
}

MyModule.directive('spinner', function (numberFilter) {
  return {
    restrict: 'A',
    require : 'ngModel',
    link: function (scope, element, attrs, ngModelCtrl) {
        
      $(function(){
        element.spinner({
          min: 0,
          max: 10000,
          step: 1000,
          spin: function( event, ui ) {
            ngModelCtrl.$setViewValue(ui.value);
            scope.result = scope.FirstVal + scope.SecondVal;
            scope.$apply();          
          }
        });
      });
	}
  };
});


http://jsbin.com/AVeTini/3/edit

И почитайте на досуге чем AngularJS от jQuery отличается.

http://stackoverflow.com/questions/14994391/how-do-i-think-in-angularjs-if-i-have-a-jquery-background

Худший ответ: Моё ИМХО:
1) Директива калькулятор вообще странная, но оставим её пока.
2) Делайте отдельную директиву, которая будет вешать спинер на элемент аналогично:
angular.module('imr.ui.date', [])
	.directive('datepicker', function () {
		return {
			restrict: 'A',
			require : 'ngModel',
			link    : function (scope, element, attrs, ngModelCtrl) {
				var opts = {
					dateFormat: 'mm/dd/yy',
					changeYear: true,
					onSelect  : function (date) {
						ngModelCtrl.$setViewValue(date);
						scope.$apply();
					}
				}
if (!(attrs.hasOwnProperty('ngReadonly') && scope.$eval(attrs.ngReadonly))) {
					$(function () {
//тут вешайте ваш спиннер
						element.datepicker(opts);
					});
				}
			}
		}
	});
;

<input type="number" id="spinner" ng-model="SecondVal" spinner><br>
Вопрос: Почему cmd не выполняет команды по установке?

Лучший ответ: Установите linux.

Худший ответ: пропишите путь до ruby в PATH.
Вопрос: Создание веб-страниц сайта на базе готовой БД. Как?

Лучший ответ: ой как ты ошибаешься в своих метафорах
для тебе ответ лежит на глубине, при которой тебя расплющит от давления
тебе все равно придется переписывать функционал сайта под запросы в БД
нет никаких простых решений
дуй на фриланс и плати
что за прикол - иметь интернет-магазин, который будет приносить деньги, но при этом не платить за него ни копейки? когда было, чтобы бизнес был бесплатным, учитывая дешевизну создания сайтов

Худший ответ: нарисовать такой костыль на том-же Symphony несложно. Но это именно что костыль. Потом захотите поиск,  потом корзину, потом еще что-то. 
Пока еще не погрязли в этом рукотворном хаосе - лучше выберите нормальный движок для магазина и потратьте время на миграцию данных в него. Сейчас потратите изрядно время - зато потом сэкономите.
Вопрос: Как добавить user функции в Twig?

Лучший ответ: twig.sensiolabs.org/doc/advanced.html

<?php defined('SYSPATH') or die('No direct script access.');

class My_Twig_Extension extends Twig_Extension {
	public function getName()
	{
		return 'my_twig';
	}
	
	public function getFilters()
	{
		return array();
	}
	
	public function getFunctions()
	{
		return array(
			'get_article' => new Twig_Function_Method($this, 'get_article',
				array('is_safe' => array('html'))),
		);
	}
	
	function get_article($id) {
		 //делаем выборку из БД и записываем в result
		 return $result;
	}
	
	public function getTests()
	{
		return array();
	}
}


В конфиге твига:

<?php defined('SYSPATH') or die('No direct script access.');

return array(
	'default'    => array(
		'extensions' => array(
			'My_Twig_Extension',
		),
	),
);


Худший ответ: Вообще такие вещи обычно делаются через HMVC.
Вопрос: Легкая программа для составления документации web-проекта?

Лучший ответ: Начните с простой Wiki. Например в Trac (может уже используете) весьма неплохая. Для диаграмм можно прикрутить Graphviz плагин.

Для БД рекомендую SchemaSpy. Умеет рисовать схамы с помощью того же Graphviz.

Худший ответ: мы использовали doxygen — позволяет генерить по коду диаграммы классов 
По БД — не знаю. Используем комментарии к полям и таблицам, 
reingeneering БД в диаграмму (логическими частями) любой визуальный инструмент: MySQLWorkbench (не оч удобен), DBDesigner4 www.fabforce.net/downloads/