Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Контекстная реклама — агенство или самостоятельно?

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

Худший ответ:
Лучше всего научится самому, разобраться и отдать ответственному сотруднику или агентству. 
В этом случае вы сможете контролировать и направлять в нужную сторону ваши рекламные кампании. 
Агентство, какое бы отличное не было - не сможет учесть все микронюансы конкретного бизнеса, но с другой стороны всё на себя взваливать (особенно если не умеете) не стоит, реклама тонкое дело - лучше отдать экспертам!
Ну а насчет обучения:
Уже в эти выходные 15-16 апреля пройдет курс Лёгкий Яндекс.Директ в Санкт-Петербурге.
http://confidence.su/event/курсдирект/
Я сам занимаюсь рекламой и сайтостроением уже более 14 лет. Есть сертификаты Яндекс и Google.
Но сколько видел курсов - все какие-то очень сложные и большей частью - теоритические. 
Прям вот взять и сделать после них непрофессионалам не получается.
Мой практический курс - это интенсивный двухдневный семинар для новичков и неопытных специалистов Директ, который позволит подобрать порядка 1000 отобраных целевых ключевиков (со списком из 500+ минус-слов), настроить основные виды рекламы - поисковая на пк, на мобильных, реклама в РСЯ, ретаргетинг. Получить CTR> 5% и как следствие очень вкусные места размещения за минимальные ставки. Я годами вышлифовывал оптимальную лакончиную формулу настройки, и приправил ее самыми последними нововведениями Яндекса и новыми трендами.
Об этом я могу говорить часами, но не буду утомлять, подробнее здесь: 
P.S.: И на очереди курс по Google AdWords, с экспертами из Google сделаем бомбу! )
Но об этом позже напишу. 
А вы пишите вопросы и пожелания!
Вопрос: Файловая система в ОЗУ?

Лучший ответ:
ОЗУ это большая матрица! :-)
Как бы вы не подумали что я прикалываюсь, но это так. На ОЗУ находятся банки (это те такие чёрные чипы торчящие из платы). В каждом банке находитя постоянно перезаписываемая матрица. Внутри всё работает по адресам. Чтение из ОЗУ происходит выбором рядка и солбца, после чего выдаётся информация. Всё работает на определенном такте.

Если вам надо хранить файлы в ОЗУ на уровне ОС, используйте RAM disk.

Худший ответ:
«На самом деле» вам уже ответили: в ОЗ данные хранятся как в одномерном массиве. Там нет ФС, есть только «адреса», номер ячейки памяти (положительное целое число). Поэтому в 32-битных системах размер памяти ограничен 3 гигами — большего числа там не создать.
Вопрос: Это filezilla, что тут надо делать?

Лучший ответ:
Очевидно - ввести правильный логин и пароль.

Худший ответ:
они верные
Вопрос: Отразиться ли смена хостера на позициях сайта?

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

Худший ответ:
Перенесите файлы и отладьте работу на временном домене. Потом ночью переписывайте днс.
Вопрос: Какой есть хороший инструмент для прототипирования сайтов?

Лучший ответ:
1) Wireframe.cc: пожалуй, самый простой сервис, находка для быстрых набросков 
https://wireframe.cc/ 
2) Balsamiq: простой и интуитивно понятный ресурс 
balsamiq.com 
3) Axure: идеальный ресурс для проектировщиков и менеджеров 
www.axure.com 
4) Invision: мощный онлайн-сервис, с огромным набором дополнительных функций 
www.invisionapp.com 
5) POP: приложение, бумага и карандаш - это все, что вам требуется для создания интерактивного прототипа 
https://popapp.in/ 
6) Moqups: Помимо прототипов можно создавать карты сайта, диаграммы и многое другое 
https://moqups.com/ 
7) Mockflow: удобный инструмент, с неперегруженным функционалом 
www.mockflow.com 
8) Proto.io: незаменим для проектирования интерактивных прототипов приложений 
https://proto.io/ 
9) UXPin: полезный и интересный сервис для профессионалов 
www.uxpin.com 
10) Omni Graffle: излюбленный сервис для приверженцев iOS 
www.omnigroup.com/omniGraffle

