• Взаимодействие приложений на разных стэках?

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

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

    А потом приходит начальник, и говорит. - эээ, мы вообще планировали распараллеливать эту нейронку, у нас будет от 10 до 10500 инстансов в в облаке. Данные давайте сложим вот в монго-кластер, задачи по обработке сбрасываем в очередь в celery, если очередь вырастает больше чем на N, то кубер автоматически поднимает еще несколько инстансов... и так далее, насколько у него фантазия разгуляется.

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

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

    А кроме производительности бывают вопросы типа "сервис упал во время работы, что случилось с задачей которую он обрабатывал? Нужно ли его рестартнуть? Нужно ли перебросить эту задачу на другой инстанс? Если все таски работают нормально, а эта уже в пятый раз упала, то может она кривая какая-то?" И тут понеслось новым слоем - система мониторинга, оповещения, автоматический или полуавтоматический "кризис менеджмент".

    В общем тема большая, и большие коммпании решают ее по разному - структура сервисов фейсбука и алиэкспресса может сильно отличаться, и каждый будет уверен что его подход хорош. Ну или не очень хорош, но менять архитектуру для сотени или тысяч сервисов - дорого. И комания binance основанная 5 лет назад может архитектурно оказаться гораздо современнее и технологичнее какого-нибудь paypal'а основанного в прошлом тысячелетии. И не потому что paypal не шарит, а потому что переделывать большую систему очень дорого.

    А в майкрософте, основанном 50 лет назад, можно вообще очень странные и неэффективные штуки найти, я уверен.

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

    OtshelnikFm
    @OtshelnikFm Куратор тега WordPress
    Обо мне расскажет yawncato.com
    1. Определение целей и требований: Определение основных целей сайта и требований к его функционалу и дизайну. Это включает определение типа сайта (коммерческий, информационный, портал), структуры и контента.

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

    3. Разработка дизайна: Определяется внешний вид сайта - цветовая гамма, шрифты, стили интерфейса и дизайн элементов.

    4. Верстка: Сверстывание сайта. На этом этапе создаются HTML-страницы сайта и связываются элементы дизайна и функционала.

    5. Наполнение контентом: Внесение информации на сайт в соответствии с его целями.

    6. Тестирование: Проверка сайта на работоспособность, работоспособность функционала и дизайна. На этом этапе исправляются найденные ошибки.

    7. Запуск сайта: После тестирования и устранения ошибок сайт запускается в работу.

    8. Поддержание сайта: Поддержание сайта в актуальном состоянии - добавление нового контента, исправление ошибок, обновление дизайна и функционала.

    регистрация домена и выбор/покупка хостинга также являются важными шагами при создании сайта. Регистрация домена - это процесс выбора и регистрации уникального интернет-адреса сайта. Это можно сделать на специальных сайтах, таких как Namecheap, GoDaddy, 1&1 и т.д.

    Хостинг - это услуга, которая позволяет размещать сайт на сервере и обеспечивает его доступность для интернет-пользователей. Хостинг выбирается в зависимости от потребностей сайта, его трафика, скорости и прочих параметров. Также можно выбрать хостинг-провайдера на специальных сайтах, таких как Hostinger, Bluehost, DreamHost и т.д.

    Касательно WordPress: после того, как домен и хостинг были выбраны и зарегистрированы, можно установить WordPress на свой сайт. WordPress - это платформа для управления содержимым сайта, которая позволяет легко работать с контентом, дизайном и функциональностью сайта. Есть несколько способов установки WordPress, но один из самых простых - это использовать специальные автоматизированные установщики, такие как Softaculous, доступный в панели управления хостингом.

    СЕО составляющие:

    1. Ключевые слова: для успешного продвижения сайта необходимо определить основные ключевые слова, по которым пользователи будут находить вас в поисковых системах.

    2. Оптимизация контента: для того чтобы улучшить позиции сайта в поисковых системах, необходимо оптимизировать контент на сайте. Правильное использование ключевых слов, уникальный и качественный контент, оптимизация заголовков, метатегов и описаний – все это нужно для успешной оптимизации сайта.

    3. Качественные ссылки: для увеличения авторитетности сайта в поисковых системах необходимы качественные внешние ссылки. Чтобы получить их, нужно предоставлять полезный и высококачественный контент.

    Реклама и продвижение в сети:

    1. PPC-реклама: это тип рекламы, который позволяет быстро привлечь целевую аудиторию на сайт.

    2. Контент-маркетинг: это метод продвижения, который основан на создании и распространении уникального и полезного контента для вашей целевой аудитории.

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

    4. Социальные сети: один из самых эффективных методов продвижения и рекламы в интернете. Создание качественного контента, взаимодействие с пользователем, повышение узнаваемости бренда – все это возможно благодаря социальным сетям.
    Ответ написан
    Комментировать
  • Как сделан обход NAT в i2p?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если гора не ходит к магомету...

    Скорее всего клиентский софт i2p сам инициирует соединение.
    Ответ написан
  • Что выбрать для CI/CD .NET без докера?

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

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

    Можете даже через батник в планировщике задач реализовать
    Ответ написан
    Комментировать
  • С чего начать изучение Linux?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Дебиан является таковым?

    Является. Базовый дистриб, на основе которого делают многие другие. Мощное коммунити, много документации. Неплохой выбор. На базе дебиана сделана Astra linux, например.
    Поначалу рекомендую не лезть bare-metal, а ставить на виртуалку - первые пять раз точно придется сносить :)

    Кстати, советчиков-комитетчиков, которые предлагают бубунту - слушать не стоит. Иначе есть риск "изучить линукс" на уровне знания блондинкой автомобиля - она знает, как в него сесть, какк завести и поехать, но малейшая неисправность поставит ее в ... позу :) Бубунта - это такой "линух для блондинок", бубунтовод выявляется сразу, как только просишь сделать что-то через консоль :)
    Ответ написан
    8 комментариев
  • Существует ли инструмент для управления серверами ssh?

    saboteur_kiev
    @saboteur_kiev Куратор тега SSH
    software engineer
    Я бы замутил велосипед на ансибл.
    настроить все sshd, чтобы ключи читались только из /etc/ssh/keys/%user/, чтобы никто себе руками ничего не ковырял. И все. Раз в сутки по всем машинам пробежался, обновился и готово
    Ответ написан
    Комментировать
  • Стоит ли идти в Embedded разработку?

    @dima20155
    you don't choose c++. It chooses you
    Диагонально прочитал статью и хочу сказать, что с частью пунктов соглашусь, но, не абсолюнто со всем.
    Прежде всего задайте себе вопрос а чего вы хотите? Что вам интересно?
    Действительно написание ПО под MCU требует понимание (в основном, цифровой) электроники. Например, классические цифровые интерфейсы передачи данных (UART, I2C, SPI) это прямой мостик между знаниями software и hardware и хороший embedder должен понимать как эти протоколы работают и куда ткнуть осцилограф/логический анализатор, чтобы понять что не так.

    Помимо описанного выше есть более hardcore уровень - программирование под embedded Linux. В ситуации, когда вам не хватает ресурсов MCU для, например, проигрывания высококачественного звука, считывания изображений с камер, а также все ещё нужно управлять сигналами на плате напрямую, то ваш выбор это embedded Linux и так далее. Тут опять же много чистого С.

    Есть и третья известная мне сфера для embedded разработчиков (которая также не лишена славы). Компании, занимающиеся разработкой CPU, MCU и иных цифровых/цифроаналоговых микросхем. Да, вам покажется, что это только про Intel, AMD, Samsung, Huawei. Но даже в РФ минимум с пол десятка компаний, которые занимаются подобными разработками и активно нанимают людей. Все это довольно сложные и, в то же время, интересные темы.

    Как вы догадываетесь, для каждого из трех пунктов нужны немного разные знания (хотя базовое образование, в основном, требуется одно и тоже). Также для 2 и 3 пункта ваше физическое присуствие на рабочем месте, вряд ли, потребуется, ровно как и лезть руками что-то паять (просто потому что руками в этих областях уже никто не паяет). Обычно, для embedded из 1 абзаца, требуется больше работы с железом, но и тут есть вариации.

    P.S. Лично мне несколько наскучило копаться с железками (а их проектирование - это моя магистерская работа)) и отлаживать низкоуровневые интерфейсы и код, поэтому я и сам немного свернул с этой embedded дорожки, но я занимался только тем, что описано в 1 пункте и совсем немного из 2 (к слову оба успел поработать и оффлайн и онлайн). Найти работу с моим опытом не было особо сложно, так что embedded не приговор: разонравилось вполне сможете перейти в С++/Rust было бы желание.
    P.S.S. Извиняюсь, что получилось немного скомкано, спрашивайте, могу рассказать про свой опыт подробнее.
    Ответ написан
    5 комментариев
  • Стоит ли идти в Embedded разработку?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Идти надо туда, чем интересно заниматься. Тем более, что в каждой области свои проблемы. У кровавого энтерпрайза может и красивые офисы на 37-м этаже, но из них тоже хочется выйти в окно. Как мне кажется, сейчас как раз такое время, когда спрос на железячников может сильно возрасти, а как следствие, и условия работы улучшатся.
    Ответ написан
    Комментировать
  • Что эффективней, чтение из файла или массив?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вопрос не глупый а вполне себе хороший.

    Его плавное развитие приводит к концепции баз данных. Самое главное что можно сказать тезисно это
    1) Пока памяти хватает (массив) - используй смело память
    2) Диск - больше и дешевле памяти
    3) С памятью работать легко. С диском - очень неудобно и надо обрабатывать IOExceptions почти всегда.
    Диски внезапно полны сюрпризов. Могут быть сетевыми дисками.
    4) Разные диски имеют скорость на порядки разную.
    5) Диски ведут себя очень плохо на random access. От этого даже метрика IOPS появилась.
    Ее очень любят обсуждать админы баз данных.
    6) Существуют структуры данных которые спецом создавались только для дисков (B+Tree)
    7) Диск - переживает выключение питания.
    8) Самые разумные решения - сочетают в себе и диск и память в тех частях кода где это нужно.
    9) Есть интерфейсы программирования которые виртуализирут диск как память. Этим пользуется
    SQLite например.
    10) Диск может достигать очень высокой последовательной скорости чтения или записи в файл
    при условии отсутствия конкурирующих записей в данный момент. Этим пользуются в БД
    для журналирования событий.

    В принципе если современный программист просто будет использовать только оперативную память
    то никто ему не сможет ударить по рукам или подойти с какой-то метрикой и чего-то там измерив
    сказать что он неправ. Тут уж только падения по OOM и потери информации и performance issues
    могут быть каким-то значимым аргументом.
    Ответ написан
    3 комментария
  • Как называется стандартная форма для MacOS?

    Ключевое слово: Cocoa
    https://stackoverflow.com/questions/30269329/creat...

    Но если это не самоцель, то лучше смотри на SwiftUI и на всякие кроссплатформенные фреймворки.
    Ответ написан
    Комментировать
  • Первое предложение о работе, как поступить?

    Steel_Balls
    @Steel_Balls
    0L3QsNGH0LjQvdCw0Lsg0YEgQkFTSUMg0L3QsCDQo9Ca0J3Qpi
    Считай, что тебе сильно повезло. Джуна да ещё и на такой бэкграунд...
    Будешь дураком, если откажешься
    Ответ написан
    Комментировать
  • Как сделать, что клиенту прилетал актуальный PDF-файл?

    Adamos
    @Adamos
    Выставить настройки кэша в заголовках ответа, отдающего файл.
    Для особо упертых браузеров, которые могут класть на эти заголовки (вроде Хрома) - отдавать файл каждый раз по другой ссылке (добавив ?ver=mtime, например).
    Ответ написан
    1 комментарий
  • Какой курс по тестированию ПО будет лучшим для человека, который учится с нуля?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Подскажите какую-нибудь книжку или бесплатный курс, где нет ничего сложного и лишнего, чтобы с полного нуля научиться диагностировать болезни и пойти работать врачом-диагностом начинающим.
    Ответ написан
    Комментировать
  • Как отправлять проект заказчику?

    @vitaly_il1
    DevOps Consulting
    В 90% случаев - private репозиторий в GitHub с README.
    Если заказчик совсем нетехнический - договариваться заранее и подробно что он хочет получить в результате проекта.
    Ответ написан
    3 комментария
  • Как подготовить интернет-магазин к боевому старту?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Давайте обратимся к классикам, например применим метод Ферми для оценки топа посещаемости ресурса. Естественно все приведенные цифры с некоторой погрешностью...

    Пусть в регионе проживает 1КК людей, из которых 20% это несовершеннолетние, 20% это люди пожилого возраста, то есть 2 категории, которые с огромной долей вероятности сервисом пользоваться не будут. Так же, можно сразу выкинуть 15% проживающих за чертой бедности, и еще примерно столько же (15%) находящихся в граничном с бедностью состоянии.

    Из оставшихся 30% (300К)охват рекламой/слухами может составить около 50% в столице, и 30% в области, пусть будет 40% общего охвата, хотя это скорее всего завышенный показатель. То есть в остатке потенциальных знающих о вашем сайте около 130К, причем это цифра не на старте, а примерно спустя пол года-год.

    Предположим что магазин имеет не нишевую специализацию, а достаточно широкий ассортимент, заинтересующий 70% от потенциальных ознакомившихся с ним людей (это оооочень оптимистично, но допустим). Из них 30% "отложат на потом" посещение ресурса, и больше о нем не вспомнят, или зайдут 1-2 раза, что на общую статистику не влияет. В сухом остатке имеем около 40-70К потенциальных посетителей. Предположим, что прошло пол года, и все они равномерно росли до этой цифры, и посещали магазин ну пусть 3 раза в месяц.

    В итоге в месяц будет 70к*3 = 210К визитов, визит примерно из 5-7 страниц, итого = 6*210К = 1 260 000 хитов в месяц.
    Делим на 30 дней = 42 000. делим на 12 активных часов, получаем 3500 хитов в час, 58 хитов в минуту, то есть 1 хит в секунду. В пике пусть будет 6 рпс.

    Вывод: слабенький церлерон и винт на 7200 rpm вполне справится с вашей мегаубервафлей...

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

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Ни кто не запрещает Gmail-у вести свой список SPAM-отправителей, угу. Вполне возможно, верно? И как-то вы в нём оказались. Кстати, есть у Google свой список проверенных серверов, google identification. Где-то в панелях Google можно этот identification получить, в DNS записях MX-а прописать.
    Ответ написан
    Комментировать
  • Почему письма с моего почтового сервера попадают в спам у Gmail?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    IP в спам-базах нет

    вот тут ошибка

    BL баз штук 50
    Ответ написан
    Комментировать
  • Как пользоваться библоотекой FfiTdLib?

    @Sellisent
    <?php
    
    require_once 'vendor/autoload.php';
    
    use FFI\TDLib\TDLib;
    
    // Создаем экземпляр класса FFITdLib
    $tdlib = new TDLib();
    
    // Устанавливаем параметры для авторизации
    $api_id = 'YOUR_API_ID';
    $api_hash = 'YOUR_API_HASH';
    $phone_number = 'YOUR_PHONE_NUMBER';
    
    // Выполняем авторизацию
    $tdlib->send([
        '@type' => 'setTdlibParameters',
        'parameters' => [
            'api_id' => $api_id,
            'api_hash' => $api_hash,
            'use_test_dc' => false,
            'database_directory' => 'tdlib-db',
            'files_directory' => 'tdlib-files',
            'use_file_database' => false,
            'use_chat_info_database' => false,
            'use_message_database' => false,
            'use_secret_chats' => false,
            'api_key' => '',
            'system_language_code' => 'en',
            'device_model' => 'unknown',
            'system_version' => 'unknown',
            'application_version' => '1.0',
            'enable_storage_optimizer' => true,
            'ignore_file_names' => false,
        ],
    ]);
    
    $tdlib->send([
        '@type' => 'checkDatabaseEncryptionKey',
        'key' => '',
    ]);
    
    $tdlib->send([
        '@type' => 'setAuthenticationPhoneNumber',
        'phone_number' => $phone_number,
    ]);
    
    // Получаем код авторизации
    $code = readline('Enter the code: ');
    
    $tdlib->send([
        '@type' => 'checkAuthenticationCode',
        'code' => $code,
    ]);
    
    // Выполняем запрос getChatStatistics
    $chat_id = 'CHAT_ID';
    $result = $tdlib->send([
        '@type' => 'getChatStatistics',
        'chat_id' => $chat_id,
        'is_dark' => false,
    ]);
    
    print_r($result);
    Ответ написан
    1 комментарий
  • Какие минимальные знания С++ должны быть, чтобы начать изучать Unreal Engine 5?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Что мне стоит делать дальше?

    Изучать обе параллельно.

    какие минимальные знания С++ должны быть, чтобы начать изучать Unreal Engine 5

    Понимание синтаксиса и способность читать документацию.
    Ответ написан
    Комментировать