Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как можно в PHP-скрипте получить на 100% достоверную информацию об IP веб-клиента?

Лучший ответ:
Ты достоверно только можешь знать IP с которого пришел запрос на сервак, это переменная $_SERVER['REMOTE_ADDR']. А кто стоит за этим IP дальше не известно, впн, прокси, один из серваков в провайдере или реальный юзер, никак ты не узнаешь. Есть некоторые впн/прокси сервисы которые присылают доп IP в заголовках (типа REAL_USER_IP), но надеяться на них не стоит, не все их шлют, и их можно самому прислать и прописать там что угодно.

Худший ответ:
По результатам голосования победил 

$_SERVER['REMOTE_ADDR']

))))))))))

Надеюсь, это 101% верное решение ))
Вопрос: Есть ли программа RSU в Mail Group?

Лучший ответ:
но основная часть дохода - это акции, которые выдаются на 4 года по 25%


Худший ответ:
Яндекс платит в основном среднее по рынку, никакого основного доходов в акциях там нет
Вопрос: Что значит -> в Rust?

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

Худший ответ:
Бегом читать любую книгу по расту. Rust in action советую.

P.S.Тип возвращаемого значения
Вопрос: Как итерировать несколько объектов в одном цикле RUST?

Лучший ответ:
В rust тоже есть функция zip

Худший ответ:
В документации по Rust есть раздел Iterator Loops https://doc.rust-lang.org/reference/expressions/lo...
Вопрос: Какой есть опыт управления кучей сайтов на разных хостингах?

Лучший ответ:
Выносите сайты на впс
Делаете бэкапы любым способом

Те кто «не дают» - живут без бэкапов, заранее подписав отказ от претензий

Худший ответ:
ну какие- DevOps автоматизация, Ansible например и т.д., со всеми вытекающими - где эмуляция браузера, а где нормальные ssh/sftp etc
Вопрос: Стоит ли менять VGA на HDMI?

Лучший ответ:
Менять стоит.
Кабель - любой.

Худший ответ:
Нормальный кабель VGA легко работает и выше FHD 60Hz. Например, у меня на одном компьютере это 1920х1200 @ 60Hz. И никаких помех, изображение отличное. Но, если при прочих равных сравнить изображение по VGA и по DVI (HDMI), то по цифровому будет чётче немного.
Вопрос: Как скачать страницу из командной строки под линукс?

Лучший ответ:
Тащено отсюда
https://stackoverflow.com/questions/15323476/open-...

самое оптимальное мне показалось вот это
from selenium import webdriver

driver = webdriver.Chrome('/path/to/chromedriver')  # Optional argument, if not specified will search path.
driver.get('http://www.google.com/');
html = driver.page_source
f = open("myhtml", "wt")
f.write(html)
f.close()

Худший ответ:
У javascript генерированных страниц не существует стандарта, определяющего момент, когда можно считать что страница загрузилась (там могут быть анимации например а тк же контент может подгружаться по мере скролирования или перемещения мышкой)

Универсального инструмента нет, но в частных случаях можно написать приложение, использующее headless браузер и какое то закодированное условие окончания загрузки (таймаут например) и формат, в котором сохранять страницу (например картинка, или pdf, или html дамп,..)
p.s. когда то давно я писал приложение на visual studio .net c# использующее стандартный компонент WebBrowser (это древний internet explorer, поддерживается до сих пор), так вот при запуске его в linux mono, подставляется headless firefox

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

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

Смотрите внимательно, где вы к нему обращаетесь. Особенно на arr[j + 1]. Какие значения может принимать j? Какой размер массива и, соответственно, к каким индексам можно обращаться?

Худший ответ:
Ошибка, если ее перевести, означает: вы вышли за границу массива arr.

Смотрите внимательно, где вы к нему обращаетесь. Особенно на arr[j + 1]. Какие значения может принимать j? Какой размер массива и, соответственно, к каким индексам можно обращаться?
Вопрос: Динамический/Статический внешний адрес?

Лучший ответ:
1) Внешний адрес у всех устройств подключенных к одному роутеру одинаковый или разный?
Скорее всего одинаковый. Т.к. под роутером обычно понимают домашние маршрутизаторы, выполняющие роль NAT, как раз чтобы экономить ip-адреса в первую очередь.

