Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как расширить файловую систему в Linux при увеличении диска?

Лучший ответ:
Увеличить можно и без размонтирования online, если мы говорим об увеличении именно ФС:resize2fs /path/to/device

Худший ответ:
Ответ нашелся на просторах интернета:
unix.stackexchange.com/a/67107
А хабраюзер rekby написал замечательную утилиту для автоматизации этой нелёгкой задачи:
habrahabr.ru/post/274451
Вопрос: Можно ли зарегистрировать бесплатный домен 2-го или 3-го уровня (с определенными условиями)?

Лучший ответ:
.ru стоит 89р. это почти бесплатно

Худший ответ:
.tk первого второго уровня - бесплатно
Вопрос: Как вы осуществляете commit в git?

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

Худший ответ:
Предпочитаю первый, с одним коммитом.
Вопрос: Какие интересные блоги и другие ресурсы по C++ вы читаете?

Лучший ответ:
В основном книги

Худший ответ:
С++ создавался, мол на нем будут писать ёба-ООП. А тут Джава с Сишарпом появились. Так что С++ сейчас ближе к железу. И встретить в коде мешанину из С++11 и SSE intrinsic это в порядке вещей. Так что читайте стандарт (или что там выходило от страуструпа) и углубляйтесь в предметную область. Если не хотите всю оставшуюся жизнь мискеши ловить и байты выравнивать, то идите в Java/C#.
Вопрос: Черным по белому или белым по черному?

Лучший ответ:
Неважно, просто чаще смотрите мимо монитора. Желательно в окно и далеко.

Худший ответ:
В макОс вроде бы даже терминал по умолчанию черный на белом, чтобы глаза не уставали.
Вопрос: Стоит ли отключать ноут от сети 220в?

Лучший ответ:
Года за 3 полностью убьёте аккумулятор, минут 20 держать только будет

Худший ответ:
Если у вас Li-ION аккумулятор, то чем больше разряд батареии, тем меньше циклов. 
Короче, держать в розетке, наоборот строго полезно. Поищите в интернете исследование жизни аккумулятора для шуруповертов. 
следует логичный вроде бы вывод – раз время жизни батареи измеряется количеством циклов, значит, лучше использовать их полностью. Здесь тоже не всё так просто. Во-первых, полный заряд и полный разряд быстрее изнашивают батарею, поэтому не стоит бояться неполных циклов — напротив, они продлевают ее жизнь.источник
Во-вторых, литий-ионные аккумуляторы стареют и теряют емкость даже без использования. Уже после года "на полке" теряется 5-10% ресурса батареи, после 2 лет – до 30%. Поэтому, приобретая новое портативное устройство, обращайте внимание на дату выпуска источника питания. 
В ноутбуке вообще может быть умный контролер зарядки и он включается когда нужно. ТО есть ноутбук работает от розетки, а не от аккумулятора.
Вопрос: Nginx 500-504 ошибки?

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

Худший ответ:
Если nginx используется только для раздачи статики, и нет соединений с бэкендами (http, fastcgi), то кроме случаев с return 500 и возможно каких-то совсем экзотических ситуаций, типа нехватки файловых дескрипторов, ошибку 500 он возвращать не будет.
Вопрос: Как сделать чтобы AUTO INCREMENT заполнял удалённые значения (например id: 1,2,3,4. Удалил 3. След. добавляемое 3, а не 5)?

Лучший ответ:
это уже будет не AUTO INCREMENT.

Худший ответ:
$q=sql('SELECT count(*) as counter from gr');
$data=mysql_fetch_assoc($q); $counter=($data?intval($data['counter']):0);
for($id=1; $id<=$counter; $id++){ // перенумеровываю все id
    $result = sql('SELECT * from gr WHERE id='.$id.' LIMIT 1');
    if(mysql_num_rows($result)==0) {// id - свободен
        $result = sql('SELECT MAX(id) as id from gr');
        if (($row = mysql_fetch_assoc($result)) && ($id<$row['id'])){
            sql('UPDATE gr SET id=LAST_INSERT_ID('.$id.') WHERE id='.$row['id'].' LIMIT 1');
            // то же сделать во всех связанных базах!
            sql('UPDATE price SET gr='.$id.' WHERE gr='.$row['id']);
            sql('UPDATE kateg SET gr='.$id.' WHERE gr='.$row['id']);
        }
        else break;
    }
}
В 99 процентах случаях это делать не нужно. Уникальный ключ для того и создан, чтобы при удалении записи оставалась "дырка" в нумерации. Но, иногда приходится. Например, я создавал сайт и набирал справочник для клиента на локальной машине, естественно, было много правок. Хотелось при "выкладывании вживую" чтобы все выглядело красиво. Вот для такого случая и сделан следующий скриптик:
htmlweb.ru/php/mysql_faq.php
Вопрос: Вопрос по bootstrap?

