Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Правильно ли я использую делегирование?

Лучший ответ:
Во-первых, вы молодец, что движетесь в этом направлении. Продолжайте в том же духе.
По коду есть следующие замечания/предложения по улучшению:
- Делегирование подразумевает передачу некоторого функционала другому объекту. По сути, когда вы создали объект класса и выполнили метод этого объекта - вы уже делегировали некую функциональность. Например в контроллере задачу по выборке юзера вы делегировали объекту класса User. В случае же с классами User и Image, происходит внедрение класса Image в User (привет Dependency Injection), но дальше Image никак не используется классом User. Т.е. происходит Dependency Injection, но нет делегирования. На том этапе, который я сейчас вижу, я бы не стал внедрять Image в User. Сейчас это выглядет как задел на будущее, но любой опытный программист подтвердит, что композиция, созданная на будущее - ненужная композиция.
- Глядя на структуру классов, мне не совсем понятно чем они занимаются. Вроде как класс User и Image должны хранить информацию о пользователе и картинке (об этом нам говорит $id в конструкторе). Но в тех же классах есть логика по выборке данных из базы. По-хорошему выборкой должны заниматься другие классы. Лучше разделить задачи выборки и хранения на 2 разных класса. Я очень рекомендую вам ознакомиться с паттерном Data Mapper (наример тут designpatternsphp.readthedocs.io/en/latest/Structu... или тут codeinthehole.com/projects/domain-model-mapper-a-p... На мой взгляд, Data Mapper - это то что вам сейчас нужно реализовать чтоб получить чёткую структуру кода и разделение ответсвенности за выбор/хранени.
По поводу делегирования. Просто старайтесь чтоб ваши классы были как можно меньше. Критерий 1-3 метода на один класс вполне может подойти (помните, что это не золотое правило). Когда у вас появится желание добавить еще один метод в класс A - спросите себя, а нужен ли там вообще этот метод? Может лучше переложить всю ответственность на новый класс B, в который вы будете передавать объект A (или какое-то из его полей), а сам класс B уже проведёт необходимые преобразования/вычисления? Это и будет делегирование в том виде, в котором его ждёт от нас банда четырёх (если вы еще не читали их книгу, то это must read для любого программиста).
Фух, длинный ответ получился. Надеюсь, что не зря.

Худший ответ:
Думаю, стоит отделить независимые элементы логики.
Есть класс для работы с изображениями? 
Пусть с ними и работает, он не должен знать что есть какой-то user_id
Есть пользователь и у него есть аватарка? Ок, класс пользователя может выдернуть нужный img_id и передать его в Image
Вопрос: Разгрузка сервера?

Лучший ответ:
- на клиенте загружается и формируется 3D сценаоткуда загружается? С локального хранилища или с сервера?- в каждую секунду времени загружается большое количество моделейа вы, я смотрю, не плюшками балуетесь, чем-то потяжелее... Так как вы явно серьезный игродел, "большое количество" это не 3-5, это 20-100 штук. Ок, за 10 секунд передастся от 200 до 1000 моделей. за минуту игры мы, я полагаю, увидим на игровом поле около 6000 моделей(если повезет). На разработку 1 модели у среднего 3Дшника уйдет от 15минут до 15 суток, в зависимости от сложности. Допустим, это не сложные модели, скажем, на пол часика работы. 6000 моделей будет делать 3000 часов 1 чел.  ~500 рабочих дней. Игра у вас на сколько длинная?- модели кэшируются на стороне пользователясогласно предыдущему пункту, не у всех винта хватит на пол часа игры.- можно генерировать некоторые данные у клиентов, чтобы не хранить на сервереда уж пожалуй, а то вон, в варкрафте, лохи то близзардовские, все ресурсы тупо скинули на комп клиенту, и передают координаты и положение, как дети, чесслово.Если в сети находятся пользователи, в одного из которых есть необходимые файлы, которые нужны другому пользователю, то почему бы их не скачать оттуда, а не обращаться постоянно к серверу?[...]..а надеяться на кэширование в остальной сети (у провайдеров или еще где-то) точно не стоит.да, провайдеры они такие провайдеры, и скорость у них никакая, и канал наружу гораздо меньше чем у Василия Пупкина, да не будет же у Васи лагать игра, когда я и еще 7 человек начнут качать с него "в каждую секунду большое количество моделей".

Худший ответ:
Используйте https://en.wikipedia.org/wiki/Content_delivery_network и не парьтесь чёрной магией. 
Например можно амазоновскую взять: docs.aws.amazon.com/AmazonCloudFront/latest/Develo...
Вопрос: Нормально ли то что на Win10 Pro x64 доступно 6 гигабай оперативки вместо 8?

Лучший ответ:
Где написано что используется 6?
Занято/Свободно

Худший ответ:
вон даже на фото в консоли полный объем физ. памяти 8гб
Вопрос: Графический планшет + макеты = Возможно ли?

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

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

Лучший ответ:
php.net/manual/ru/function.header.php
а в коде у вас - жесть.if (isset($_GET['type']) && $GET['type'] === '1') {
    header( 'Location:  http://host.dom/');
    exit;
}

Худший ответ:
1. if(isset($_GET['type'])) //То что вы проверяете  if ($_GET['type']) { если он равен нулю, а гет существует выйдет так что его не существует
2. Интересно зачем вам === и вот такое $_GET['type' === '1'], смысл не понятен
3. Пошлите браузеру, или кто у вас там заголовок header('Location: yandex.ru');
Вопрос: Узнать белый IP-адрес роутера с сервера, который за NAT-ом?

Лучший ответ:
Поставь DynDns на сервер. Так ты будешь хотя бы знать что там происходит

Худший ответ:
Можно брать ip с ifconfig.me/ip, тем же curl`om — а там уже делайте что хотите, можно сразу же по api на dyndns сообщать новый ip.
Вопрос: Как решить проблемы с правами?

Лучший ответ:

sudo chmod 775 /var/www
sudo chmod -R 775 /var/www
За такие права надо бить по рукам и отрывать все что отрывается. Зачем у вас всем в группе право на запись в директорию? Зачем у вас все файлы запускаемые?
chmod 750 /srv/www
chmod -R 640 /srv/www/ 
P.S. Директория содержащая данные отдаваемые веб-сервером уже больше 13 лет не должна находится в /var, это — пережиток прошлого, для таких целей существует /srv, читайте FHS.

Худший ответ:
Apache, MySQL останавливал когда давал права на запись?
Вопрос: Возможен ли перенос бесплатной лицензии Windows 10 на другой ноутбук?

Лучший ответ:
Нет нельзя, это ОEM лицензия и привязана к железу, а точнее ключ прописан в биосе материнки.

Худший ответ:
Да, возможно.
Создайте образ с помощью приложения от Майкрософт.
Вопрос: Есть ли какие курсы по LESS?

Лучший ответ:
Все что нужно знать о LESS есть тут: lesscss.org/features , курсы не нужны при условии что вы отлично знаете CSS. Чтобы подтянуть CSS поможет: https://www.codeschool.com/paths/html-css
Ну и еще, полезно будет почитать про сборщик, который заодно и LESS скомпилирует в CSS:
- nano.sapegin.ru/all/grunt-0-4
- https://prepros.io/

Худший ответ:
Тут вот самое начало есть
https://htmlacademy.ru/courses
Вопрос: Как отобразить на сайте курсоры мышек посетителей?

Лучший ответ:
Конечно можно - легко делается через веб-сокеты. Вот только зачем так издеваться над пользователями? Сделайте анимацию хотя бы просто 100 штук курсоров на странице, которые хаотично появляются, двигаются, исчезают и попробуйте использовать страницу по назначению. А лучше тысячу-другую. 99.99% пользователей уже секунд через 5 закроют страницу к черту, лишь бы не видеть этого ужаса и больше никогда не зайдут на этот безумный сайт.

Худший ответ:
Сделать то можно. На клиенте юзать событие mousemove, определять положение мыши относительно какого-то определенного div блока (x, y координаты) и отправлять сокетами на сервер, там хранить массив всех курсоров пользователей (массив x, y координат).
При инициализации страницы отдавать этот массив на клиент, отрисовывать блоки (с position: absolute) с определенными отступами, которые будут зависеть от полученных координат x и y, а так же слушать сокет, который будет отдавать обновленные координаты курсоров при их изменении.
Вопрос: Есть ли перспективы в сайте, путеводителе по интернет покупкам?

Лучший ответ:
Понадобится адское количество усилий и денег для наполнения сайта контентом. 
Тем не менее, если запал есть, то оно может выстрелить, потому что количество людей, выходящих в интернет за мелкими покупками в ближайшие годы будет очень сильно расти.
Не далее как вчера в магазине Intimisimi рассказывал одной девочке, что на асосе она сможет те же вещи купить минимум вдвое дешевле и прямо на телефоне ей это показал.
Дальше был смешной разговор с администратором магазина «что вы тут делаете, почему внаглую уводите у нас клиента!?» — «Вы первые обнаглели» и т.п., но это к делу не относится.
Самое главное — продумать коммерческий момент этого сайта. Так как необходимо предоставлять людям достоверную, а не маркетинговую информацию и на простой рекламе тут денег не сделать.

Худший ответ:
банально посмотрите статистику запросов в гугле и яндексе по тематике и увидите какой спрос на тему
wordstat.yandex.ru
Вопрос: Как назвать классы по БЭМ?

Лучший ответ:
Раз вы читали про БЭМ, то особо вдаваться в теорию не буду и притяну пример за уши и опишу как бы я думал и именовал HTML-элементы на примере логотипа.
Каждый сам выбирает по какой системе понимать: где блок, где элемент, а где модификатор. Как это делают в Яндексе описано в документации по БЭМ, я придержусь этого способа именования
Классы стоит присваивать после того как вы определились: это блок или элемент? А может вообще модификатор.
Расписываю на примере лого:
Сначала я бы понял, что это блок в системе ценностей БЭМ и именовал класс так "logo" (блок -- самодостаточный элемент).
Допустим, потом мне бы потребовалось на каких-либо страницах сайта флетовое (flat) лого. Получается, что я буду делать модификацию логотипа. Поняв, что это модификатор я бы добавил следующие классы: "logo logo_flat" -- класс блока "logo" и соответственно, класс модификатора "logo_flat"
Далее, если бы мне потребовалось в логотипе разместить текст (название фирмы, слоган и т.п.). То я бы сначала разобрался -- это блок, это элемент или модификатор? Явно не модификатор (никакой CSS-модификации в существующие элементы не добавляется), значит блок или элемент. Согласно БЭМ-методологии, блок -- самодостаточная единица, а элемент не может существовать вне блока. Соответственно, текст внутри лого это элемент. Я бы в блоке лого разместил текст в HTML-элементе и присвоил класс "logo__company-name" (класс элемента включает в себя в качестве префикса название блока. Это связано с тем, что элемент может существовать только в контексте блока)

Худший ответ:
<div class="header"> <!-- Блок шапка -->
  <div class="header-logo"></div>
  <div class="header-information">
    <div class="social">  <!-- Блок соц сетей. Его можно переместить в другое место шаблона -->
      <div class="social-vk"></div>
      <div class="social-f"></div>
      <div class="social-r"></div>
    </div>

    <div class="header-btn"></div>
    <div class="header-btn header-btn--orange"></div> <!-- Изменили цвет кнопки -->
  </div>
</div>

<div class="content">
  <div class="profile"> <!-- блок profile может быть и не в блоке content, но если считаешь, что только в нем, то изменить на content-profile content-avatar и т.д-->
    <div class="profile-avatar"></div>
    <div class="profile-fio"></div>
  </div>

  ....
</div>

<div class="footer">
  ... какая-нибудь разметка
  <div class="social">  <!-- Блок соц сетей. Его можно переместить в другое место шаблона -->
    <div class="social-vk"></div>
    <div class="social-f"></div>
    <div class="social-r"></div>
  </div>
</div>
Вопрос: Что это такое в питоне?

Лучший ответ:
Если хоть один из элементов a  нечетен, то True(преобразуется в 1) соответственно "First", иначе False(0) соответственно "Second"

Худший ответ:
Список и его индекс.
Вопрос: Как изучать Linux?

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

Худший ответ:
Понятно, что apache/nginx + php + mysql, но что делать со всем этим дальше? 
С начала пойми для чего они, установи а для вопросы сами собой отпадут. На голой теории далеко не уедишь, теория+практика=знания=>работа и опыт.
Вопрос: Как правильно вносить данные в БД?

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

Худший ответ:
У меня был похожий случай.
1. Имеем веб морду.
2. Есть большая таблица, в которой куча табличных ячеек.
3. Необходимо на всех клиентских машинах отображать актуальные данные без перезагрузки страницы
Я сперва реализовал следующим образом:
1. Поднял WebSocket который слушали все клиенты.
2. Поднял демона, который опрашивал Rest и вытаскивал данные.
3. В случае новых данных демон сувал их в базу и через WebSocket отправлял широковещательное сообщение в виде JSON строки.
4. Со стороны клиента через JS вытаскивал данные с сокета и обновлял пользователю интерфейс.
5. Все пользователи имеют актуальные данные без перезагрузки страницы.
Как опрашивал Rest.
1. Создал табличку text + int.
2. В text хранил название таблицы интерфейса, в int - последний инкремент
3. Опрашивал с условием > int
4. Ложил в локальную базу.
5. Оповещал клиентов по WebSocket
Сечас немного по другому. В 1С есть подписка на события, при изменении или создании документа можно вызвать обработчика, в моем случае просто происходил HTTP запрос с передачей данных в  post теле JSON сериализации. 
В вашем случае, если не важно и не актуально, либо не возможно изменение документа - только такой вариант: постоянный опрос.
Вопрос: Задержка переключения раскладки в Windows

Лучший ответ:
копался с такой же проблемой по всему реестру на предмет дилея, наткнулся на это:

HKEY_CURRENT_USER\Control Panel\Accessibility\Keyboard Response 
 параметр DelayBeforeAcceptance. 

по умолчанию стоит 1000, влепил 200. вроде помогло)

Худший ответ:
У меня стоит переключение непосредственно на раскладку (т. е. не циклом, а Alt + Shift + 1 англ., Alt + Shift + 2 рус.), паузы не замечаю.
Вопрос: Centos 6.5 закончилось место на диске с ОС как увеличить?

Лучший ответ:
Причем тут тег уведомления? (меня тостер позвал как эксперта по уведомлениям)
Если по теме:
1. Если у вас не LVM то нельзя. В нем можно сжимать расжимать примонтированные тома.
2. Как вариант...можно подумать над тем, чтобы все важное как нить хитро перетащить в оперативку и подменить точку монтирования, но трудоёмко и не факт что релизуемо.
3. Проще всего таки в работающей системе сжать 100 гигов остального, а потом уже увеличить после запуска. 
Погуглил..
https://access.redhat.com/documentation/en-US/Red_... похоже можно таки. гуглится все это по ext4 resize online, конечно все это доступно, только если у вас ext4.
И да - можно увеличить примонтированную партицию, но уменьшить нельзя.
Вот еще инфа - serverfault.com/questions/509468/how-to-extend-an-...

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

Лучший ответ:
Лучше не в печенье, а в localStorage какой-нибудь класть. Печенье отправляется на сервер в каждом запросе, а серверу-то позиция скролла точно нафиг не нужна.
Положил работающий пример вот тут: jsfiddle.net/mvasilkov/2mfewoy0
Код вот такой:var $window = $(window)

/* Restore scroll position */
window.scroll(0, localStorage.getItem('scrollPosition')|0)

/* Save scroll position */
$window.scroll(function () {
    localStorage.setItem('scrollPosition', $window.scrollTop())
})
Два довольно очевидных замечания:Можно запросто обойтись в данном случае без jQuery, это не усложнит кодЕсли нужна совместимость со старыми браузерами, можно взять любую библиотеку для эмуляции localStorage, например, вот эту: https://github.com/marcuswestin/store.js/

Худший ответ:

var pos;
$(window).on("scroll", function() {
pos = $(window).scrollTop();
 });- позиция 
https://github.com/carhartl/jquery-cookie - удобная работа с куками
Вопрос: Как правильно построить структуру IT-компании?

Лучший ответ:
1. Недоработка аккаунт менеджера, он должен не бояться переключать клиентов на проектного менеджера. Есть куча способов мягкого первода.
2. Введите систему тикетов (н.п. через выделенный email), н.п. у клиента появилась задача, он ее обсудил с менеджером (если требуется), менеджер помог сформулировать задачу и попросил клиента направить тикет на выделенный эмейл, если не может отправить клиента, то заводит тикет сам (что, кстати, не очень хорошо, но иногда допустимо), клиент в свою очередь получает номер тикета, по которому может отслеживать его выполнение. Куча методологий описывает подобный подход.
Вы написали, что используете Redmine, но для клиента это сложно. Ему нужна минимально простая коммуникация, а Redmine - это ваша внутренняя кухня. Вот уже прикормленных клиентов, можете втягивать в Redmine и т.п., предварительно, "продав" это клиенту.
3. Все зависит от того, как у вас устроены внутренние процессы, в целом, вам надо определить основные приоритеты для команды. н.п. 
    а. Поддержка существующих клиентов. 
    б. Поиск новых клиентов.
    в. Разработка новых продуктов.
Распределяйте приоритеты на сотрудников. Стройте процессы, которые должны соблюдаться.
Ну и конечно почитайте про ITIL :)
Да, еще есть книжка интересная, к слову, она по большей части мотивирующая, но для себя нашел пару интересных моментов, называется "Rework: Бизнес без предрассудков" авторы Джейсон Фрайд, Дэвид Хейнмейер Ханссон

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

Лучший ответ:
В разных доменных зонах разные ограничения. Доменные имена в зоне gr должны состоять минимум из 3 и максимум из 60 символов. По крайней мере в этом уверяет один из регистраторов. На сайте главной координирующей организации зоны GR написано, что могут быть двухсимвольные. Но это информация 2015 года.
Может быть и субъектное ограничение, типа двухсимвольные только членам профсоюза.

Худший ответ:
В разных доменных зонах разные ограничения. Доменные имена в зоне gr должны состоять минимум из 3 и максимум из 60 символов. По крайней мере в этом уверяет один из регистраторов. На сайте главной координирующей организации зоны GR написано, что могут быть двухсимвольные. Но это информация 2015 года.
Может быть и субъектное ограничение, типа двухсимвольные только членам профсоюза.
Вопрос: Сколько могут зарабатывать пентестеры на фрилансе? Чем они занимаются?

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

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

Лучший ответ:
Обновите BIOS и драйвера с сайта официального производителя.
BIOS: Версия 208
www.asus.com/ru/support/Download/3/546/0/2/W4436YS...
PS: обсуждение проблем на форуме: notebookclub.org/forum/thread-2979.html

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

Лучший ответ:
только хорошей структурированностью каталога и семантической разметкой:)
соблюдайте количество h1 и h2 на каждой странице, обязательно сделайте хлебные крошки с микроразметкой. сделайте микроразметку в каталоге. сделайте нормально ЧПУ и пропишите canonical на страницах каталога. следите за ответами сервера, чтобы не было лишних редиректов.
и когда-нибудь вам повезет, и яндекс, поверив вашему сайту, добавит ему сниппетов в выдаче.
или нет.

Худший ответ:
Все что Дмитрий сказал верно. Еще надо быть "большим" по мнению Яндекса и с большим CTR из выдачи.
Вопрос: Написал статью про машину времени — UGC-ресурс, позволяющий прослеживать/создавать визуальную историю мира через старые фотографии?

Лучший ответ:
Если про машину времени в «DIY» собираетесь писать, то интересны :)

Худший ответ:
Спасибо тем, кто проявил интерес к темам.
Набрал первые 5, опубликовал опрос — habrahabr.ru/blogs/success_stories/139683/#comments
Для публикации про машину времени нужно 10.
Вопрос: Как правильно наращивать ссылочную массу, через какие сервисы?

Лучший ответ:
Почитал ответы и комменты, решил немного дополнить...
eugenemalkov если вам удобно использовать Rookee и покупка ссылок в этой системе оказывает положительный эффект - едва ли стоит пересаживаться на Sape, особенно если опыта работы с этой биржей нет. Другое дело, если Rookee не работают... Тогда советую вообще пересмотреть стратегию линкбилдинга с упором на адекватное ручное размещение на площадках с вашей целевой аудиторией.
Поиск хороших доноров в SAPE и прочих биржах со временем становится всё менее эффективным, т.к. время на поиск донора надо тратить больше (ужесточая требования к сайтам), а результат может не оправдать усилий/ожиданий.
Есть тематики, где ссылок вообще минимум, и это Нормальная Естественная Ситуация. Не стоит пытаться прыгать выше головы, если тематика не подразумевает этого. В основном это касается коммерческих сайтов и компаний из небольших регионов. Невероятно палевно иметь несколько тысяч ссылающихся доменов на годовалый сайт какого-нибудь магазина или фирмы, особенно если не было никаких информационных поводов.
un1t: у автосервисов могут быть ссылки как минимум с карт и подобных сайтов, каталогов организаций и т.п. Для поиска дополнительных источников стоит исследовать ссылочные профили сайтов по этой теме.
По части ссылок с форумов - естественные упоминания обычно оставляют замотивированные клиенты, в основном - отрицательные) Потому как, если обслужили хорошо - это воспринимается стандартно и не мотивирует писать отзыв. Чтобы клиент написал на форуме/блоге/социалке что-то хорошее, ему нужно взамен что-то предлагать (скидку, подарок, доп. услугу) или самим создавать темы на форумах и работать с аудиторией, а это требует времени, желания и высокого уровня сервиса, иначе сделаете только хуже!

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