• Как определить тип OS по SSH?

    @vitaly_il1
    DevOps Consulting
    Два варианта:
    1) запустить "uname -a" - https://stackoverflow.com/questions/46669453/effic...
    2) запустить nmap - это должно работать даже без пользователя на удаленной системе https://stackoverflow.com/questions/27158046/remot...
    Ответ написан
    3 комментария
  • Я не могу решить вопрос с асинхронным выполнением кода. Оптимальное решение?

    fenrir1121
    @fenrir1121
    Начни с документации
    эта статья тык

    Вам внутри вашего же примера дан нужный код
    def my_after(error):
        coro = some_channel.send('Song is done!')
        fut = asyncio.run_coroutine_threadsafe(coro, client.loop)
        try:
            fut.result()
        except:
            # an error happened sending the message
            pass

    coro - асинхронная функция
    Ответ написан
  • Как в MarkdownFilter сделать ссылку открывающейся в новой вкладке?

    @Lpndn
    Это, конечно, некропостинг, но отвечу, т.к. сам искал такое:

    Единтственное универсальное решение — использовать HTML внутри Markdown, т.е.
    [Link](http://example.com)
    заменить на
    <a href="http://example.com" target="_blank">Link</a>

    Но для некоторых движков, в частности для Wiki.js, работает вот такая конструкция:
    [Link](http://example.com){target="_blank"}
    Ответ написан
    Комментировать
  • Кроссплатформенная разработка: какой фреймворк выбрать?

    @PiloTeZ
    ...
    Тут пишут, что в маркетах запрещены приложения на веб вью. Ничего подобного. Имел приложение с более чем 300 000 установок, все было нормально. Размещено было и в AppStore, и в PlayMarket.
    Запрещены приложения, которые выступают просто браузером для какого-то сайта.

    Если у вас есть хорошие знания jS и какого-нибудь веб фреймворка, и нет знаний натива, порекомендовал бы Ionic Framework https://ionicframework.com/ . Производительность у приложений нормальная, и кроссплатформенность практически полная. Есть нюансы, но это уже детали. Нюансы есть у любого решения.

    Для windows можно использовать Electron https://www.electronjs.org/
    Ответ написан
    Комментировать
  • Как узнать «Connection-specific DNS Suffix» host-машины изнутри гостевой виртуальной машины?

    @vitaly_il1
    DevOps Consulting
    Насколько понимаю, в целом никак - т.к. из VM мы видим только то и в той конфигурации, что нам дали.
    Ответ написан
    Комментировать
  • Что такое «.js@crc=6»?

    SagePtr
    @SagePtr
    Еда - это святое
    Скорее всего, изначально URL файла выглядел наподобие https://домен/папка/файл.js?crc=6, где ?crc=6 использовалось для обозначения версии этого файла на случай, если в кэше браузера могла находиться какая-либо из предыдущих его редакций, предположительно их было пять (при каждом изменении файла - в URL также менялся этот номер, чтобы браузер считал файл другим и не брал из кэша старый). Но потом этот файл был сохранён на диск на стороне клиента, а в файловой системе вопросительный знак недопустим, потому этот символ был заменён на символ @. Так и получилось такое странное расширение файла. Почем именно crc - скорее всего, просто неудачно выбранное название параметра, который в принципе может называться как угодно или вообще не иметь названия, лишь бы символы после ? различались от версии к версии, если выбран именно такой способ обхода кэша.
    Ответ написан
    2 комментария
  • Использование staticmethod в Python это плохая практика?

    iggor-markin
    @iggor-markin
    Python Developer
    Вы не задаёте вопросов в этой заметке, поэтому просто прокомментирую. Зло — это когда программист делает какие-то вещи необдуманно. От балды. У вас же есть задача и вы решаете её доступным, понятным и удобным способом. Главная мысль уже описана вами же:
    существуют ситуации, когда в бизнес-логике возникает необходимость
    Ответ написан
    Комментировать
  • Это единственный способ сделать перегрузку метода родительского класса?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Ответ написан
    Комментировать
  • Почему много HTTP запросов - это плохо?

    Griboks
    @Griboks
    Это всеобщее заблуждение, пораждённое веб-макаками. Мол, нафига нам что-то оптимизировать и вообще думать о низкоуровневых вещах, когда можно тупо забандлить всё в один файл.

    Нужно управлять ресурсами, оптимизировать их и кешировать. Правда в том, что много запросов - это хорошо, но они должны быть построены определённым образом и синхронизированы между собой. Если кратко, то:
    1) загружается бандл с базовыми ресурсами, необходимыми для отображения страницы
    2,3,4) параллельно в фоне асинхронно загружаются вспомогательные бандлы для красоты и хотелок дизайнеров+маркетологов+шпионов+рекламы * (10 мб на страницу, ага, ага, верю)
    5) некоторые бандлы загружаются по требованию

    * все хотелки в идеале следует послать "на доработку", но есть риск увольнения

    Техчасть
    Запрос даёт оверхед, читайте + 0,3 секунды к времени загрузки страницы. 10 запросов = +3с, что уменьшает вероятность удержания пользователя. http2, ws и иже с ними дают оверхед не на отдельный запрос, а на целый бндл за раз, т.е. 10 запросов = +0,3 с.
    Браузер рендерит страницу после загрузки, т.е. эти ваши +3с превращаются в +10 с с учётом динамической мишуры и прочих гениальный идей программистов, которые не в курсе про механику работы браузера.
    Решение: грузить основной бандл через http2 → рендерить → грузить остальное, не мешая наслаждаться очередным шедевром сайтостроения пользователю
    Ответ написан
    3 комментария
  • Что означает и зачем нужен + в начале prompt?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Это - самый простой и короткий способ сконвертировать в число
    Ответ написан
    Комментировать
  • Как пройти двухфакторную аутентификацию на сайте с помощью Python?

    @trankov
    Двухфакторная идентификация для того и придумана, чтобы её нельзя было заскриптовать.
    Ответ написан
    Комментировать
  • Почему нее качаются библиотеки пайтон через пайчарм?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Приносим извинения, все штатные экстрасенсы в отпуску, в связи с чем мы не в состоянии увидеть текст ошибки, отображаемый в вашей консоли что затрудняет возможность осмысленного ответа. Попробуйте приложить текст ошибки или обратиться попозже.
    Ответ написан
    Комментировать
  • Единый микросервис для сбора/хранения всех логов, правильно ли это?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    1 вариант: Все логи отправляются в один микросервис.

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

    А вот как это делать - уже разные варианты есть.

    Ваше приложение может писать в stdout, и если вы пользуетесь чем-то вроде kubernetes/openshift, то это удобно ловить централизировано сразу на кластере, тегировать по имени приложения/пода и отправлять дальше.

    Ваше приложение может напрямую писать логи в какой-нибудь logstash, который все собирает парсит и отправляет дальше

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

    Ваше приложение может писать логи прямо в базу данных. Даже в sql базу, или прямо в elastic.

    Ваше приложение может писать просто в лог файлы, а потом эти лог файлы собираются, парсятся, отправляются в лог аггрегатор.

    В общем на любой вкус и цвет. Определитесь с объемом логов, с пиковыми моментами, с тем что вы хотите делать и сделайте общий стандарт для всех ваших компонентов.

    2 вариант: Каждый микросервис пишет собственные логи в своем хранилище.

    Ну можно и так.
    Ответ написан
    2 комментария
  • Почему после добавления строки в конец файла происходит изменение предыдущей строки?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Видите знак красный? Это и есть причина. В последней строке текста желательно всегда нажимать Enter, чтобы добавился символ новой строки. GitHub даже особо помечает такие места.

    61f18e243f64f153432063.png
    Строки без символа переноса в конце это плохо для Git. Так как если захочется добавить новую строку в файл, то сначала придётся добавить в конец последней строки символ переноса, т. е. ИЗМЕНИТЬ строку. В истории будет видно это изменение, хотя формально, казалось бы, ничего не меняли. Это запутывает просмотр реальных изменений.

    Вот ещё пример:
    6446b3dd52bfa777082738.png
    Поэтому ВСЕГДА добавляйте перенос в последней строке кода. В большинстве редакторов это выглядит как добавление пустой строки в конце, и инстинктивно хочется её удалить, но на самом деле никакой «лишней» строки нет, это фантом. Это редактор её рисует, чтобы можно было поставить туда курсор и начать вводить символы. Но пока вы туда ничего не ввели, строки не существует. Если смотреть через GitHub то лишней пустой строки там нет.
    Ответ написан
    1 комментарий
  • Можно ли собрать backend node js проект с помощью webpack и будет ли он работать?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Можно, но зачем собирать бэкенд в один файл?
    Ответ написан
    2 комментария
  • Можно ли собрать backend node js проект с помощью webpack и будет ли он работать?

    vabka
    @vabka
    Токсичный шарпист
    Собрать можно, и даже будет работать.
    Но зачем?
    Где он нужен на бэкенде?
    Ответ написан
    Комментировать
  • Где посмотреть идеи для проекта OpenSource?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Если часто встречаете вопросы "Что написать" на форумах, то это не значит, что задающие их люди способны что-то написать. Скорее наоборот.
    Уже есть в сети всякие там кикстартеры. шде люди ищут финансирование для своих проектов, а также есть гитхаб, где люди могут собраться в работе над опенсорс-проектом и поработать.
    Если нет какого-то известного сайта, знакомящего разработчиков и пользователей, дающего им пообщаться, то это всего лишь означает. что разговаривать им не о чем.
    Людей на планете дофигища и всем сто-то нужно в той или иной степени. Идей масса, продуктов платных и бесплатных разного качества тоже полно, зато людей, которым вообще пофигу что писать, причем забесплатно, видимо, раз, два и обчелся. Не наберётся их на целую социальную сеть.

    Да и в чем проблема? Вот есть фотошоп - платный и не дешевый, а есть немалая куча "бесплатных аналогов фотошопа". Самый, наверно, известный - это Gimp. Нужен ли кому-то хороший графический редактор - безусловно. Много ли таких людей? Очень! Есть ли опенсорс проекты в этой тематике? Огромное количество!
    А вот с качеством у них так себе, хотя многие вполне юзабельны и во многом спообны аменить хорошие платные аналоги.
    Слышали выражение "Блеск и нищета опенороса"? Вот лучше не скажешь. Огромное кооличество человекочасов работы энтузиастов и штатных программистов, сидящих на своих окладах, пишут очень большое количество открытого кода. Можно садиться и писать любой проект. Нет никакого дефицита проектов и идей. Просто бери и пиши любой ткрытый проект с гитхаба, или любой аналог популярного платного. И тех и других в избытке!

    Зачем делать социальную сеть, которая даёт то. чего и так навалом? Она никому не нужна.

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

    Так какой смысл прятать идеи. если выгоднее ими делиться?!
    В общем за идеями приходите, рассказывайте что интересно - накидаем.
    Ответ написан
    Комментировать
  • Что означает "!!~"?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Сокращалка, удобная для indexOf(), который возвращает -1 если не найдено, или индекс от 0 и больше.

    Для логики приложения часто бывает нужно узнать только, найдено или нет: т.е. -1 или иное значение. Можно просто сравнивать if (a.indexOf(b) > -1) { /* найдено! */ } но иногда хочется короче.

    Битовый оператор НЕ ~ хорош тем, что выделяет -1: только -1 с этим оператором даст 0. Прочие числа дадут какое-то ненулевое значение.

    ~(-1) === 0

    Остаётся привести значение из численного в булево. Для этого два воскл. знака — два логических НЕ.
    • для варианта «найдено» из числа от 0 и больше получилось тоже ненулевое число, и !! даст true
    • для варианта «не найдено» из -1 получится уникальный 0, и !!0 вернёт false
    Ответ написан
    4 комментария