Лучший ответ:
.col-nopaddings {
    padding-right: 0!important;
    padding-left: 0!important;
}
Добавьте в своем CSS и используйте.

Худший ответ:
Спасибо ребят, решил таким способом:
.content-holder [class*="col-"] {
	padding-left: 0 !important;
	padding-right: 0 !important;
}
Вопрос: Какой сервис для проверки позиций сайта?

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

Худший ответ:
Позиции понятие субъективное - у вас одни, у меня немного другие, обычно не много +-2, но вот по любимым сайтам и +-10 может быть
Вопрос: Бюджетный спутниковый HD ресивер для кардшаринга и интернет магазин?

Лучший ответ:
а чего хочется от ресивера?
себе давно уже приобрел GI7699 и весьма доволен им. но он не на линуксе функцию ресивера выполняет замечательно. шара — летает. с флешки играет музыку, показывает видео включая mkv, но по всеядности его немного обогнал телевизор LG smart lv3700 — что у ресивера не получилось проиграть — он подхватил. пользуюсь иногда записью на винт — ставлю на запись, затем на паузу. делаю свои дела если надо, а потом спокойно смотрю, проматывая рекламу. пишет TS с mpeg2 довольно внушительных размеров за час получается около 10гб. шара настраивается вообще элементарно по сравнению с linux ресиверами.
посмотрел на 8120 и 8580 — вполне нормальные ресиверы 
более подробно можно пообщаться с владельцами на gisclub.tv/index.php?action=forum

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

Лучший ответ:
Это называется ORM.

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

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

Худший ответ:
Поддержу предыдущих комментаторов. У меня 128 ГБ ССД на макбуке. Вся музыка в Apple Music теперь и не занимает место на диске, фотобиблиотека так же в ICloud. Само много места занимают виртуальные машины. 
При установке программы можно выбрать локейшн, но так же можно просто app файл скопировать на внешний жесткий диск и запускать оттуда. 
Если погуглить, то, наверное, и папку Applications можно перенести на другой раздел, но такой нужды ни разу не возникало.
Вопрос: Как определить стоимости разработки?

Лучший ответ:
https://ru.wikipedia.org/wiki/Задача_раскроя
как вариант попробовать разобраться с 
www.codeproject.com/Articles/607791/ga-knapsack
stackoverflow.com/questions/27180562/add-restricti...
ну или 
гугл:php knapsack problem
habrahabr.ru/post/83918
В данном случае стоимость не зависит от твоего времени, а от уменьшения издержек заказчика.
habrahabr.ru/post/148665

Худший ответ:
Думаю от 2000-4000р. максимум.
Вопрос: Где найти похожий слайдер,чтобы так же выглядил и превью показывал?

Лучший ответ:
А чем этот слайдер отличается от сотни других?Ответ на ваш вопрос - на этом же сайте и можно найти(лично мне понадобилась 1 минута, чтоб найти)

Худший ответ:
Готов дописать текущий плагин за умеренную плату ;-)
Вопрос: Почему OS X не нарушает GNU GPL, когда она поставляется с такими программами как bash и nano?

Лучший ответ:
> Насколько я понял лицензия GNU предполагает что использовать программы с этой лицензией можно только в открытых продуктах, иначе какой в ней смысл?
Нет, неправильно поняли. 
GPL-продукты могут поставляться в составе платных продуктов без изменения исходного кода (и с сохранением исходной лицензии). Но в случае модификации таких программ такой поставщик обязан передать патчи владельцу GPL-программы. Что делать с этими патчами уже дело владельца(ев) исходного кода. 
bash же в OS X абсолютно обычный. 
Впрочем, Apple соблюдает GPL. На примере CUPS - основные коммитеры в cups именно в Apple работают.
Кстати, GPL-код (само собой, при условии, что он не изменен и сохранена лицензия) можно продавать, можно оказывать платную поддержку, можно оказывать платные услуги по модификации под задачи заказчика (при условии, что заказчик не собирается распространять эти патчи дальше от своего лица) не передавая патчи апстриму.

Худший ответ:
Пожалуйтесь во Free Software Foundation.
Вопрос: Можно ли доверять ресурсу learn.javascript.ru?

Лучший ответ:
Отличные курсы на learn.javascript, но все же сторонняя инфа тоже нужна. Никогда не учитесь по одному источнику, миксуйте!

