Задать вопрос
  • Как можно проигнорировать проблемы в WebStorm 2022.2?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    как то так
    https://www.jetbrains.com/help/webstorm/disabling-...
    почему не используете поиск?
    Ответ написан
    Комментировать
  • Почему в данном коде необходимо нижнее подчёркивание?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Подчёркивание в JS - допустимое имя переменной. Вы можете заменить его на любое другое неиспользуемое имя.
    Автор кода, скорее всего, хотел показать, что деструктурируемое значение в дальнейшем не используется.
    Ответ написан
    Комментировать
  • Почему в данном коде необходимо нижнее подчёркивание?

    Alexandre888
    @Alexandre888
    Javascript-разработчик
    в задании на входе вы получаете подобные массивы: ["3:5", "4:2", "8:7"]
    функция, передаваемая в .reduce(), имеет 2 обязательных параметра (accumulator, currentValue) и 2 необязательных (index, array).

    здесь .reduce((a, [x, _, y]) в качестве второго параметра (currentValue) выступает [x, _, y].

    если мы применим .reduce() к массиву, который я представил в самом начале ответа, в качестве currentValueбудут выступать следующие значения:
    • "3:5"
    • "4:2"
    • "8:7"

    далее, в действие вступает деструктурирующее присваивание, которое будет применено к каждому из элементов массива (по некоторым причинам оно работает и со строками).
    это можно интерпретировать как:
    // используется 1 элемент массива //
    let x, _, y;
    
    [x, _, y] = "3:5";
    /* x === "3", _ === ":", y === "5"  */
    
    // используется 2 элемент массива //
    let x, _, y;
    
    [x, _, y] = "4:2";
    /* x === "4", _ === ":", y === "2"  */
    
    // используется 3 элемент массива //
    let x, _, y;
    
    [x, _, y] = "8:7";
    /* x === "8", _ === ":", y === "7"  */

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

    вы можете заменить _ на любое другое валидное название переменной, чтобы убедиться, что оно не используется.
    или же, как в следующем примере, добавить запятую, чтобы проигнорировать это значение:
    let x, y;
    
    [x, ,y] = "5:3";
    /* x === "5", y === "3" */
    Ответ написан
    1 комментарий
  • Почему современные языки отказываются от ООП?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    странный у вас вопрос вот что пишут про ржавчину

    В Rust объектная система основана на типажах (traits) и структурах (structs). Типажи определяют сигнатуры методов, которые должны быть реализованы для каждого типа (чаще всего — структуры), реализующего типаж. Типаж может содержать и реализации методов, принимаемые по умолчанию. Реализация типажей для данной структуры, а также реализация собственных методов структуры обозначается ключевым словом impl. Язык содержит несколько десятков встроенных типажей, большая часть которых используется для перегрузки операторов, а некоторые имеют специальное значение.

    Rust поддерживает аналогию наследования типажей — типаж может требовать от реализующего типа реализацию других типажей. Однако языковой поддержки наследования самих типов, и следовательно, классического ООП, в Rust нет. Вместо наследования типов, аналогия иерархии классов реализуется введением типажей, включением структуры-предка в структуру-потомка или введением перечислений для обобщения разных структур[31].

    Язык поддерживает обобщённые типы (generics). Помимо функций, обобщёнными в Rust могут быть комплексные типы данных, структуры и перечисления. Компилятор Rust компилирует обобщённые функции весьма эффективно, применяя к ним мономорфизацию (генерация отдельной копии каждой обобщённой функции непосредственно в каждой точке её вызова). Таким образом, копия может быть адаптирована под конкретные типы аргументов, а следовательно, и оптимизирована для этих типов. В этом отношении обобщённые функции Rust сравнимы по производительности с шаблонами языка C++.
    Ответ написан
    Комментировать
  • Почему современные языки отказываются от ООП?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Они не отказываются. Скорее происходит отказ от "парадигмы" разработки. Языки стали мульти-парадигменные. Посмотрите на С++20 или Scala. Их невозможно положить в коробочку ООП или ФП. В них есть почти полный набор фич и оттуда и отсюда. И с каждым годом число фич растет и граница размывается. Нашим потомкам будет вообще непонятно где идет раздел.

    По поводу golang. Это язык ограниченной разработки. Его создавали специально чтобы порог вхождения был низкий. Фактически делали лайтовый С++ которому можно обучить школьника за 14 дней. Но с перформансом выше чем у Питона. Поэтому выражать какие-то сложные конструкции на типах там скорее всего не получится. У golang есть свой манифест. Я забыл как он называется и где он. Вобщем там довольно четко обоснованно почему такие принципы и почему такая идеология.
    Ответ написан
    1 комментарий
  • Как организовать Deploy кода на несколько проектов?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    1. Мастер репозиторий там лежит пресловутый скрипт, допустим в нем 2 переменные обозначьте их как {{HOST}} {{PORT}}
    2. В билд скрипте для конкретного сайта добавляйте степ со скачиванием файла и перезаписью данных
    Ответ написан
    Комментировать
  • Цель - WEB Full-stack. Сносный ли план обучения для новичка?

    @bestann
    Я училась хорошо, но из знаний тебе действительно понадобится математика (развитое логическое мышление) + английский, это отмечено правильно. В остальном много лишнего и уводящего не в ту степь. Работала в телефонии, но тоже пришлось перейти в DevOps, т.к. нет перспектив. В итоге по жизни приходилось учить кучу всего НЕНУЖНОГО (например разные телефонные станции, на что ушло много времени). Если бы сразу удалось на Linux устроиться, не потеряла бы 15 лет. Поэтому пишу тебе о том,что действительно понадобится. Не трать время не ненужное, и так учить надо ОЧЕНЬ МНОГО. Нужен широкий кругозор.

    Установи дома операционную систему Pop!_OS (на основе Ubuntu) и привыкай работать в Linux. Поставь там qemu, kvm, git, ansible, docker, docker-compose. Тебе будет достаточно виртуальных машин для изучения материала. Ansible на самой машине как контрольная управляющая нода, а настраивать им виртуалки.

    Поставь VSCode Insiders Edition. В нем хорошо работать с кодом. Там плагинов много. И для редактирования yml файлов Ansible, Kubernetes), для Dockerfile, и для программирования потом пригодится.

    Поставь Obsidian. И пиши всю документацию там, собирай там все свои знания! Приучай себя делать конспекты и переводы. Формат написания - Markdown, как раз тот, в котором программисты README.md пишут. https://obsidian.md/ (ставится на разные ОС)

    Чтобы не учить лишнее, пишу, что учить:
    Хорошо знать Linux - Уильям Шоттс - Ок, найди книгу RHCSA8 Sander van Vugt (даже на русском есть,думаю, умеешь искать), подготовься и сдай экзамен RHCSA, дает хорошую базу по Linux. Также есть его видеокурсы, я по ним готовилась. (тоже достанешь). Второй хороший автор Andrew Mallet. Практикуйся на виртуалках CentOS8 (у них проблема с поддержкой с нг, но можешь и нестабильный релиз использовать,тебе же не в продакшн). За рубежом сейчас альтернатива — Rocky Linux. На виртуалках посмотришь как работать с менеджером пакетов yum/dnf, на Pop!_OS - c apt.
    На русском по Linux курсы Кирилла Семаева на Youtube.

    Ansible — управление конфигурациями. Подготовка к экзамену RHCE8 (он после RHCSA), те же авторы (книги есть). У Andrew Mallet досконально разбирается Ansible, можно одновременно с Linux учить,потому что он там и линуксовые команды grep и прочие использует для анализа файлов конфигурации. Очень хороша родная документация на сайте Ansible. Также качай примеры ролей на Ansible Galaxy.
    На русском курсы Астахова на Youtube.

    Git — тут что найдешь. Он есть в составе Kubernetes База от Слерм, материалов достаточно. Цикл статей почитай тут https://css-tricks.com/creating-the-perfect-commit..., 7 и 8 часть скоро выложат. Но для начала поищи видеокурсы на русском (все есть). Надо видео посмотреть, чтоб нагляднее было, потому что сначала непонятно как это ты работаешь вроде в одной папке, но можешь находиться в разных ветках.

    Gitlab — Как вариант завести аккаунт на Gitlab.com и там пробовать. И смотри файлы .giltab-ci.yml и сопутствующие включаемые файлы через include самого Gitlab. Узнай как включать переменные, якоря, extends, needs, правила rules, needs (кстати сейчас можно без stage только через needs), разницу между кэшами и артефактами.
    Jenkins, teamcity используется, но Gitlab у нас чаще... Учи то что чаще используется. Ты не сможешь все инструменты освоить физически. Как устроишься, будешь осваивать имеющееся на работе.

    Docker — так же можешь изучить дома. Курсов хватает. Также попробуй в docker-compose запустить несколько контейнеров.

    Также ты должен знать хотя бы как устанавливать MySQL (про другие бд потом можно расширить), добавлять базы, бэкапить, заводить пользователей, давать права.

    Попробуй установить Nginx + php-fpm + mysql (или MariaDB) - например, чтоб заработала википедия простая BookStack. Локально пропиши имя сайта и проверь как работает, бэкапь базу, потом все удали и восстанови. https://www.bookstackapp.com/

    Kubernetes — сложно без базы указанной выше, но можешь подписаться на youtube канал Слерма,у них же есть периодически бесплатные курсы с возможностью практики. Дома можно только minikube, если ресурсов мало. Это факультативно, даже первые 4 пункта.

    По языкам программирования. Хотя бы освой bash в Linux. Python или Go — можно намного позже, это уже для программистов.Для тебя это будет плюсом.но в довесок. Иначе ты до профессии девопса будешь долго идти, а вернее до пенсии)) Сейчас спрос очень большой!!!

    Итак, резюмируя: Linux (+bash), Ansible, Docker, git —must have, Gitlab, SQL - желательно. Сети — очень зависит от работы. Главное, понимать что такое ip-адреса, dns, маска, шлюз, понимать как настраивать файрвол и сетевые интерфейсы в Linux, понимать что включить (какой параметр), чтобы Linux начал маршрутизировать трафик.
    Kubernetes, Terraform — это уже уровнем выше.

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

    Тут расти и расти до бесконечности.

    Извини за нескромный вопрос: почему ты в 22 года только на 1 курсе колледжа заочно? Это даже не вуз.
    И что за краткий курс школьной математики? Ты в школе не учился что ли?
    DevOps — это непросто, поэтому надо хорошо понимать, какая у тебя база, потянешь ли ты.

    UDP. Только увидела.
    Если цель не DevOps, а web fullstack, то может твой план подойдет больше. Но тоже надо иметь ввиду, что FullStack — это много. Иди сначала фронтенд-разработчиком. Если хочешь учит востребованное, то JavaScript, для фронденда фреймфорк vue.js или react. Если хочешь быть бэком, надо уже хорошо знать базы данных помимо самого языка программирования. Из популярных так же JavaScript (node.js). Python и Go так же популярны. И если уж учить, то Go, а не C#.
    Ответ написан
    7 комментариев
  • Как настроить Prettier для Git?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Отформатировать один раз все файлы, закоммитить и придерживаться стайлгайда. Иначе зачем вам вообще prettier?
    Ответ написан
    Комментировать
  • Есть ли смысл использовать Git?

    toxa82
    @toxa82
    История изменений. Возможность возврата к любому коммиту, вернуть что удалил если вдруг понадобилось снова. Та и обновлять проще с гитом, чем каждый раз архив лить.
    Ответ написан
    Комментировать
  • Есть ли смысл использовать Git?

    @Vitsliputsli
    Можно. Но, например, когда проект начнет работать вам понадобится добавить новую фичу, а следовательно у вас появится 2 версии и нужно будет их как-то легко разделять. Пока вы будете делать эту новую фичу, нужно будет сделать еще одну побыстрее, уже 3 версии. Можно наделать отдельные директории и переключаться между ними, использовать внешние утилиты сравнения, а можно использовать git.
    Когда через год понадобится разобраться, а зачем так было сделано, можно найти коммит, в рамках которого было внесено изменение и понять зачем. Еще лучше, если коммиты связаны с тасками в системе управления проектом.
    Когда наскучит вручную таскать код на сервер. Когда устанешь копировать файлики между версиями для переноса функционала. Когда все сломал, и понимаешь, что легко бы нашел причину, если бы фиксировал предыдущее стабильное состояние. И это только то, что первое приходит в голову.
    Ответ написан
    Комментировать
  • Существует ли способ быстро запускать текущий файл в среде NodeJS?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    1. В корне проекта создайте папку .vscode (если ее еще нет)
    2. Создайте в папке .vscode файл tasks.json со следующим содержимым:
    {
      "version": "2.0.0",
      "tasks": [
        {
          "label": "Run current file in node.js",
          "type": "shell",
          "command": "node",
          "args": ["${file}"]
        }
      ]
    }
    Если такой файл уже есть, то просто дополните массив tasks содержимым выше.
    3. Нажмите Ctrl+Shift+P и введите команду Preferences: Open Keyboard Shortcuts (JSON), должен открыться файл keybindings.json, добавьте в конец массива следующий объект:
    {
      "key": "alt+f5",
      "command": "workbench.action.tasks.runTask",
      "args": "Run current file in node.js",
      "when": "editorTextFocus && editorLangId == javascript"
    }


    Все, теперь по Alt+F5 в тектовом редакторе будет запускаться текущий файл нодой, если он js файл
    Ответ написан
    1 комментарий
  • Как запустить docker на MacOs без Docker Desktop?

    @q2digger
    никого не трогаю, починяю примус
    Colima - https://github.com/abiosoft/colima
    использую вместо докер-десктоп на маке, легкая и простая.
    Ответ написан
    Комментировать
  • Sysvol не реплицируется через DFS?

    @BudNejnee Автор вопроса
    Решение:

    "Если репликация не пойдет, то дело может быть в том, что MPADSERV слишком долго не реплицировался с партнером (умершим) и репликация на нем остановлена: такая проверка (с макс. сроком в 90 дней по умолчанию добавлена начиная с Win2012). Про это пишется в журнал событий DFSR сразу после запуска службы (один раз), ЕМНИП код события 4012. Если так, то для возобновления репликации надо отключить эту проверку через WMI:
    wmic.exe /namespace:\\root\microsoftdfs path DfsrMachineConfig set MaxOfflineTimeInDays=0"
    Ответ написан
    1 комментарий
  • Почему экранирование не работает?

    hint000
    @hint000
    у админа три руки
    null здесь неуместен. Для обозначения пустой строки используют кавычки, между которыми ничего нет, а не null.
    ...
    if "%attributes%" EQU "" (
    ...
    Ответ написан
    Комментировать
  • Как получить текущий путь в BAT файле?

    @res2001
    Developer, ex-admin
    Именно так и узнавать текущий путь: %CD%
    Это не важно где лежит батник, т.к. исполняется не сам батник, а cmd.exe. Т.е. когда вы 2ПКМите на батнике, лежащем на раб.столе запускается команда: cmd.exe /c c:\users\user\Desktop\file.bat
    При этом путь где лежит батник никакого отношения к текущему пути не имеет. cmd.exe обычно запускается с текущим каталогом %SystemRoot%\System32.
    Чтоб перейти в каталог, где лежит батник, используйте команду: cd /d "%~dp0"
    Пути можно получать из параметров батника, указанным способом, то же самое можно делать для переменных цикла, и параметров процедур. Список доступных модификаторов (буквы после %~ доступны в описании команд call и for.
    Ответ написан
    1 комментарий
  • Почему Git-команда ведёт себя так?

    @qwazimord
    Интроверт
    Эта команда выводит конфиг постранично. Если нажать пробел - появится следующая страница, если q - то команда завершится и снова можно будет вводить команды. Перед нажатием q убедитесь, что раскладка английская, а не русская.
    Ответ написан
    3 комментария
  • Как с помощью регулярного выражения поставить переносы строк?

    @Herest
    Открываем меню редактора Search > Replace (или быстрым сочетанием клавиш Ctrl + H) и устанавливаем режим поиска Regular expression. Просим найти (\d{3} ) и заменить найденное на <br>\n$1. Дальше жмем кнопку Replace All и получаем результат.

    62aa0db4bac8a950489258.png
    Ответ написан
    Комментировать
  • Возможно ли обезопасить себя имея два роутера?

    @rPman
    для полноценной защиты тебе нужно 3 простых роутера
    1 роутер выходит в интернет, в нем локальная сеть 192.169.0.0/24
    каждому клиенту роутеры 2 и 3, в каждой из них настроена своя сеть, отличающаяся от сети первого роутера (маловероятно что роутеры сумеют NAT-ить если ip совпадут, хотя в принципе такое возможно), пусть будет 192.168.1.0/24, при этом WAN порты этих 2 и 3 роутеров подключены к портам локальной сети 1 роутера.

    в этой схеме оба клиента максимально изолированы друг от друга (читай vlan) но будет очень нехороший недостаток - не будет работать upnp, а для настройки перенаправлений портов нужно будет доступ к роутеру 1 и роутеру 2 и 3 соответственно, т.е. один пользователь должен иметь доступ к первому роутеру и оба клиента к своим.
    Ответ написан
    Комментировать
  • Что выбрать: Syncthing vs nextCloud vs Seafile vs OwnCloud vs Другой сервис?

    @Vallefor
    На днях пробовал ownCloud, NextCloud и Seafile.
    ownCloud / Nextcloud:
    Серверная часть написана на PHP + БД (точно умеет работать с mysql и sqlite).
    Для фронтенда обязательно иметь Apache2+php или nginx+php.
    Без настройки redis в помощь - тормозной просто до невозможности. С redis все становится на много лучше. Все операции по сканированию и проверке идут через крон, который по умолчанию запускается раз в 15 минут (кстати, при установке серверной части - не предупреждают о том, что это нужно сделать).

    Все клиенты работают через WebDAV это просто супер-минус:
    Так как при синхронизации клиент сканирует по очереди все серверные папки, отправляя кучу запросов. Каждый файл при загрузке отправляется тоже отдельным запросом со всеми накладными расходами - в результате куча маленьких файлов синхронизируется просто невыносимо долго (10гб мелких файлов на сервер с 1Гбит линком может отправляться 10-20часов). Все это, в случае краша просто останавливается.
    А крашнуться может по разным причинам (перечислю то, что было у нас):
    • При загрузке больших файлов может отвалиться и nginx и php-fpm. Почему они не загружает их по умолчанию частями - это странно. При том, что вебдав это поддерживает.
    • php-fpm может крашуться, если придется отдать очень много файлов в одной папке (так и не получилось вылечить).
    • Крашится из-за ограничений линукс (255 байт на имя файла) - например, на маке файлы могут иметь более длинное имя.
    • От монтирование того же самого WebDAV в finder MacOS можно сразу отказаться, работает очень медленно и нестабильно. При этом при монтировании через Cloudmounter все ок. В Linux с монтированием тоже все ок.


    После каждого краша синхронизатор просто останавливается. Через какое-то время перезапускается, опять доходит до ошибки и опять останавливается. Я конечно понимаю, если нужно каждому юзеру выделить 1-5 гб места, то наверное все ок, но когда дизайнерам надо засинхронизировать 200Гб макетов и программистам по 5-20гб мелких файлов, то это решение можно смело обойти стороной.

    Единственный плюс owncloud/nextcloud это то, что он файлы хранит файлами.

    Интересно то, что не смотря на то, что вроде вся опенсорс тусовка ушла в nextcloud, в owncloud сейчас есть и виртуальная ФС и diff синхронизация, чего все еще нет в nextcloud.

    Seafile
    Разработчики говорят, что ядро сервера написано на C и оно очень быстрое. Остальное похоже написано на питоне. В качестве БД использует MySQL или sqlite.
    Для фронтенда можно использовать apache2 или nginx. А можно подсоединяться по IP.

    Первый день тестируем. Пока вообще все на столько хорошо, что даже не верится. 10Гб мелких файлов засинхронизировал вообще без всяких вопросов и ошибок менее чем за 1 час.

    Файлы хранятся в какой-то собственной структуре, это минус, но есть утилита seaf-fsck, которая, в случае беды может экспортнуть все файлы. Не получится так сделать только с зашифрованными библиотеками. Но никто не мешает настроить резервирование базы и данных на отдельное хранилище или по крайней мере хранить все на райд-массивах, чтоб обезопасить себя.

    Остановимся пока на Seafile. Скорость и глючность Nextcloud/owncloud своlит все его плюсы на нет.
    Ответ написан
    Комментировать