2)Как узнать внешний адрес статический или динамический?
Если меняется при новом подключении значит динамический. Если не меняется, то всяко может быть.
Очевидно, он статический, если прописан вручную в роутере, но скорее всего его получают динамически, и ответить точно, может только администратор сети, к которой роутер подключен.

Худший ответ:
Обычно у устройств один адрес :) Он может быть серым или белым, статическим или динамическим, но не может быть внешним или внутренним. 
Если имеется в виду, адрес, от имени которого работают устройства из сети за маршрутизатором - то это будет тот адрес, который поставит в пакете маршрутизатор (вовсе не факт, что у него их один). 
По поводу того же, какой адрес выдан провайдером - это провайдера и спрашивать. РТК например по умолчанию дает динамику, статика стоит +50руб к тарифу
Вопрос: Странные пункты про штрафы при устройстве на удаленку в Казахстан из РФ?

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

С точки зрения работника - бегите от такой компании.

Худший ответ:
Я с Казахстана. У нас нет такого в ТК РК, шлите лесом эту галеру.
Вопрос: Можно ли развиваться в сразу в нескольких направлениях?

Лучший ответ:
Опыт Леонардо подсказывает что можно.

Худший ответ:
А кто мешает? Или там зако не какой запрещает?
Вопрос: Не выполняется проверка логина. В чём ошибка?

Лучший ответ:
mysqli::query
Возвращает false в случае неудачи. В случае успешного выполнения запросов SELECT, SHOW, DESCRIBE или EXPLAIN mysqli_query() вернёт объект mysqli_result.
Соответственно, возвращается объект mysqli_result (результат из нуля строк - это тоже корректный результат и вернётся объект), в строке if ($row) приводится к true, условие выполняется, клиенту возвращается "true". 
А вообще логика крайне странная. Сначала вы пытаетесь найти логин в базе данных, а затем проверяете его регуляркой. Логично наоборот, хотя бы с точки зрения времени выполнения.
Ну и приучите себя использовать подготовленные выражения с плейсхолдерами, это лучшая защита от SQL-инъекций.

Худший ответ:
Отправка AJAX запроса идет на checkRegLog.php, а сам код проверки в checkReg.php
Вопрос: Можно ли открыть счёт в Турции/Армении и выводить на него деньги с Апворк?

Лучший ответ:
Честно говоря, боюсь дальнейших санкций и полного отключения российских банков от системы Свифт. 
А то, что с 1 мая вы не сможете работать на Upwork не достаточно?

Russian President Vladimir Putin’s war against Ukraine has challenged our mission, values, and our operational ability to bring economic empowerment to those who seek it. Upwork will be suspending operations in Russia and Belarus, starting today and taking full effect by May 1, 2022. 
https://www.upwork.com/blog/a-letter-from-our-ceo-...

 Можно ли открыть счёт в Турции/Армении и выводить на него деньги с Апворк?
Нет

Худший ответ:
Честно говоря, боюсь дальнейших санкций и полного отключения российских банков от системы Свифт. 
А то, что с 1 мая вы не сможете работать на Upwork не достаточно?

Russian President Vladimir Putin’s war against Ukraine has challenged our mission, values, and our operational ability to bring economic empowerment to those who seek it. Upwork will be suspending operations in Russia and Belarus, starting today and taking full effect by May 1, 2022. 
https://www.upwork.com/blog/a-letter-from-our-ceo-...

 Можно ли открыть счёт в Турции/Армении и выводить на него деньги с Апворк?
Нет
Вопрос: Какой выбрать привод для распашных дверей?

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

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

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

Худший ответ:
Бесконечный цикл все равно будет, либо ты его напишешь либо его организует библиотека (какой-нибудь асинхронный фреймворк типа react, если что твой ответ можно найти в нем).

В каждом конкретном случае реализовывать нужно будет правильно по своему

С часами все просто - нужно не раз в секунду проверять время, а взять самый короткий интервал и вычислить, сколько до него ждать (время действия минус текущее время) и просто одной командой выставить sleep.
Вопрос: Достаточно ли будет чтения cppreference для освоения STL?

Лучший ответ:
Никогда тупо чтение чего угодно не прокатит без практики

Худший ответ:
В 99м году я покупал в бумажном виде Леен Аммераль С++ для Программиста. Это было несложно чтиво потому что библиотека опиралась еще на легкий С++. Сегодня уже я-бы просто не брался. Слишком кучеряво всё стало в мире плюсов. Да и я ушел в другой сегмент разработки.

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