Худший ответ:
Пф. Вы видели где-то лучше learn.javasript.ru?
Флэнган - да, хороший справочник. Сам по нему учился. Но некоторые вещи пропущены
Вопрос: Php. Как проверить файл mp3 на валидность?

Лучший ответ:
Воспользуйтесь любым классом для работы с MP3 и проверьте битрейт, длительность и т.д. Если все корректно — значит это настоящий MP3.
Вот, например, один из классов — www.zend.com//code/codex.php?ozid=160&single=1

Худший ответ:
А на сервере расширение почему не проверяется?
Вопрос: HTML client-side includes?

Лучший ответ:
Я прям вижу как вопрос растет с каждой секундой =)

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

Лучший ответ:
Принципиально ли SMS в век смартфона и безлимитного интернета? Есть мнение, что гораздо лучше сделать для этого telegram- или slack-бота.
Делается элементарно - один http-запрос.
В slack это chat.postMessage, в telegram - что-то похожее.
https://api.slack.com/
https://core.telegram.org/

Худший ответ:
sms.ru , который видимо закрылся.
Да вроде жив.
В гугл документах можно создать таблицу к которой прикрепить гуглскрипт, который будет по "крону" (настраивается в редакторе gs) обрабатывать все новые письма. У меня например такая уведомлялка на sms работает.function getLastMessageBody(thread){
  var msgs = thread.getMessages();
  var msg = msgs[msgs.length - 1].getBody();
  return (/<em>(.+)<\/em>/i).exec(msg.replace(/\s+/gim,' '))[1];
}