Худший ответ:
www.axure.com
сюда вопрос быстрее вбить чем в гугол?
Вопрос: Как перевести код во всех файлах из табов в пробелы phpstorm?

Лучший ответ:
Выделить файлы в проект эксплорере используя ctrl или shift  + click, потом Ctrl + Alt + L. 
Только тогда он не просто заменит табы на пробелы, но и применит текущий кодстайл.

Худший ответ:
Выделить файлы в проект эксплорере используя ctrl или shift  + click, потом Ctrl + Alt + L. 
Только тогда он не просто заменит табы на пробелы, но и применит текущий кодстайл.
Вопрос: Почему scanf возвращает неверное значение для переменной типа size_t?

Лучший ответ:
char hmac[40];
auto scan_count = sscanf(cookie.c_str(), cookie_format, &uid, &hmac);На входных данных:
uid=20364-726552704a0366dc3e0ca627e6ebacdeb8ecff70
получаем следующее:
uid=20224 hmac=726552704a0366dc3e0ca627e6ebacdeb8ecff70
Потому что hmac[40], а должен быть hmac[41] судя по тому, что в строке 40 символов. Переполнение буфера, все дела. И %s лучше заменить на %40s

Худший ответ:
Вы уверены что входные данные верны? Попробуйте передать просто строку. Такой код дает на выходе ровно то что ожидается: 20364-726552704a0366dc3e0ca627e6ebacdeb8ecff70size_t uid;
char hmac[41] = "";
sscanf("uid=20364-726552704a0366dc3e0ca627e6ebacdeb8ecff70", "uid=%zu-%s", &uid, &hmac[0]);
printf("%zu-%s\n", uid, hmac);
Вопрос: Как организовать работу удаленных программистов?

Лучший ответ:
- Возможно ли найти ответственных и самостоятельных людей?
да- Каким образом следует контролировать сотрудников? 
а как вы это делаете в офисе ?Если ли смысл использовать тайм-трекеры на ПК работников?
нет- Как начислять ЗП? Использовать фикс. ЗП / оплачивать позадачно / почасово?
зависит от того как принято у вас в компании- Сколько в среднем платить удаленному PHP-программсту средней квалификации (junior / middle)?
столько же сколько и обычному

Худший ответ:
- Сколько в среднем платить удаленному PHP-программсту средней квалификации (junior / middle)?
Удаленно охотнее нанимают высококвалифицированных, поднять уровень junior стоит сил и времени, а выращенный эксперт не испытывает лояльность к удаленной компании.  Junior удаленно - редая вакансия, будет много желающих.
Вопрос: Примеры приложений на Asp.net MVC 5 со слоем бизнес логики?

Лучший ответ:
nopcommerce поковыряй, он хоть и переусложнён, но как пример хорош

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

Лучший ответ:
Исключения и какой-нибудь глобальный обработчик.

p.s. if на switch бы заменить)

switch($result->getError()->getCode()) {
      case  ApiClient::ERROR_NOT_ENOUGHT_UNITS:
        //...
        break;
      case ApiClient::ERROR_OBJECT_NOT_EXISTS:
        //...
        break;
      default:
        //...
        break;
}


Худший ответ:
Может я ошибаюсь, но в Вашем примере все зависит от
$apiFacade->getData()

Если в этом методе может быть брошено исключение, то нужно их обрабатывать. Если ошибка и код всегда возвращаются как результат работы метода getData, то нужно использовать первый вариант. Если getData бросить исключение, то оно и в первом примере тоже будет. Только Вы его не обработали.
То есть обработка ошибок АПИ в клиенте зависит от того, в каком виде АПИ возвращает ошибки в клиент.
Вопрос: Как поставить Ubuntu 16.04.1 LTS на раздел диска C:/ не повредив D:/?

Лучший ответ:
При установке выбираете manual partition, выбираете sda3 как точку монтирования для / (root), указываете, что нужно форматировать данный раздел. Другие разделы можете не трогать, а можете примонтировать куда-нибудь в /mnt (например, sda4 в /mnt/data/). Просто не нужно менять файловую систему раздела или форматировать раздел, и всё будет в порядке :)
У меня дружно сосуществуют win, mint, kali и общий раздел с данными, так что проблем быть не должно. Хотя в любом случае данные лучше забэкапить. Если нет внешнего харда, лучше в облако на mega или mail.