Лучший ответ:
Просто начать писать код

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

https://www.youtube.com/watch?v=N-IFG8gD7Gg
Вопрос: Насколько сложно прикрутить систему оплаты и систему вывода денег, на сайт, имея статус физ лица?

Лучший ответ:
На сколько мне известно, законно сделать это невозможно в РФ.

Худший ответ:
Для быстрого теста MVP маркетплейсов есть готовые платформы c платежами например
https://www.sharetribe.com/

нужны ответы на вопросы ниже:
1) За что принимаете платежи? цифровые товары, физические товары, услуги?
2) из каких стран плательщики?
3) из каких стран получатели переводов?
Вопрос: Можно ли с помощью rabbitMQ можно ли создать очередь в которой для каждого пользователя последовательно будет выполнятся запрос на другой сайт?

Лучший ответ:
Если ответ клиенту на его запрос выдается не сразу, а с задержкой в связи с ограничениями из-за API третьей стороны, то логично ввести систему заявок. При запросе регистрируют заявку клиента, заносят данные в СУБД, кладут в очередь и сразу выдается ответ с номером заявки и ожидаемым временем готовности. Когда обработчик очереди берет задачу с учетом задержки 5 секунд, получает ответ от API и заносит ответ в готовой для последующего чтения форме в СУБД для соответствующего номера заявки. Независимо от обработчика очереди, клиенты обращаются за получением готовых результатов. И если таковые готовы (проверка по колонке в таблице), выдается ответ. Если еще не готов, выдается следующее ожидаемое окно времени. И т.д., до лимита проверок.

Если же перед ответом дожидаться пока пройдет 5 секунд, то такая система быстро захлебнется при наплыве запросов и будут исчерпаны ресурсы. Поэтому RPC не рассматриваю как подходящий вариант работы.

Худший ответ:
С помощью RabbitMQ и выполнить. Просто создать очередь, в которую множество клиентов будут отправлять задания, а один потребитель будет из очереди задания читать и выполнять.
Вопрос: Почему при запуске бота на Heroku выдает ошибку 0?

Лучший ответ:
Нет тут ошибки. Код 0 - это нормальный выход процесса.

Худший ответ:
Исчерпан лимит использования Free dyno.
Вопрос: Существует ли такой алгорим?

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

Есть такой алгоритм. В общем случае он выглядит так:

Read(a);
Read(b);
DoSomething(a, b);
Write(a+b);

Перед выводом суммы чисел есть какой-то алгоритм, который что-то делает. Если он виснет, то и весь алгоритм виснет. Если он не виснет - то весь алгоритм выдаст сумму. Но вот определить, а виснет ли заданная программа в общем случае - нельзя.

Поэтому 100% существует такой DoSomething, про который формально доказать что он не виснет нельзя. Иначе бы проблема остановки решалась.

Худший ответ:
Если существует алгоритм, то всегда можно формально представить его в виде функции f: A→B, которая переводит множество входных данных в множество выходных. В компьютере эти множества конечны из-за ограниченности памяти. Поэтому всегда можно выполнить полный перебор, т.е. определить функцию f.

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

Также, возможно, вас интересует неалгоритмическая задача.
Вопрос: Как заставить react перерисовывать только один элемент при обновлении state?

Лучший ответ:
При каждом вызове setNewItemData у тебя получается новый массив items. Который ты пихаешь в setItem. При каждом вызове setItem, выполнится вся твоя функция, а значит и items.map, и заново отрендерится каждый из MyItem. Если хочешь что рисовался только MyItem, то модифицируй его внутренний стейт, а не стейт родителя.

const Item = ({ item }) => {
  const [item, setItem] = useState(itemProp);

  const updateItem = useCallback(() => {
    setItem((item) => ({
      ...item,
      count: item.count + 1
    }));
  }, []);

  return (
    <div onClick={updateItem}>
      {item.title} {item.count}
    </div>
  );
};

Худший ответ:
Использовать React.memo для MyItem

export default const MyItem = React.memo(({ item, setNewItemData }) => {
   ....
});

в компоненте Test функцию setNewItemData обернуть в useCallback, чтобы она была постоянной. Для этого внутри неё использовать setItems с передачей в него функции, чтобы setNewItemData не зависело от items

