Задать вопрос
  • Какой ВУЗ в Москве даст знания, но и позволит работать?

    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 насколько я понял - для внутренних ресурсов в облаке)
    Ответ написан
    Комментировать
  • Отказоустойчивость web-сервиса - DNS Failover, SQL, PHP. Правильно ли мыслю?

    Sanes
    @Sanes
    2. Два VPS сервера в разных локациях (например Москва и Казань)

    Один, нормально работающий сервер. Не забивайте голову.
    Ответ написан
    7 комментариев
  • Какие есть способы парсить 5 млн страниц?

    @Everything_is_bad
    Любого, ты упрешься в скорость сети и возможные блокировки, а не в ограничение стека. Ну или упрешься в себя, из-за незнания стека.
    Ответ написан
    2 комментария
  • Можно ли проверить было ли уже событие window.onload?

    Elaryks
    @Elaryks
    Можно через document.readyState проверить состояние страницы:

    if (document.readyState === 'complete') {
       someFunction();
    } else {
       window.addEventListener('load', someFunction);
    }
    Ответ написан
    1 комментарий
  • Отличия ios backend и web backend?

    DevMan
    @DevMan
    iOS backend может использовать механизмы, недоступные вебу.
    архитектурно разницы по существу нет.
    Ответ написан
    Комментировать
  • Отличия ios backend и web backend?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Коротко - нет
    Длинно - можно создать общий апи, который скормят и вебу и мобилке, но есть подход с различными бэкэндами для различных потребителей: для мобилки и веба могут быть разные бэкэнды, которые будут отдавать данные в разном формате и только те, что нужны для конкретного устройства (паттерн Backend For Frontend)
    Ответ написан
    Комментировать