Худший ответ:
Доброе утро.
Вот ссылка
Вопрос: Как активировать пункт в BIOS?

Лучший ответ:
Вам надо найти драйвера SATA для контроллера жесткого диска, записать в распакованном виде на флешку. В начале установки ОС внизу будет строчка "Для загрузки драйверов нажмите F?" (не помню какая клавиша). Потом выйти на флешку, драйвера подгрузятся, и установка пойдет дальше. Либо искать дистрибутив ОС с интегрированными драйверами для контроллера.

Худший ответ:
Компьютер достаточно свежий, есть вероятность, что режим IDE контроллера SATA может быть не реализован совсем. Но это не точно. Драйверов SATA контроллера для дискеты, которую можно подсунуть при установке XP, под такую свежую машину вроде как нет.
Попробовать включить опции можно различными версиями программы AMIBCP, но предварительно нужно снять дамп.
Можно попробовать грузить XP через виртуальную машину.
Вопрос: Как веб-дизайнеру избавиться от топорности в своих работах?

Лучший ответ:
1. Читайте теорию.
2. Изучайте крутые сайты. Не просто любуйтесь чужим портфолио, а изучайте его «под микроскопом». Ваша задача понять,  почему сайт выглядит круто: изящно, потому что красиво подобраны шрифты? текст легко читается, потому что аккуратная типографика и соблюдается вертикальный ритм? сайт выглядит чистенько, потому что все элементы выровнены по модульной сетке? сайт ощущается легким, потому что грамотно использовано пустое пространство?  Попытайтесь себе ответить на такие вопросы, исходя из изученной теории.
Если вы не можете понять какими средствами дизайнер сделал крутой сайт → читайте теорию.
Если теория расходится с практикой, значит вы не полностью изучили теорию или сработало исключение или вы пытаетесь применить не ту теорию, → продолжайте изучать теорию.
3. Анализируйте подробнее. Обращайте внимание не только на то, что видно, но и на то, что не заметно.  Откройте чужой дизайн (скриншот) в графическом редакторе и попробуйте подобрать модульную сетку, которую использовал дизайнер. Померяйте отступы между элементами, ищите закономерность. Так вы лучше поймёте теорию.
4. Делайте упражнения. Откройте чужой дизайн (скриншот) в графическом редакторе и отрисуйте его как под калькой. Попытайтесь уловить ход мыслей и порядок действий того дизайнера. Усложните и отрисуйте (повторите) следующий дизайн на глаз, а потом сравните со скриншотом исходного дизайна. Проанализируйте отличия. Так вы закрепите теорию и набьете руку.
 Действуйте по алгоритму «теория» → «поиск чужих преимуществ» → «анализ чужих преимуществ» → «собственные эксперименты» вы быстрее повысите качество своих работ, потому что будете развиваться осознанно, а не случайным образом натыкаться на хорошие решения.

Худший ответ:
Дело в желании экспериментировать и доводить улучшения до конца. Типа вы всё сделали смотрите и думаете " а дай я вот тут уголок закруглю" а что будет если я тут полосу добавлю/уберу. Т.е. некоторая дотошность что ли, идеализм. Потому что когда человек сделал а у него ещё 3 проекта в очереди он такой "и так сойдёт" )))
Вопрос: Как запретить Windows самой перезагружаться после обновлений?

Лучший ответ:
Run -> gpedit.msc

Local Computer Policy -> Computer Configuration -> Administrative Templates -> Windows Components -> Windows Update.

Дважды нажмите на политику “No auto-restart with logged on users for scheduled automated updates installation”.

Отметьте параметр “Enabled” и нажмите Apply.

Худший ответ:
А выбрать «Download updates automatically but let me choose whether to install them» — не подходит?
Вопрос: Упал faсebook.com?

Лучший ответ:
Так anonymous обещали же.
Уже работает.

Худший ответ:
> nslookup www.facebook.com 8.8.8.8
╤хЁтхЁ: google-public-dns-a.google.com
Address: 8.8.8.8