let [items, setItems] = useState(myData);

    const setNewItemData = useCallback((itemId, data) => {
        setItems((items) => {
            return items.map(item => {
                if (item.id !== itemId) {
                    return item;
                }
    
                return {...item, data}
            });
        });
    }, [setItems]);
Вопрос: Как определить, сколько бизнес-аналитиков нужно на проект?

Лучший ответ:
Просто вопрос. 10 офисов. По 3 системы в каждой.  Как вы определили, что всего систем 30 "разных совершенно систем" ? Подчеркну - офисы ОДНОЙ и той-же компании.   
И еще, вы можете привести наименования  -  я уже не говорю про 30 разных систем, но несколько систем типа 1С, которые могут использоваться в офисах одной и той-же компании?  Или 10 совершенно разных "логистических систем"  при том же условии? Ну хотя-бы 5. И просто представить, как компания должна была постараться, что-бы во всех офисах, занимающихся логистикой (бухгалтерией, кадрами... неважно чем) понатыкать РАЗНЫХ систем?

Пока из вашего вопроса понятно одно. Вам бы для начала хотя-бы одного бизнес-аналитика нанять, который поможет вам с вашей задачей разобраться.

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

Вопрос: Пример. Нужно провести исследование бизнес-процессов и информационных систем сети одной компании, в городе населением 1 млн. человек. Примерно 10 офисов по 200 сотрудников. Один офис - примерно 3 различные системы.
Ответ: исходник говорит о неколхозе икрупном юрике, уставняк которого более 50 тыр, а на рынке более 3-х лет, основная деятельность которой продажи и консалтинг.
Вопрос: Итого, 10 офисов (различные сферы деятельности). И 30 разных совершенно систем: 1C, логистические системы и т.д.
Ответ: 30 систем.

Вопрос, как понять, сколько аналитиков нужно?
Ответ: 30 аналитиков в штат за 30 тыр в месяц на испытательный срок 3 месяца.
Вопрос:  Если времени отведено 10 дней на исследование, чтобы описать as is и to be?
Ответ: в таком случае, берете исторические данные, заимствованные из службы СМК и, вуаля,   AsIs есть, дорисовываете ToBe на ландшафте процессов хотелки ЛПР.
Вопрос: Можно-ли как то перепрошить фитнес браслет на python?

Лучший ответ:
*facepalm*
У фитнес браслета своя "ОС". Простая, собственная ОС. На некоторых - ядро линукс. На некоторых - Android Watch. 
Каким местом тут питон?

Вы "wколота", совсем кукухой со своим питоном поехали? (С)

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

Лучший ответ:
зачем все так усложнять

рабочий чат на websocket лежит в примерах наверное любой документации к websocket, первый же нагугленный проект (бакэнд на go но там код на 20 строк все понятно) на столько простой что даже непонятно что непонятно

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

Худший ответ:
Суть в том, что я не совсем понимаю работу вебсокетов
Клиент отправляет на сервер 1 HTTP запрос, после которого у него остаётся на длительное время открытое двухстороннее соединение, по которому он может общаться с сервером, будто у него сырой TCP-сокет (по факту так и есть).

Подробнее можно почитать на MDN.

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

Насколько хорош мой выбор(yii2+vue+mongo)? 
Не уверен только на счёт mongo, тк в моих глазах это очень специфичное решение, которое не везде есть смысл применять.
Если у тебя зафиксирована структура данных, и при этом у тебя нет кучи разных данных, которые хочется хранить в денормализованном виде, то реляционная СУБД будет, вероятно, и эффективнее и проще.
Возможно, mongodb будет иметь смысл, если ты захочешь работать с сотнями тысяч клиентов, и тебе нужно будет распределять данные на несколько серверов (возможно, в разных ДЦ)

yii2 - вполне ок вариант, раз у тебя уже есть опыт работы с ним. Модули для работы с вебсокетами для него есть.
Вопрос: Хочу изучить основы информационной безопасности, какую книгу рекомендуете?

Лучший ответ:
Рекомендуете ли вы книгу «Основы информационной безопасности» Е.В. Вострецова?
Нет, не рекомендую. 
Это формальное учебное пособие, предназначенное для продажи, а не для изучения. Содержит много воды и пару процентов теории. Изложено максимально нечитаемо, любая техническая документация будет гораздо интереснее этого. Никакой практической пользы от книги не может быть, это введение в теорию, причём в теорию, как её видит наша бюрократическая машина. 
Опирается на публикации ~20-летней давности, исключительно отечественные. 

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

