Задать вопрос
  • Как откатить состояние папки в Git?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Отменить все незакоммиченные изменения в рабочем каталоге поможет команда
    git reset --hard

    PS. Немного подумав мне теперь нравится такой универсальный и более корректный способ.
    git restore --source=хеш_коммита --staged --worktree .

    Затем не забудьте закоммитить новые изменения.

    Указывая --source=хеш_коммита, вы говорите Git использовать содержимое файлов из этого коммита.

    Флаг --staged значит, что изменения будут сразу проиндексированы, как если бы вы их добавили с помощью git add. Этот флаг особенно полезен, если вы хотите сбросить изменения, которые уже были добавлены в индекс, но ещё не закоммичены.

    Флаг --worktree указывает Git восстановить файлы в рабочем каталоге до состояния указанного коммита. Это означает, что любые незакоммиченные изменения в рабочих файлах будут сброшены, и файлы будут восстановлены до состояния, соответствующего указанному коммиту.

    Точка в конце команды указывает, что операция восстановления должна быть применена ко всем файлам в текущем каталоге и его подкаталогах. Это значит, что все файлы в проекте будут восстановлены до состояния, соответствующего указанному коммиту.
    Ответ написан
    5 комментариев
  • Выбор софта для nas, какой софт выбрать под задачи?

    @Drno
    Nextcloud
    Ответ написан
    Комментировать
  • Выбор софта для nas, какой софт выбрать под задачи?

    Zettabyte
    @Zettabyte
    Проф. восстановление данных ▪ Вопрос? См. профиль
    • SeaFile (многие переходят на него после использования двух следующих вариантов из "большой тройки")
    • NextCloud (если нужна "лёгкая" версия, есть образ на Alpine на их dockerhub)
    • OwnCloud
    • FileRun (сильно похож на google drive, нужно покупать лицензию)
    • SyncThing
    • Filestash
    • FileBrowser
    • Rclone
    Ответ написан
    2 комментария
  • Как сделать единый аккаунт для своих сервисов?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Реализовать свой сервис авторизации. Называется CAS, работает примерно так:
    5bd748db6d572869658821.png
    Ответ написан
    6 комментариев
  • Какой CMS движок учить начинающему?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Никакой. Изучайте разработку ПО, языки программирования, построение архитектуры ПО, алгоритмы, математику и т.д и т.п.

    UPD
    Приведу немного аргументации и очевидных вещей для тех, кто не понимает почему ответ именно такой. На самом деле все очень просто: в IT индустрии всё развивается и меняется очень, очень-очень быстро. И как следствие возникает проблема устаревания знаний и умений. Вот например 15-20 лет назад изучение языка программирования под названием "Дельфи" и популярной тогда его среды разработки для десктопных приложений вполне имело смысл и было популярным явлением, т.к. оно тогда довольно широко использовалось, или например Perl для создания сайтов. А где оно сейчас? Почему сегодня сайты пишутся на джаваскрипте? А как на счет десктопных приложений? А ведь те же десять лет назад попробуй скажи такое — как бы область деятельности не пришлось менять. И вот такое происходит просто с языками программирования за довольно короткое время. А основа любого CMS, фреймворка и иже с ними — это как раз таки язык программирования. И вот за время жизни языка программирования в нём случаются новые стандарты, изменения и прочее, а популярное ПО на нём переписываются десятки и сотни раз. Т.е., изменчивость продуктов какого либо языка зависит как от самого языка так и от его популярности. И чем они выше — тем чаще что-то меняется. Из всего этого вытекает очень логичный вывод: в долгосрочной перспективе выгоднее те знания, которые не устареют как можно дольше. И вот тут как раз таки знания разработки ПО и языков программирования, построения архитектура, алгоритмы и прочее имеют наибольший срок устаревания. А уж сколько тысяч лет математике можно и не вспоминать. А она, кстати именно благодаря стремительному развитию IT тоже развивается очень быстрыми темпами. Так вот, при наличии вот таких фундаментальных знаний можно легко и быстро осваивать любые новые фреймворки, CMS, языки программирования и прочее. А уж при наличии подробных мануалов, гугла, форумов и прочего большинство задач сводится тупо к вбиванию "как сделать YYY в ZZZ" в строке поиска (я вот например никак не могу понять ход мыслей людей, которые задают вопросы на форумах и прочих ресусах, ответ на которые выдается в первых же строчках гугла, складывается впечатление, что они вообще первый раз в интернете и про гугл не знают вообще ничего).
    Если есть желание именно в изучении CMS — ставим себе задачу и решаем её используя разные CMS, далее выбираем наиболее понравившуюся и пользуемся пока не надоест или не устареет. А после — повторить.

    Немного перефразирую сам вопрос и соседний популярный ответ:
    — Каким инструментом учиться пользоваться начинающему строителю?
    — Учись использовать молоток и гвозди, леса полно, доски везде используются.
    Вот только строительство — это не одни только доски, в которые забиваются гвозди, а еще архитектура, сопромат и иже с ним, экстерьер, интерьер, отопление, освещение, канализация, вентиляция и еще куча всего. Аналогично и во всех остальных областях, в том числе и web разработке.
    Ответ написан
    9 комментариев
  • Какой ВУЗ в Москве даст знания, но и позволит работать?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Я боюсь поступить в ВУЗ, ...., где не будет разработки программного продукта

    Судя вот по этой фразе - вас интересует направление "Разработка ПО". К сожалению, сегодня практически во всех ВУЗах ситуация именно такая - в области разработки ПО там не научат практически ничему. Почему так? А вот почему:
    1. Огромная скорость развития и изменений в области IT - отсюда следует, что надо бежать, только для того чтобы оставаться на месте. А уже чтобы быть в курсе - надо это надо бежать еще быстрее. Т.е., надо учиться, учиться и еще раз учиться. Каждый день.
    2. Большинство преподавателей в ВУЗах из старшего поколения и многие из них остались в "том времени". Не все конечно, сам лично знаю нескольких вполне бодрых "старичков" из нескольких крупных ВУЗов, которые занимались программированием еще в советское время, наработали огромный опыт и сейчас вполне себе разрабатывают электронику, МК, ПЛИС, процессоры в кремнии, даже передовые нанометровые техпроцессы для мировой промышленности.
    3. Низкая ЗП у преподавателей - сегодня даже начинающим программистам на мировом рынке готовы платить очень даже приличные деньги по нашим меркам, а профессионалам в несколько раз больше. Кто из опытных программистов пойдет работать за месячную ЗП, которую они вполне зарабатывают за день, а то и быстрее?
    4. Программа обучения ВУЗов устарела на полвека - за четыре-пять лет такого "обучения" невозможно подготовить современного программиста. Потому что пока человек будет учиться - его знания устареют на 5-10 лет (а то и больше). А в IT - это целая эпоха, а то и несколько. Это как учить человека конной езде и охоте из лука на диких кабанов, а когда он закончит обучение - везде уже будут ездить машины и супермаркеты на каждом углу. Ну, т.е. передвигаться и достать еды можно и так и так - вот только кому нужен верховой ездок и умеющий стрелять из лука в век самолетов и фастфудов? Вот примерно так же и в IT - сегодня охотимся на кабанчиков и собираем ягоды в лесу, уже завтра кушаем искусственное/синтетическое мясо заморских зверей и фруктов из пробирки, а послезавтра на другом конце галактики помогаем местным неандертальцем предотвратить ядерный конфликт и грозим пальчиком.
    5. На программиста нужно учиться самостоятельно - просто потому что других вариантов нет из-за скорости развития IT и программисту каждый день надо изучать что-то новое. Надо понять как это все работает, а главное - хотеть понять, надо отрабатывать память, развивать способность к переключению контекста в голове, образное мышление. Если привыкнуть, что тебе все рассказывают, показывают и разжевывают - самостоятельно что-то новое вряд ли изучишь. Просто потому что разум привыкнет, а разумом управлять как-то не учат (что несколько странно - есть же общая физическая подготовка, почему же нет общей умственной подготовки?).
    6. При наличии желания - вполне реально за несколько месяцев с нуля выучить что-то из мейнстрима и найти вакансию джуниора и примерно за год-два дорасти до миддла. А за пять лет можно и до сеньора/тимлида дорасти. Было бы желание. Ну или пойти в ВУЗ, потратить годы на сомнительную деятельность, выйти и получить практически нулевой выхлоп в целевой области. Т.е., никакого реального опыта не получить.
    Ответ написан
    6 комментариев
  • Создал личный сервер в майнкрафт. после закрытия программы Putty, сервер закрывается (я полный ноль, все делал по гайдам), что делать?

    @rPman
    после авторизации в putty нужно запускать screen и уже в нем запускать сервер.
    Что бы подключиться позже к этому screen, нужно запускать его с опцией screen -rd (-d это закрытие уже открытого соединения с screen в другом окне или если оно 'повисло', например если закрыл putty не закрыв screen с помощью кнопок ctrl+a d)
    Ответ написан
    2 комментария
  • Почему реакт жалуется на использование useCallback в теле функции провайдера контекста?

    @A1yks
    Так ты из стрелочной функции openClient возвращаешь вызов хука usecallback, поэтому и ругается
    Ответ написан
    2 комментария
  • Почему реакт жалуется на использование useCallback в теле функции провайдера контекста?

    alsolovyev
    @alsolovyev
    ¯\_(ツ)_/¯ Enjoy life, Eat well & Laugh often
    А зачем вы функцию внутри функции оборачиваете в useCallback?
    const openClient = () => useCallback(() => setClientIsOpen(true), []);
    Ответ написан
    1 комментарий
  • Как объединить две таблицы в pandas?

    Maksim_64
    @Maksim_64
    Data Analyst
    pd.merge(левая таблица, правая таблица, left_on='CELL',right_on='GeranCellId ', how=method)

    где метод left, right,inner, outer, cross. Это типы джойнов.
    merge

    Ну и выбери нужные колонки, например. для левой таблицы тебе не нужны BSC и LAC, если ты по правой будешь джойнить, тебе эти колонки оттуда нужны. Выбирать нужные колонки и ставить их в желаемом порядке делают c помощью loc. фрейм.loc[:,[колонка1, колнка2, итд]]
    Ответ написан
    Комментировать
  • Почему не продаются адаптеры Bluetooth 5.0?

    ValdikSS
    @ValdikSS
    Вокруг спецификаций и версий Bluetooth возникла большая путаница из-за наличия двух несовместимых стандартов под одним брендом, оба из которых широко применяются для разных целей.

    Существует два разных, не совместимых между собой протокола Bluetooth: Bluetooth Classic и Bluetooth Low Energy (LE, он же Bluetooth Smart). Ещё есть третий протокол, Bluetooth High Speed, но он не распространён, и не используется в бытовых устройствах.

    Начиная с Bluetooth 4.0, изменения в спецификации касались преимущественно Bluetooth Low Energy, а Classic-версия получала либо незначительные улучшения, либо не получала их вовсе.

    Список изменений между Bluetooth 4.2 и Bluetooth 5:

    9 CHANGES FROM v4.2 TO 5.0

    9.1 NEW FEATURES

    Several new features are introduced in the Bluetooth Core Specification 5.0 Release. The major areas of improvement are:
    • Slot Availability Mask (SAM)
    • 2 Msym/s PHY for LE
    • LE Long Range
    • High Duty Cycle Non-Connectable Advertising
    • LE Advertising Extensions
    • LE Channel Selection Algorithm #2
    9.1.1 Features Added in CSA5 — Integrated in v5.0
    • Higher Output Power

    Источник: www.bluetooth.org/docman/handlers/DownloadDoc.ashx?doc_id=421043 (страница 291)

    Только одно изменение каснулось Classic-версии в рамках спецификации Bluetooth 5: добавили поддержку технологии Slot Availability Mask (SAM), призванную улучшить разделение радиоэфира. Все остальные изменения затрагивают только Bluetooth LE (и Higher Output Power тоже).

    Все аудиоустройства используют только Bluetooth Classic. Наушники и колонки подключить через Bluetooth Low Energy невозможно: не существует стандарта передачи аудио с использованием LE. Стандарт A2DP, применяемый для передачи высококачественного аудио, работает только через Bluetooth Classic, и аналога в LE ему не существует.

    Вывод — приобретать аудиоустройства с Bluetooth 5 только из-за новой версии протокола бессмысленно. Bluetooth 4.0/4.1/4.2 в контексте передачи аудио будет работать точно так же.
    Если анонс новых наушников упоминает удвоенный радиус работы и уменьшенное энергопотребление благодаря Bluetooth 5, то знайте — они либо сами не разбираются, либо вводят вас в заблуждение. Немудрено, ведь даже производители Bluetooth-чипов в своих анонсах путаются в отличиях новой версии стандарта, а некоторые Bluetooth 5-чипы поддерживают пятую версию только для LE, а для Classic используют 4.2.
    Ответ написан
    1 комментарий
  • Как запилить сайт без хостинга у себя дома?

    ValdikSS
    @ValdikSS
    Как именно решить эту проблему? На nic.ru делегировал домен с указанием dns:
    google-public-dns-a.google.com (8.8.8.8)
    google-public-dns-b.google.com (8.8.4.4)

    Вот в чем проблема. Так делать нельзя.
    Вам нужно купить/найти бесплатный NS хостинг. Я список давно составлял:
    habrahabr.ru/post/71172/
    Ответ написан
    1 комментарий
  • За счет чего происходит ускорение программ при наличии модуля ядра linux?

    ValdikSS
    @ValdikSS
    Модуль TUN/TAP, через которые работают все не-ядерные VPN, очень медленный из-за того, что у него есть только интерфейс получения и отправки пакетов по одному пакету за вызов. Большое количество переключений контекста между ядром и пользовательским уровнем очень затратны, что влечёт за собой неэффективное использование процессорного времени.

    Это типичная известная проблема, которую можно решить в течение месяца, но которую не решили в течение двух десятилетий. Достаточно кому-нибудь взяться, внедрить современный (io_uring, например) или какой-то отдельный интерфейс для отправки и получения нескольких пакетов за один вызов, и скорость магически увеличится на порядок-два.

    Оценить ускорение от уменьшения переключений контекста довольно просто, достаточно провести тестирование со значительно увеличенным MTU пакета. Вот какие цифры приводит проект slirp4netns.

    Implementation |  MTU=1500  |  MTU=4000  |  MTU=16384  |  MTU=65520
    ---------------|------------|------------|-------------|------------
    slirp4netns    | 1.07 Gbps  | 2.78 Gbps  |  4.55 Gbps  |  9.21 Gbps
    Ответ написан
    4 комментария
  • Скайп vs Linux

    ValdikSS
    @ValdikSS
    Виноват pulseaudio. Я писал как-то в скайп про этот баг, они ничего внятного не ответили. Запустите скайп, сделайте pulseaudio -k — вуаля!
    Ответ написан
    3 комментария
  • Как сделать максимально автономный сервер?

    ValdikSS
    @ValdikSS
    1. Никаких «вечных серверов». Даже как-то неловко разъяснять такое. «Вечный сервер» — маркетинговый ход, фактически мошенничество, который закончится, как только компания изменит условия/реорганизуется/закроется. Следует читать как «ну, проработает года три, а далее — неизвестно».

    2. Непонятно, какого рода у вас информация, и что именно вы понимаете под словом «захостить», также непонятен критерий автономности. Разместить информацию в публичный доступ? Должна ли она индексироваться? Нужен ли для неё контроль доступа? По какому протоколу она должна быть доступна? Она будет нужна только вам через 10 лет, или кому-то еще? Это лицензированный контент, который могут удалить по DMCA (фильмы, сериалы, музыка)? Это персональные данные (сливы баз данных)? Информация популярна и/или востребована на данный момент? Есть вероятность, что она будет сравнительно востребована через 10 лет? Информация каталогизирована? Информация тематическая (например, архив, посвященный конкретной теме, области науки и т.п.)? Важно ли удобство и скорость доступа к информации?
    Технологий много, но они все разные, с разными назначениями. Ответы на перечисленные вопросы необходимы, чтобы отбросить неподходящие и подробно рассмотреть подходящие.

    3. Если информация публична и востребована, и будет востребована через 10 лет, то следует использовать DC++, BitTorrent + веб-хранилища с прямыми ссылками на файл, добавив ссылки в .torrent-файл, в виде webseed.
    Bittorrent существует с 2006 года, популярен, клиенты есть под все ОС, совместимость и надёжность отличные.
    DC++ всё еще имеет популярность. Основное преимущество перед Bittorrent: возможность поиска файла по его имени или названию директории, возможность лёгкого обновления и дополнения информации (нет привязки к «каталогу» в виде .torrent-файла)

    Если информация конфиденциальна или требует контроля доступа, и у вас и кого-либо другого не будет возможности как-либо поддерживать её в течение 10 лет (я не знаю вашу ситуацию, поэтому предположим, что вам грозит 10-летний тюремный срок), то, возможно, есть смысл оплатить облачное хранилище от крупных компаний (Google, Yandex, Microsoft, Apple) на 10 лет вперед. Это не даёт никаких гарантий, но считаю такой вариант более надёжным, нежели хостинг общего плана (и особенно VPS).

    Если информации немного, она не защищена авторскими правами, каталогизирована и полезна, можно банально разместить её на давно существующих бесплатных хостингах, вроде Ucoz, Google Sites, Neocities, загрузить на Bitbucket, Github, Sourceforge (последний поддерживает хранение больших файлов, которые можно скачать по прямой ссылке, вполне подойдёт в качестве webseed для торрента, к слову).

    Если не боитесь попробовать развивающиеся, но еще не устоявшиеся технологии, присмотритесь к IPFS. Он работает по принципу Bittorrent, но позволяет получать доступ к информации через HTTP, а также поддерживается крупными игроками в лице Cloudflare, у которой есть шлюз из интернета в IPFS: https://cloudflare-ipfs.com/
    Я держу несколько статичных сайтов с собственными доменами в IPFS, на домашнем компьютере, за шлюзом Cloudflare. Преимущества: все плюсы BitTorrent, возможность доступа как к сайту (в т.ч. на своём домене), индексация поисковиками, есть сервисы по долгосрочному платному хранению файлов (eternum.io, pinata.cloud), возможность лёгкого обновления информации. Недостатки: работает всё ещё достаточно медленно и нестабильно, только статичные сайты.

    4. Судя по вашему комментарию выше, у вас всего 100 ГБ медиафайлов. Это вообще ерунда. Если они публичны и представляют ценность хотя бы для узкого круга людей, можете захостить их у меня, через проект Schare: https://valdikss.org.ru/schare/
    Мой критерий автономности — максимальная независимость от сторонней инфраструктуры, поэтому файлы хостятся на домашнем сервере, а раздаются в сетях децентрализованного файлообмена.
    Ответ написан
    Комментировать
  • Как проксировать websocket не упираясь в пределы tcp?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Нет никакого ограничения в 65К портов. При трекинге TCP-потоков используется связка "src ip:port - dst ip:port".
    Ответ написан
    3 комментария
  • Как проксировать websocket не упираясь в пределы tcp?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Проксируется в целом ровно точно так же, как и любая сетевая нагрузка: клиенты [n] -> балансер -> сервера [m]. Лимит портов в 65к достаточно просто преодолевается путем добавления дополнительных сетевых адаптеров/каналов.
    Дополнительные ссылки:
    https://unetworkingab.medium.com/millions-of-activ...
    https://blog.postman.com/postman-engineering-milli...
    https://serverfault.com/questions/725224/how-to-ha...
    https://josephmate.github.io/2022-04-14-max-connec...
    https://github.com/eranyanay/1m-go-websockets
    https://github.com/ramsicandra/1million-ws

    Кроме того, WS коннекты можно балансировать как HTTP - банальным редиректом на прямой коннект к серверу. Т.е. клиент коннектится к балансеру, а он ему говорит: "а теперь тебе вот сюда коннектится надо". Или можно совмещать. Пару слов про проксирование WS в nginx: в сети пишут, что nginx с этим плохо справляется под существенной нагрузкой и лучше всего проксировать WS через специализированные прокси типа HAProxy.
    Ответ написан
    2 комментария
  • Как организовать обработку webhooks?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Складывать их в какое-то хранилище и после манипуляций с апи crm обрабатывать или есть более подходящие решение?

    Да, складывать. Называется это "очередь". Используйте Redis, RabbitMQ и прочее.
    Ответ написан
    6 комментариев
  • Как сделать плавный скролл на CSS (смягчение скролла) на сайте?

    alsolovyev
    @alsolovyev
    ¯\_(ツ)_/¯ Enjoy life, Eat well & Laugh often
    Поведение скрола регулируется браузером. В chrome через флаги установить можно: chrome://flags/#smooth-scrolling
    Если вы хотите изменить поведение скрола на сайте (смягчить, добавить инерции и тд), то только через кастомные скролы. Например: https://locomotivemtl.github.io/locomotive-scroll/
    Ответ написан
    Комментировать
  • Отказоустойчивость web-сервиса - DNS Failover, SQL, PHP. Правильно ли мыслю?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    полагаться на DNS = полагаться на всю цепочку DNS резолверов которая может участвовать в доставке изменений до клиента. (гугловый кеш, клаудфлейр, как самые популярные. Затем DNS провайдеров интернета, использующихся по умолчанию на многих клиентских устройствах, а сейчас еще, в связи с растущей популярностью средств обхода блокировок - даже локальные пользовательские DNS резолверы)
    И никто не гарантирует что все настроено корректно, протухшие записи удаляются, TTL соблюдается именно тот который вы настроили у себя и тд и тп.
    На вашем месте я бы все таки завязался на единую точку входа, но выбрал бы сервис, который обеспечивает достаточную надежность.
    Например cloudflare (спрятать ваши два сервера за ним) или, если хочется именно российского, думаю, можно доверять Яндексу, если у них есть соответствующий сервис (network load balancer насколько я понял - для внутренних ресурсов в облаке)
    Ответ написан
    Комментировать