*** google-public-dns-a.google.com не удалось найти www.facebook.com: Server failed
Вопрос: Имеет ли смысл для seo-оптимизации — в урлах навигационных страниц прописывать полностью «тайтл»?

Лучший ответ:
Если будут полностью повторять title - то скажется либо отрицательно, либо никак. 
А зато короткие url-ы и выглядят аккуратнее, и копировать их удобнее.

Худший ответ:
detskiesadymoskvy.ru/metro/aviamotornaya
Такие урлы предпочтительнее.
Во-первых, повторение слов в урле поисковые системы могут воспринять за попытку воздействия на алгоритм ранжирования и наложить санкции
Во-вторых, для коротких урлов поисковики быстрее и корректное выводят в сниппете навигационные цепочки
В-третьих, вдруг кому-то придётся диктовать урл по телефону, с коротким урлом это сделать намного удобнее.
Вопрос: Недорогой роутер способный работать в режиме повторителя

Лучший ответ:
Взял себе для этих же целей Asus N12. отлично работает.

Худший ответ:
Возможно и придётся чутка плясануть, чтобы разобраться. Однако после вы получите универсально знакомую платформу под любые задачи. 
на практике использую 6 экземпляров различных роутеров этого производителя. Без проблем. 
market.yandex.ru/guru.xml?CMD=-RR=9,0,0,0-PF=1801946~EQ~sel~7855556-VIS=2006A-CAT_ID=651524-EXC=1-PG=10&hid=723087&filter=#=&greed_mode=false

Будут вопросы, пишите в личку, постараюсь помочь.
Вопрос: Psd без фотошопа?

Лучший ответ:
К выше всему перечисленному,  добавлю assets.adobe, очень удобный инструментарий для верстальщика, причем разделение по слоям, описание стилей css, цветовая гамма сайта, размеры, шрифты, работа с svg и сохранением img непосредственно в проект. Очень удобно и практично и бесплатно, получил ID Adobe и пользуйся.

Худший ответ:
Почему без фотошопа? Фотошоп сейчас стоит не дорого: вот например подписка для фотографов - 299 руб/мес
Вопрос: Как удалить файл из числа прикрепленных?

Лучший ответ:
Данные о файлах хранятся в объекте FileList, поля которого только readonly. $("#filename")[0].files
Это значит, что можно только посмотреть что там, но не менять. Следовательно остается либо удалить все.$("#filename")[0].value = "";
 Либо позволить выбирать только по одному файлу и для каждого файла свой <input type="file" name="filename" id="filename">Без атрибута multiple

Худший ответ:
Ваша задача решается на чистом Javascript, путем создания своего Blob объекта (копируете в него данные из files (объект FilesList), затем отправляете на сервер посредством XMLHttpRequest.
Только надо знать основы JS и придется разобраться в работе XMLHttpRequest.
Вопрос: Два ключа для разной расшифровки зашифрованного текста, возможно ли?

Лучший ответ:
Это один из вариантов стеганогрфии.

Единственный способ — засунуть в один контейнер два шифротекста и научить ПО по ключу выбирать нужный. Готовое такое ПО мне не встречалось.

Обычно идут более простым путём — скрывают сам факт наличия криптографического сообщения. Называется стеганография. Другой вариант — по вводу альтернативного пароля попросту разрушать шифроконтейнер. Навсегда :)

Hidden volume в TrueCrypt скорее всего решит ваши задачи. При этом вы можете иметь обычный том для отвода глаз :)

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

Лучший ответ:
Довольно странный вопрос. Нужно работать с той CMS, с которой вы уже знакомы. Я например делал бы на MODX.

Худший ответ:
Напишите свой плагин для wp. Там есть hook'и. Из wp можно сделать вообще, что угодно.
Вопрос: Как хранить информацию о событии, где участвуют два объекта?

Лучший ответ:
Первое, что приходит в голову: взять ID обоих объектов, отсортировать и склеить в строку через какой-нибудь разделитель. Такая "функция" будет давать одинаковый результат и для 1-2, и для 2-1 - что-то навроде "1:2".

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

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

Худший ответ:
Обычный хостинг можно разворачивать.
Вопрос: Google обрезает выдачу в соответствии с DMCA?

Лучший ответ:
Это уже много лет работает