Худший ответ:
Федеральные законы, приказы ФСБ и ФСТЭК. Чтиво не очень увлекательное, но знать вам придётся, если вы учитесь по этой специальности.
Вопрос: Как скрыть backend своего сайта?

Лучший ответ:
В общем случае - никак

Но можно сделать этот процесс на столько сложным, что смысла в этом уже никакого не будет. С помощью обфускации кода и использовании алгоритмов шифрования данных, передаваемых в браузер (не про https а когда данные, загружаемые браузером и передаваемые в скрипты/данные - зашифрованы). А чтобы конечный скрипт нельзя было вытащить через модификацию браузера (например логировать eval) то можно саму виртуальную машину, исполняющую скрипты, реализовать на js (wasm).

Есть интересное направление - нейронные сети. В браузере вместо полноценного кода работает нейронная сеть, обученная выдавать нужный результат. Реверсить логику ее работы невероятно сложно (читай невозможно). Плюс, нейронные сети, в общем случае, потребуют либо хорошего тестирования либо принимать что их поведение в редких ситуациях может быть непредсказуемо.

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

p.s. есть еще гомоморфное шифрование, когда есть необходимость совершать какие то операции над данными, которые зашифрованы, без их расшифровки. Особо его применить в данной задаче сложно но бывают случаи когда можно выкрутиться. Если что это решение очень сложное (читай дорогое) в реализации, готовых решений нет (по крайней мере для браузера и javascript) а еще оно потребляет процессорные ресурсы.

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

Лучший ответ:
Теоретически так. Практически, для таких целей обычно используют другие адреса: 172.16.0.0 с маской 255.240.0.0 или 10.0.0.0 с маской 255.0.0.0

Худший ответ:
Для вашего вопроса , существует vlan .
Вопрос: Как откатить версию ноды?

Лучший ответ:
Поставь nvm, там легко менять версию туда-сюда

Худший ответ:
Запускай свои приложения, настроив минимальную версию окружения в контейнерах docker или рули сам с помощью lxc
по уму можно запустить приложение в простейшем chroot, настроив минимальный образ системы с помощью debootstrap, немного поковырять с сетевыми настройками (точнее только dns так как сеть будет та же что и основной системы) и смонтировать с помощью bind копии /dev,/sys/,/proc
Вопрос: Хватит ли кулера на 180W для i5-13600KF?

Лучший ответ:
Зависит от типичной нагрузки. В играх, скорее всего хватит. При 100% нагрузке - скорее нет.
Я бы взял кулер помощнее.

Худший ответ:
Ответил на аналогичный вопрос
Вопрос: Ноутбук не видит точку доступа с Андроид, как это исправить?

Лучший ответ:
Могут банально не совпадать частоты WiFi https://yandex.ru/turbo/guidepc.ru/s/articles/v-ch...
Посмотрите документацию на девайсы - что на каких частотах работает.

Худший ответ:
Мне на Win7 как то помогла полная очистка списка ранее сохраненных точек
Вопрос: Безопасно ли хранить api ключ в .env?

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

Худший ответ:
Смотрите. Самое главное хранить в безопасном месте.
Если .env лежит на прод сервере в непубличной папке - то зачастую это считается достаточно безопасным местом. Ведь туда попадёт только администратор сервера или ответственный за деплой. Эти люди могут иметь доступ.
Считается очень плохой практикой хард кодить эти ключи в код, а также добавлять .env  в репозиторий.
Поэтому, если у вас этот файл не в репозитории, а вы его настроили и создали на сервере в не публичной (с тчк зрения вбе сервера) папке - то всё ок.
Вопрос: Сисадмин как хобби?

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

Худший ответ:
На любом пути опыт даёт одно и то же -- выполнение поставленных задач. Вы сможете себе поставить достаточно задач для того, что бы понять, что такое системное администрирование? Поверьте -- не сможете. Неожиданности всегда случаются на продакшене, т.е. на рабочих проектах. Поэтому мой ответ такой: сами вы системником не станете. Хотите стать -- идите им работать. Ну, или кому-то помогать. Или сделайте 100500 своих. Без рабочих проектов вы опыта не наберётесь никак.