Задать вопрос
  • Первый дистр linux для изучения?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Уважаемые линуксоиды! Обращаюсь к вам. Сегодня я твердо решил, что пора завязывать с злоупотреблением винды и надо адаптироваться по линь.

    Как только перестанете злоупотреблять ОС, может быть начнете пользоваться.
    Пока что видно, что вы хотите начать злоупотреблять Линуксом.

    Я хочу рядом с виндой поставить полноценный дистр и начать в нем копаться, разбираться.

    Ну вы же даже в винде не разобрались, раз ее хейтите.
    Вам нужно действительно ковыряться в самой OS, или в конкретных программах?

    Из опыта на Лине у меня только Kali для тролла дноклассников, и все. Но мне надоело сидеть на уровне msf + ngrok, и я хочу всерьёз начать познавать linux.

    Если нужны сети, идите сразу в циско.

    Но я не знаю, какой дистр лучше поставить! Все говорят, что лучший выбор для новичков - это mint, но мне не хочется идти лёгким путем, поэтому это не мой вариант (могу заблуждаться). Про Ubuntu я слышал, что это что-то "среднее" между Шindows и macOS, но говорят, что она уж очень не стабильная.

    RHEL и Ubuntu это сейчас самые актуальные дистрибутивы.

    Разница между дистрибутивам не так велика. Основные принципы - совершенно аналогичны. Софт почти везде одинаковый. Любую ставьте.
    Ответ написан
    Комментировать
  • Первый дистр linux для изучения?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    Во первых если хочешь вникнуть то никаких параллельно с windows.
    Из дистров debian (дефакто стандарт), arch (на худой конец manjaro) если хочешь вникать в устройства. Это базовые отправные точки для познания, первый в уклон стабильности и прода, второй в уклон актуальности и неизведанного. Можешь сравнить это как windows 10 LTSB и windows 10 insider preview, с небольшим отличием что в последнем случае все гораздо интереснее и намного.
    Если сможешь отсидеть в линуксах больше чем год то считай что только начал познавать цзен и познавать прелести, иначе не стоит себе льстить.
    Ответ написан
    Комментировать
  • Первый дистр linux для изучения?

    Radjah
    @Radjah
    > Сегодня я твердо решил, что пора завязывать с злоупотреблением винды и надо адаптироваться по линь.
    Вот прям за месяц до конца лета?
    > Из опыта на Лине у меня только Kali для тролла дноклассников, и все.
    Гнилая отмазка
    > я хочу всерьёз начать познавать linux.
    LFS, Gentoo. Чтобы прям познавать со сборкой софта, настройкой ядра и прочими радостями.
    > но мне не хочется идти лёгким путем, поэтому это не мой вариант
    Тем более. Подобные порывы очень быстро лечатся установкой source-based дистрибутива.

    > В общем трудности меня не пугают!
    Дерзай. https://www.gentoo.org/
    Ответ написан
    2 комментария
  • В чем отличия C++ и C# ?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Тут все пишут про отличия. Рискну написать про сходства.

    Во-первых, о чём бы ни писала Елена и Си++ и C# - оба языки общего назначения. Даже больше, оказывается - C# ни разу не заточён под объёмную библиотеку (или фреймворк) .NET, однако с ним намного, много проще. Но если таки учитывать .NET, то для Си++ есть Boost и Qt, так что здесь скорее паритет - библиотек для обоих хватает.
    Во-вторых, сложность разработки на Си++ часто преувеличена. Разве только дисциплины надо поболее - выстрелить в ногу здесь попроще. Однако при этом Си++ будет чутка более гибкий и без танцев с бубнами unmanaged код не запустить на C#. Если внезапно потребуется.
    В-третьих, оба языка, раз они общего назначения, таки мультипарадигмальные. То есть они реализуют большинство практик. И хотя Си++ развивается довольно медленно, сейчас Си++ резко догнал C# в плане нереализованных фич (здесь как минимум лямбды). Ну и метапрограммирования у Си++ поболее будет (наглая ложь).
    В-четвёртых, оба языка кроссплатформеные. Впрочем, C# будет более кроссплатформенный, чем Си++. Разве только тот же Qt резко стёр границы, но это не значит почти ничего - C# компилируется в тот же самый CIL для всех платформ, Си++ - в совершенно разный код для разных платформ (i386, amd64, ARM Cortex-AXX).
    Наконец, в пятых, синтаксис у них действительно очень похож. Оба языка принадлежат к семейству Алгол-подобных, так что и брейсы, и остальные скобки здесь имеют примерно одно предназначение.

    Различия, которые казалось бы делают языки совершенно разными, таки не столь принципиальны на том уровне абстракции, на котором был задан вопрос. А различия действительно колоссальны: C# - managed код, что означает, что скомпилированный код будет исполнятся не на прямую в CPU, а на специальной виртуальной машине. Это съедает производительность, но сильно облегчает перенос кода. Ну и потом, C# - полупроприетарный ответ Java (что интересно, так как получается, что C# - более свободный, чем Java), которая была создана как замена сложному и небезопасному C++ в том числе.

    В общем, как человек, который начал давно с C#, продолжив C++ и по пути изучив Python, Java, D и другую ООП-чушь могу с уверенностью сказать, что разницы в общем-то и нет... То есть придётся немного проникнуться в чуть другую философию и выяснить, какие проблемы более новый язык пытался решить. Но если подходить к этому, как подошёл lookid, то это скорее не как изучать языки одной языковой группы, а как изучать один и тот же язык в разное время или в разных сферах.

    Почему так? Потому что ООП... Оно как бы ООП, ничего сверхъестесственного ни один язык не предлагает, это не Haskell, и тем более не Brainfuck. Так что принципиально общие вещи в них будут. То подмножество, что реализует машину Тьюринга - у них общие. Сами посмотрите: циклы, ветвления, передача аргументов, арифметика... С небольшими правками всё совершенно одинаковое. Да, Дмитрий совершенно прав, traits на C# не повторишь, ибо та аналогия будет уже не traits, однако... Это уже [programming_language] related, то есть это попытка совладать с особенностями.

    Немного пруфов: лично я ходящий пруф. Зная C++ и C# и немного Java я просто начал программировать на Python. При том, что Python даже алголоподобным не принадлежит. А всё потому, что логика одна и та же, хотя различий между Python и C(++|#) намного, много больше. Но не читая почти никаких туториалов, пройдясь галопом по европам с документацией сейчас я знаю python достаточно для серьёзного проекта.

    UPD. По поводу метапрограммирования... Таки рантайм рефлекшн шарпа тащит. И хотя ни макросов, ни шаблонов, ничего. Но изменять код на лету - это уже очень круто. По дефолту плюсы так не умеют, и хотя шаблоны с макросами тащат, сильно, очень сильно тащат и вытаскивают его, Си++, со дна, надо признать - рефлешн у шарпа будет поинтереснее. Извиняюсь за дезу.
    Ответ написан
    6 комментариев
  • Где найти наставника по программированию или сообщества для совместной разработки?

    FoggyFinder
    @FoggyFinder
    В вопросе слишком мало деталей - не понятен ваш опыт. Вы только-только начинаете входить в профессию или вы уже знакомы с основами.

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

    Ведущие разработчики OpenSource проектов практически всегда рады новым участникам. Даже если вы просто исправите опечатку в документации. Страх начать довольно часто встречается, поэтому в некоторых OpenSource проектах вы увидите специальные сообщения:

    Imposter syndrome disclaimer: I want your help. No really, I do.

    There might be a little voice inside that tells you you're not ready; that you need to do one more tutorial, or learn another framework, or write a few more blog posts before you can help me with this project.


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

    Теперь что касается наставников - сейчас хватает сайтов с подобными предложениями, дам ссылку на пару из них:

    Обучение программированию с ментором по индивидуал...

    Codementor - Find a mentor to help you in real time

    Но прежде чем платить деньги подумайте действительно ли вам это нужно.

    Сообществ программистов где люди делятся опытом сейчас достаточно:

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

    • Если вас беспокоит нечто неопределенное или вы просто собираете информацию от более опытных коллег, то лучше подойдут различного рода чаты.


    Возвращаясь к вопросу наставничества. Что касается бесплатных вариантов, то FSSF (F# Software Foundation) два раза в год бесплатно проводит F# Mentorship program. Для того чтобы принять участие вам нужно присоединиться к FSSF, подробнее читайте тут и затем подать заявку здесь.
    Регистрация на осеннюю сессию открылась сегодня и продлится до 31 августа. По понятным причинам учеников регистрируются намного больше чем желающих быть наставниками, поэтому не расстраивайтесь если вас не отобрали.

    F# удивительный язык и если вы еще с ним не знакомы советую обратить на него самое пристальное внимание. Даже если в дальнейшем вам не придется с ним работать, то знания функционального подхода точно не будет лишним.
    Ответ написан
    6 комментариев
  • Где найти наставника по программированию или сообщества для совместной разработки?

    Таких сервисов много, но ценник будет кусаться для наставника, около 50$ в неделю и это самый минимальный. Если готовы — пожалуйста, ищите, прямо так и вбивайте «наставник по программированию».

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

    В opensource новичку трудно будет разобраться и предложить особо нечего, поэтому придумывайте себе проект, гуглите непонятные вещи и если ничего не можете найти — задавайте вопрос.
    Ответ написан
    1 комментарий
  • Как понять, что я стал junior'ом (C++)?

    Zoominger
    @Zoominger Куратор тега IT-образование
    System Integrator
    Извинити, я буду вас огорчать.

    Вы не джун. Главное, прямо-таки железобетонное требование для статуса джуна - это официальный опыт работы программистом минимум полгода, лучше год. Это - показатель того, что вы не просто верите, что что-то знаете, а реально знаете достаточно, чтобы работодатель не выгнал вас за несоответствие. Само собой, если опыта у вас нет, работодатель понимает, что рискует быть тем самым первым.

    Описания своих знаний - пустое, это никому не интересно. Все начинающие верят, что что-то знают, со всеми это случается, а вот спроси, допустим, такого человека:
    Вот что я знаю:
    синтаксис языка

    что значит:
    void (* (* f [])())()
    и он упадёт в обморок, не понимая, как это размотать.
    Ответ написан
    3 комментария
  • Как разобраться в сетях?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Начинать надо с малого. Сначала эхо-сервер, потом чатик, многопользовательский чатик, многопоточный чатик, простой web-сервер и так далее, постепенно наращивая сложность. Кроме того, намного лучше идёт обучение, когда есть понимание принципов работы сетей. За этим знанием можно обратиться к учебнику "Компьютерные сети" Таненбаума.
    Ответ написан
    3 комментария
  • Теоретическая часть по программированию?

    @dmshar
    Одно могу сказать точно: если человек, после полутора лет штудирования С++ (кстати, не самое простое, но - по моему мнению - самое верное начало) пишет по сути - "хочу не только кодить, ни и уметь действительно разрабатывать программные системы" - это отлично. Потому как многие - а сегодня, увы, можно сказать и большинство - останавливаються именно не кодинге, и мнят себя при этом курутыми разработчиками.
    Если обратить внимание на то, что автору всего 17 лет - то тем более - респект, так держать!
    Теперь по сути. Вы абсолютно правы, кодирование на любом языке, даже виртуозное, это еще не программирование. Что-бы стать хорошим программистом надо основательно изучить основы Теории Алгоритмов и Структур данных, теорию и практику работы с базами данных, особенности построения распределенных, мобильных и веб-приложений (даже если завтра вы не собираетесь писать под веб или Андроид), понять хотя-бы в общих чертах, как работают сети, и "полирнуться" основами архитектуры современных информационных систем и паттернами проектирования. Ну и надо понимать, для квалифицированного программиста знание одного языка - этого абсолютно недостаточно.
    В каком порядке и по каким источникам двигаться к цели - тут мнений много и разных. Вот несколько ссылок - только не воспринимайте их буквально, подходите творчески. Смотрите, что лучше вам ложиться на душу, что легче "заходит". И не комплексуйте, не бейтесь головой об стену если чего не поймете сразу - потом, через определенное время вернетесь и с высоты приобретенных знаний разберетесь. Главное - не отступать от цели, как в спорте - хоть по часу-два, но каждый день.
    Итак, для начала:
    https://proglib.io/p/cs-learning/
    https://teachyourselfcs.com/
    https://tproger.ru/curriculum/computer-science-ste...
    Удачи!
    P.S. И еще забыл - главное :-). English!!!! Без него в этой профессии сегодня - никак!
    P.P.S. И да - умение самостоятельно Гууглить, искать нужную информацию, отсекать информационный шлак. Ключевое слово - "самостоятельно"! Но это, как бы, вообще на "нулевом" месте.
    Ответ написан
    1 комментарий
  • Сокеты Беркли. Как установить соединение за NAT'ом?

    Работу за NAT можно сделать функцией вашего приложения (такая функция бывает в torrent-клиентах, например), но это не самый простой функционал.

    Большинство бытовых маршрутизаторов поддерживают протокол UPnP SSDP/IGD и некоторые поддерживают NAT PMP.
    https://en.wikipedia.org/wiki/Internet_Gateway_Dev...
    https://en.wikipedia.org/wiki/NAT_Port_Mapping_Protocol
    Оба протокола позволяют сделать обратный проброс порта через NAT. Для этого сначала делается запрос на обнаружение маршрутизатора, затем делается запрос собственно на маппинг. Подробно и с разбором трафика по обоим способам есть в этой статье:
    https://habr.com/en/post/279969/

    Но предварительно стоит уточнить, поддерживает ли ваш маршрутизатор UPnP. Оборудование enterprise-уровня обычно не поддерживает UPnP по соображениям безопасности.
    Ответ написан
    Комментировать
  • Сокеты Беркли. Как установить соединение за NAT'ом?

    Jump
    @Jump
    Системный администратор со стажем.
    понял, что можно как-то пробросить порты на роутере
    Можно
    Но у вас обязательно должен быть белый адрес выданный вам провайдером. Т.е вы не должны находится за NAT'ом провайдера. Иначе ничего не получится.

    чтобы клиент за NAT'ом мог конектиться со мной.
    Клиент за NAT'ом в любом случае сможет коннектится куда угодно, хоть к вам, хоть еще куда-то.
    Главное чтобы вы были не за NAT'ом, ну или у вас должны быть проброшены порты.
    Ответ написан
    Комментировать
  • Почему после перехода с модуля Apache на CGI VPS стал работать нормально?

    1. в конфиге была какая-то хреновая директива при смене представления пхп вы перегенерили конфиг, в следствие этого проблема ушла.
    2. CGI - в вашем случае я думаю вы были не упоротые и у вас FastCGI или PHP-FPM
    собственно у всего этого семейства не работают в .htaccess все php_flag, php_admin_value, php_admin_flag
    В следствие этого могли быть ошибки например php_admin_value session.save_path = был по умолчанию а не тот что в .htaccess
    3. разные версии php, при смене представления php могла смениться и версия php поскльку это учасвствуют совершенно другие настройки, а то и скомпилены в разных папках.
    Ответ написан
    Комментировать
  • Почему после перехода с модуля Apache на CGI VPS стал работать нормально?

    Sanes
    @Sanes
    Обычно Apache по-умолчанию в режиме mpm-prefork. В этом режиме самый глючный и неправильный режим работы mod_php. Если так хочется использовать mod_php, то выбирайте режимы mpm-itk или mod_ruid2.
    Более или менее универсальный режим это PHP-FPM.
    Ответ написан
    Комментировать
  • Проектирование структуры приложений для начинающего?

    @EvgeniiR
    https://github.com/EvgeniiR
    Роберт Мартин, "Чистая Архитектура", "Чистый код", "Идеальный программист"
    Макконнелл, "Совершенный код".

    Далее по ситуации, Фаулер, Эванс, Кент Бек и т.п.

    Заменять чтение книг собиранием по крупицам информации в интернете ни в коем случае не советую.
    Ответ написан
    28 комментариев
  • Почему массив изменяется?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Операторы + и - принимают объекты по значению, а не по ссылке. Вероятно проблема в этом.
    Ответ написан
    4 комментария
  • Почему массив изменяется?

    @yevgenyyakushov Автор вопроса
    Было
    friend MatrixClass* operator+ (MatrixClass A, MatrixClass B);
    //...
    MatrixClass* operator+ (MatrixClass A, MatrixClass B)
    {
    	//...
    }


    Стало
    friend MatrixClass* operator+ (MatrixClass& A, MatrixClass& B);
    //...
    MatrixClass* operator+ (MatrixClass& A, MatrixClass& B)
    {
    	//...
    }


    Профит
    Ответ написан
    2 комментария
  • Может ли Google блокировать запросы из-за их большого кол-ва (Парсер на Python)?

    SagePtr
    @SagePtr
    Еда - это святое
    Да, при большом кол-ве запросов с одного IP Гугл начинает выдавать капчу при поиске. Убедиться можно на браузере Опера с VPN, там из-за большого кол-ва юзеров через один и тот же VPN капча на гугле практически вечная)
    Ответ написан
    Комментировать
  • Может ли Google блокировать запросы из-за их большого кол-ва (Парсер на Python)?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Да, может
    Ответ написан
    Комментировать
  • Может ли Google блокировать запросы из-за их большого кол-ва (Парсер на Python)?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Гугл не просто может, а делает это. Но в вашем конкретном случае вам стоит обратить внимание на заголовки и код ответа. Для парсинга больших объемов вообще используют прокси
    Ответ написан
    Комментировать
  • Как подключить библиотеку с GitHub в свой проект (C++)?

    SerJook
    @SerJook
    кодер
    Предположим что вы используете Windows и Visual Studio. Тогда:

    1. Для работы этой библиотеки вам понадобится библиотека libcurl.
    Скорее всего вам придется собирать libcurl из исходников. В архиве с исходниками есть инструкция, как ее собирать на Windows (winbuild\BUILD.WINDOWS.txt). Соберите к примеру статическую библиотеку (.lib).

    2. Распакуйте файлы исходников из архива с библиотекой Kolsha/VK (из папки src) в папку вашего проекта.
    Добавьте эти файлы в ваш проект в Visual Studio.

    3. Укажите в свойствах проекта (С++ ->General->Additional include directories) путь к папке, содержащей хедеры libcurl (к примеру "с:\dev\curl-7.58.0\include\" )
    а также в (Linker->general->Additional library directories) путь к папке, содержащей собранную библиотеку (к примеру "c:\dev\curl-7.58.0\builds\libcurl-vc12-x86-release-static-zlib-static-ipv6-sspi-winssl\lib\").
    В свойства проекта -> Linker->Input->Additional dependencies добавьте "libcurl_a.lib".
    Ответ написан
    Комментировать