Худший ответ:
У меня получилось запустить 32-х битную dll-ку под 64-х битной WinXP, после того как скопировал ее в c:\WINDOWS\SysWOW64. Возможно это вам поможет в основной проблеме.
Вопрос: Как заставить preg_match_all возвращать действительно все вхождения?

Лучший ответ:
(?=( \d+ \d+ )) Только оно возвращает еще и массив с пустыми строками и регулярка будет медленно работать с большими строками — типо O(count($string))

Худший ответ:
попробуйте позитивный просмотр вперед сразу после первой цифры
Вопрос: Есть ли общие требования к комментированию кода?

Лучший ответ:
Ну по современным тенденциям код не комментируют, а пишут документацию.  
https://www.phpdoc.org

Худший ответ:
Сильно связано с конкретными языковыми традициями.
Дело в том, что современные языки программирования самодокументирующие.
Читаем как пример как нужно комментировать:
https://github.com/golang/go/blob/master/src/time/...
Вопрос: Что за дела с mail.ru и postfix?

Лучший ответ:
Проблема в том, что в адресе отправителя указано "www-data@fra1" Это некорректный емейл адрес, т.к. fra1 через внешний DNS резолвиться во что будет?

Худший ответ:
Поставил в myhostname нормальный домен - заработало. Внимание вопрос, а как быть если у меня на серваке 20 доменов будет?
Вопрос: Как перенаправлять на базовый index файл?

Лучший ответ:
В HTML указать <base href="/">
сервер настроить так чтобы он на любой запрос(ну кроме статики и апи) отдавал ваш index.html
все

Худший ответ:
Попросить в тех поддержке, что бы в конфиге nginx прописали
location / {
      try_files $uri $uri/ /index.html?$args;
    }
Вопрос: Какую библиотеку использовать для парсинга html на php?

Лучший ответ:
как напишите что-то побыстрее Simple HTML DOM Parser - сразу выкладывайте. Быстрее только ручками. curl + регулярка

Худший ответ:
Верно сказал Максим Тимофеев!
Помимо этого, еще есть xpath и польский парсинг для блуждания по node-ам.
А цель то какая? (пример, хотя бы...)
Вопрос: Сортировка queryset?

Лучший ответ:
добавить надо еще поле в модель country, например
class Country(models.Model):
    ...
    sort = models.IntegerField(default=4000)
ну и России присвоить 1, и сортировать по двум полям sort, name
можно и через js

Худший ответ:
stackoverflow.com/questions/1336900/django-modelch...class YourForm(forms.Form):
    field1 = forms.ModelChoiceField(queryset = MyModel.objects.all() )

form = YourForm(initial = {'field1': instance_of_mymodel.pk })
или что-то наподобииqueryset=[
    Country.objects.filter(name="Russia"), 
    Country.objects.exclude(name="Russia").order_by("name")]
код не тестировал
Вопрос: Как будет лучше всего реализовать мультиязычность для маленького проекта?

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

Худший ответ:
можно реализовать вот так:
metanit.com/sharp/mvc/16.1.php
Вопрос: Какие есть журналы для программистов 1С и бухгалтеров?

Лучший ответ:
Диск ITS.

Худший ответ:
ITS его достаточно, плюс buh.ru. Ресурс www.nalvest.com по моему ИМХО сомнительный. В вышеуказанных сайтах разъяснения законодательства и его применение в программах 1с изложено намного лучше.
Вопрос: Почему все уперто направляют на msdn когда есть docs?

Лучший ответ:
Раньше не было никакого docs, появился он не давно, год или два как, а MSDN лет больше чем многим программистам

Худший ответ:
Просто привычка. Да и вся автоматическая справка уже давно настроена на msdn. Ну и дизайн получше, а к доку привыкать надо еще.
Вопрос: Вопрос по выводу контента Django в HTML?

Лучший ответ:
Ну так передавайте во вьюхах данные в контекст, и в темплейтах эти данные собственно выводите.
В views.py передаете в контекст какие-то данные:from django.http import Http404
from django.shortcuts import render
from models import КакаяТоМодель