function trimForSMS(text, mchars){
  mchars = mchars || 0;
  text = text.trim();
  var maxLetters = ( /^[a-zA-Z0-9\s\^\[\]\(\)\/\*\+\-\=\|\{\}\%\,\$\#\@\&\!\?\.\,\`\~\;\:\_\<\>\"]*$/.test(text) ? 160 : 70 ) - 12 - mchars;
  return text.substring(0,maxLetters).trim();
}

function my_notification() 
{  
  var labels = GmailApp.getUserLabelByName('SMSnotify');
  
  if(labels)
  {
    var threads = labels.getThreads(); 
    
    if(threads.length > 0)
    {
      for(i in threads)
      {
        var cthread = threads[i];
        
        var text = cthread.getFirstMessageSubject();
        
        if(text[0] == 'R' && text[1] == 'e' && text[2] == ':')
        {
          text = text.substring(3);
        }
        text = trimForSMS(text);      
        
        if(text == 'Новое сообщение в заказе на FL.ru')
        {          
          text = 'FL.ru: ' + trimForSMS(getLastMessageBody(cthread), 7);
        }
        
        UrlFetchApp.fetch('http://sms.ru/sms/send?api_id=<ваш ключ>&to=9176696749&text=' + encodeURIComponent(text));
      }
      
      labels.removeFromThreads(threads); //снимаем метки "SMSnotify" с цепочек
    }
  }
}
Лейбл "SMSnotify" крепиться о всем новым письмам адресованным непосредственно мне в настройках фильтров gmail.
Вопрос: Реально ли начать писать программы под андроид на C#? Или проще начать изучать Java?

Лучший ответ:
Нет никаких проблем освоить Java имея C# бэкграунд.

Худший ответ:
Реально, Xamarin в помощь.
Вопрос: Orbitum — что за зверь такой?

Лучший ответ:
У вас очень странные выводы, за браузером стоит Яндекс, при этом под капотом фишинг социалочек или ботнет :)
Браузер просто заточен под определенную аудиторию и затачивает функционал браузера согласно предпочтениям этой аудитории.

Худший ответ:
Насколько мне известно, разработчики — небольшая компания из Питера. Кроме Орбитума у них есть ещё какие-то другие продукты.
Вопрос: Где можно найти хорошие уроки по CSS @media screen?

Лучший ответ:
Очень долго сам искал различную информацию по адаптивной вёрстке, много чего пересмотрел, но всё равно было немного боязно верстать адаптивно. Как только просто взял и попробовал - понял, что всё это нереально просто. Постараюсь объяснить, как верстать с помощью media.
Представьте, что вы верстаете обычный сайт, сразу вписывая стили в файл. Сверстали всё, отлично. Теперь создаёте ещё один файл в css и снова верстаете сайт, только при этом указываете media необходимый (zooks уже показал, как это сделать). То есть это та же вёрстка один в один, просто добавляется строчка с указанием размера экранов, а дальше делайте так, как вам удобно. Единственный нюанс - смотреть вёрстку для того или иного разрешения - инструмент в FF адаптивный дизайн. В хроме и опере тоже такая же фича есть - выставляете необходимое разрешение (к примеру в media у вас максимум 320px - выставьте разрешение в браузере 320px) всё.
Конечно надо понимать наследования и перезапись свойств в css, тогда становится ещё легче. Ну и многое зависит от вашего стиля вёрстки. Сейчас flexbox очень удобно пользоваться и при его использовании надобность достаточно большого количества дополнительных перезаписей правил в media просто отпадает.

Худший ответ:
можно просто изучить bootstrap
Вопрос: В каком направлении развиваться?

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

Худший ответ:
Зависит от размера продаж, и субъекта (частное лицо/компания). Некоторые сделки в принципе недоступны на уровне ИП/маленькой компании. Поэтому если интересует корпоративный сегмент - работать на дядю.
Вопрос: POST запрос

Лучший ответ:
Браузер не даст вам такого сделать. Зато можно загрузить этот файл на промежуточный (свой) сервер, а уже с него хоть curl'ом отправлять по назначению.
Можно даже при помощи вебсокетов сделать «прозрачную» отправку.

Худший ответ:
java скрипт работает только на серверной стороне, поэтому никак. и почему вы уверены что этот некий URL примет ваш image?
Вопрос: Как раздаются ip адреса через DHCP сервер?

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

Худший ответ:
Может. С момента загрузки js до момента перехода у клиента может произойти, например, реконнект с провайдером со сменой внешнего ip-адреса.
Вопрос: Кто работал в TopTal?

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

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

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

Худший ответ:
У меня на карточку Payoneer приходят деньги, в качестве контрагента Payoneer показывает просто Upwork
Вопрос: Coda 2 не подсвечивает PHP если после &quot;&lt;?&quot; нет пробела

Лучший ответ:
Не подсвечивает потому, что это short tags а это не нативно, вернее нативно но не до конца верно. Надо писать "
akral написал как слделать быстро. Но надо добавить php

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

Лучший ответ:
Мы на работе используем Microsoft Robocopy.

Худший ответ:
Могу посоветовать https://cloud.mail.ru/
Если успеешь подключится до 20-ого января, будет у тебя 1 терабайт...
Вопрос: Варианты использования clearfix?

Лучший ответ:
Нужному классу просто добавляют те же css параметры что и у clearfix..clearfix:before,
.clearfix:after {
  content: " ";
  display: table;
}
.clearfix:after {
  clear: both;
}

.header:before,
.header:after {
  content: " ";
  display: table;
}
.header:after {
  clear: both;
}
Никто такое не запрещает, в большинстве фреймворках практикуется. При использование препроцессоров можно использовать extend как вам посоветовали выше.

Худший ответ:
Ну так пройдитесь по сайтам и проверяйте, кто вам мешает?
Можете так и этак, как вам удобнее.el:after{} /*  */
Вопрос: Как выделить несколько ячеек таблицы?

Лучший ответ:
Делал я когда-то подобное, но задача была сделать выделение ячеек, как при одиночном нажатии, так и при зажатом Shift или Ctrl. Если такой вариант устроит, то вот пример в песочнице.Показать код jQueryvar td = $('#timeGrid td'),
    selection = {
        single: function(el) {
            td.not(el).removeClass(this.cl);
            this.ctrl(el);
        },
        shift: function(el) {
            if (typeof this.last !== 'number') {
                return this.single(el);
            }
            var till = $(el).index(this.slcr),
                from = this.last;
            if (from > till) till = [from, from = till][0];
            td.not(td.eq(this.last)).removeClass(this.cl);
            td.slice(from, till).add(el).addClass(this.cl);
        },
        ctrl: function(el) {
            $(el).addClass(this.cl);
            this.last = $(el).index(this.slcr);
            console.log(this.last);
        },
        slcr: '#timeGrid td',
        cl: 'pressedTime',
        last: null
    };
td.on('click', function(e) {
    method = !e.shiftKey && !e.ctrlKey ? 'single' : (e.shiftKey ? 'shift' : 'ctrl');
    selection[method](this);
});
P.S. Хотя, сейчас немного доделал и вроде бы получилось, как вы хотели. Смотрим примерПоказать код jQueryvar table = $('#timeGrid'),
    td = $('td', table),
    selection = {
        single: function(el) {
            td.not(el).removeClass(this.cl);
            this.ctrl(el);
        },
        shift: function(el) {
            if (typeof this.last !== 'number') {
                return this.single(el);
            }
            var till = $(el).index(this.slcr),
                from = this.last;
            if (from > till) till = [from, from = till][0];
            td.not(td.eq(this.last)).removeClass(this.cl);
            td.slice(from, till).add(el).addClass(this.cl);
        },
        ctrl: function(el) {
            $(el).addClass(this.cl);
            this.last = $(el).index(this.slcr);
        },
        slcr: '#timeGrid td',
        cl: 'pressedTime',
        last: null
    };
var pressed = false;
td.on({
    mousedown: function(e) {
        method = !e.shiftKey && !e.ctrlKey ? 'single' : (e.shiftKey ? 'shift' : 'ctrl');
        selection[method](this);
        pressed = true;
    },
    mouseenter: function() {
        if (pressed) {
            selection.shift(this);
        }
    }
});
$(document).on('mouseup', '*', function(e) {
    pressed = false;
});

Худший ответ:
Если достаточно добавить класс к ячейкам, то можно так:$('td')
  .mousedown(function(){
    $(this).toggleClass('selected');
    $('td').on('mouseenter',function(){
      $(this).toggleClass('selected');
    });
  })
  .mouseup(function(){
    $('td').off('mouseenter');
  });Пример на jsfiddle
Вопрос: Разница между маршрутизацией через int vlan и no switchport?

Лучший ответ:
Вопрос, который вы подняли, один из горячо обсуждаемых на форумах. Частично вы сами же и ответили. В общем случае - зависит от топологии. Если же копнуть глубже, то разница будет в задержках. Причём на этой презентации Cisco, страница 24
www.cisco.com/web/TH/assets/docs/seminar/200912_ni...
говорят, что на Routed-интерфейсе время поднятия интерфейса меньше, чем на SVI (8мс против 150-200мс), но есть и противоположные результаты! Многое зависит от конкретного оборудования, топологии и конфигурации устройств.

Худший ответ:
Оба варианта верные, лично я предпочитаю вариант на виланах, но у меня достаточно сложная топология и много транков, вариант с виланами более гибкий и в случае изменения топологии проще переконфигурируется, но в другой топологии может быть лучше первый вариант. Как обычно правильного варианта нет, it depend.
Вопрос: Как подключить к include переменную?

Лучший ответ:
Двойные кавычки вместо одинарных напишите или вообще не пишите их.

Худший ответ:
А какую ошибку показывает?
Вопрос: Почему интерпретатор Python не видит модуль?

Лучший ответ:
надо запускать в виде python -m script1 тогда срабатывает система поиска модулей пайтона по путям из sys.path
C:\Users\username>C:\Python34\python.exe -h
usage: C:\Python34\python.exe [option] ... [-c cmd | -m mod | file | -] [arg] ..
если запускать как python script1.py то поиск будет осуществлятся через операционную систему, то есть в текущей директории.
Переменная окружения Path используется для поиска _выполняемых_ файлов, python.exe  в твоем случае.
еще пожелание: для названий модулей и их расширения используйте только нижний регистр.

Худший ответ:
script1.py должен быть в текущей директории
или текущая директория должна быть там где script1.py (:
или указать полный путь до файла: python C:\myproject\script1.py
Вопрос: Почему дергаются изображения при hover с использованием transform и transition?

Лучший ответ:
will-change: transform; - ознакомьтесь с этим свойством, реально решает проблему.

Худший ответ:
Вообще они могут дергаться из за того что во время анимации у них промежуточное состояние со своими значениями, а по завершении - финальное, и значения параметров на конец анимации могут на 0.000х отличаться, и последним действием идет "подгон" промежуточного до финального значения. Должно помочь небольшая корректировка времени.
Вопрос: Какую cms лучше осваивать новичку?

Лучший ответ:
я когда-то свою dev карьеру начинал с joomla (а конкретно, с видео-уроков Евгения Попова, www.evgeniypopov.com/joomla-professionalnyiy-sayt-... )
+ woordpress
если что то простое по структуре:
pico.dev7studios.com
www.anchorcms.com
get-simple.info

Худший ответ:
Каждая CMS подходит/не подходит для определённого проекта, поэтому сложно дать вам конкретный ответ. Начните с Joomla, Wordpress, Drupal (ну а потом уже всё остальное). По ним обычно легко найти книги, видео курсы, статьи и т.д.
Вопрос: Как востановить файл в PhpStorm?

Лучший ответ:
VCS -> Local History -> Show History
Используйте Git(или аналог) и таких проблем не будет.

Худший ответ:
Вот в точности такая же проблема была пару дней назад, но с другим продуктом от JetBrains -- PyCharm.
Я восстановил файл с помощью R-Studio.