def my_view(request, какой_то_id):
    try:
        my_obj = КакаяТоМодель.objects.get(pk=какой_то_id)
    except КакаяТоМодель.DoesNotExist:
        raise Http404(u"Объект КакаяТоМодель с id={id} отсутствует в базе".format(id=какой_то_id))

    какая_то_переменная = ФункцияДляПолучениЧегоТоИзБазы()
    return render(request, 'какой_то_темплейт.html', {'my_obj': my_obj, 'my_var': какая_то_переменная})
а в темплейте получаете то что передали в контекст...
{{ my_obj.какое_то_поле }}
{{ my_obj.какое_то_поле }}
....
{{ my_var }}
....
А вообще вот это:class BannerView(View):
model = Banner
template_name = 'home.html'
def get_queryset(self):
return Banner.objects.all()
нужно заменить на это:class BannerView(ListView):
    model = Banner
    template_name = 'home.html'
тогда в темплейте список всех ваших объектов передастся в виде object_list, по которым вы можете пробежаться как-то так:....
{% for obj in object_list %}
     {{ obj.какое_то поле }}
{% endfor %}
....
тутclass HomePage(TemplateView):
template_name = 'home.html'
контекст можно передать так:class HomePage(TemplateView):
    template_name = 'home.html'

def get_context_data(self, *args, **kwargs):
    context = super(HomePage, self).get_context_data(*args, **kwargs)
    context['имя_какой_то_переменной_для_темплейта'] = ФункцияДляПолученияКакихТоДанных()
    return context
тогда в темплейте она будет доступна как:....
{{ имя_какой_то_переменной_для_темплейта }}
....
А вообще - пройдите хотя бы какой-нибудь туториал по Django где это подробно объясняется...

Худший ответ:
Как запускаете сервер? какая версия джанги? 
Статику в нужные директории положили? 
Надо понимать, что статика и медиа файлы - разные вещи. Статика это css+js+icon - то что отображается всегда на сайте, хранится это обычно на файловой системе и в проде отдается веб-сервером (nginx или apache)
Медиа файлы - могут загружаться пользователями, метаинформация для них лежит в базе, а сами файлы - тоже на файловой системе.
Подробнее - djbook.ru/rel1.9/howto/static-files/index.html и djbook.ru/rel1.9/topics/files.html
Вопрос: Идея — Руки — Деньги, как расспредедить важность и оплатить заслуги?

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

Худший ответ:
Если вклад пропорционален то и делить нужно поровну) А на практике, кто главный тот и делит, как считает нужным.
Вопрос: Shift delete

Лучший ответ:
сломайте кнопку shift

Худший ответ:
Всегда удаляйте в корзину, из корзины удаляйте по прошествии пары недель.
Современные HDD, благодаря объему, позволяют делать это.
Вопрос: Сколько принес Ваш open-source проект?

Лучший ответ:
Еще до прихода популярности Open-Source, в 2004м году я делал бесплатный софт (анти спам тулза). Более миллиона пользователей по всему миру, туча публикаций в разных изданиях, высокие рейтинги и отзывы. Просил донат, даже высылал коробочную редакцию с бонусами тем кто поддерживал. Не пошло. В районе $600 только. Адсенс + аффилятные ссылки на странице после uninstall'a приносили во много-много-много раз больше. Правда адсенс тогда только появился и в дефиците рекламных площадок экстремально высокий CTR и клики по $2.5-$3 были в порядке вещей.

Худший ответ:
Одни убытки в виде личных человекочасов.
Вопрос: Какие вещи должен уметь делать junior frontend developer?

Лучший ответ:
1. верстальщик - html, css, jquery на примитивном уровне, чтобы можно было подключать библиотеки и писать свои небольшие скрипты, умение пользоваться bootstrap, понимание модульных сеток
2. junior frontend - первый пункт + нативный js + основы реакта \ vue \ angular, базовые знания git
3. middle frontend - когда ты уже уверенно себя чувствуешь, решаешь любые задачи
4. senior frontend - опытный разработчик с хорошим знанием английского языка, глубоким пониманием нативного js и выбранного фреймворка. Благодаря коммуникативным навыкам ведет за собой команду.

Худший ответ:
Думаю этого хватит для джуна:HTMLPhotoshop, sketchCSSJS/Jquery