Леонид Павлов. "It specialist's tricks"
14 subscribers
77 photos
7 videos
5 files
59 links
Keep calm, no spam.
Download Telegram
# L1, L2, L3 кэш процессора

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

Кэш процессора представляет собой промежуточную память, которая служит буфером между процессором и основной памятью компьютера. Он предназначен для хранения часто используемых данных и инструкций, что позволяет сократить время их доступа и увеличить общую производительность системы. Современные процессоры обычно имеют несколько уровней кэша: L1, L2 и L3, каждый из которых имеет свою специфику и предназначение.

L1 кэш - это самый быстрый и ближайший к процессору уровень кэша. Он используется для хранения данных и инструкций, к которым процессор обращается наиболее часто. Размер L1 кэша обычно составляет от 32 до 256 КБ и он разделен на две части: данные и инструкции.

L2 кэш - служит для хранения данных, к которым часто обращается процессор, но которые не находятся в L1 кэше. Этот уровень кэша находится на том же кристалле процессора, что и L1 кэш, и имеет размер от 256 до 512 КБ.

L3 кэш - является самым медленным уровнем кэша, но и самым большим. Он обычно располагается на другом кристалле, чем L1 и L2 кэши, и может иметь размер от 1 до 64 МБ. Этот кэш используется для хранения данных, которые нужны многим ядрам процессора одновременно, и позволяет увеличить общую пропускную способность системы.
# Node.js и многопоточность

Одной из основных проблем многопоточного программирования в Node.js является отсутствие истинной многопоточности. Вместо этого Node.js использует модель “event loop” (цикл событий), которая позволяет выполнять только один поток кода за раз. Это может привести к снижению производительности, особенно при выполнении длительных операций.

Event loop - это основной рабочий цикл в Node.js, который обрабатывает все входящие события и выполняет JavaScript-код. Он работает в одном потоке и не может быть заблокирован, чтобы не остановить обработку других событий.

Асинхронные операции в JavaScript работают с использованием event loop. Когда вы вызываете асинхронную функцию, она не блокируется и возвращает результат сразу же, а затем добавляет задачу в очередь для выполнения в будущем. Затем event loop продолжает обрабатывать другие задачи, пока не дойдет до асинхронной операции и не выполнит ее.

Async/await не является истинной многопоточностью, так как JavaScript по-прежнему является однопоточным языком. Однако, использование async/await позволяет писать код более читаемым и удобным для понимания образом, имитируя многопоточность.
# C# и многопоточность

C# - язык программирования с поддержкой многопоточности, позволяющий выполнять несколько потоков кода одновременно. Это обеспечивает более высокую производительность приложений и позволяет выполнять несколько задач параллельно.

Пул потоков - коллекция готовых к выполнению потоков, доступных для использования в приложении. Пул позволяет оптимизировать использование ресурсов, сокращая время на создание новых потоков и освобождая ресурсы после их выполнения.

Использование пула потоков включает использование класса ThreadPool, а также вызов метода QueueUserWorkItem для использования ресурсов потоков.

ThreadPool.QueueUserWorkItem(Work, null);

Продвинутое использование пула потоков, должно включать использование WaitCallback. Это делегат, передаваемый в метод, который будет выполнен в отдельном потоке, когда найдется свободный, для выполнения инструкций, поток.

WaitCallback callback = new WaitCallback(Work);
ThreadPool.QueueUserWorkItem(callback, null);
# async/await foreach

await foreach - это новый функционал, добавленный в C# 8.0, который позволяет асинхронно перебирать элементы коллекции, ожидая завершение асинхронных операций на каждой итерации.

Синтаксис await foreach выглядит следующим образом...

Читать далее...

https://wiki.lpavlov.site/en/CSharp/await_foreach
Решил интересную кату/задачу по проектированию FSM.
Отличная проверка архитектурного мышления.

Сама задача -> https://www.codewars.com/kata/54acc128329e634e9a000362

Мое решение -> https://www.codewars.com/kata/reviews/5d7c35e601af060001599d37/groups/654a88f4becce60001e47304

Что такое FSM (Finite State Machine) -> https://wiki.lpavlov.site/en/Концепты/FiniteStateMachine

#kata #задача #архитектура
Отличная задача на тренировку работы со строками, символами и индексами.

"Шифр Rail Fence используется для кодирования строки путем размещения символов по диагонали вдоль направляющих."

Например фраза It specialist's tricks by Leonid Pavlov с некоторой глубиной шифрования будет выглядеть так:
- depth 2: I pcaitstik yLoi alvtseils' rcsb endPvo
- depth 10: Iiltrcvo tkavs sPps e'bdctyiis naiLole
- depth 20: Ivto lsvpaePc idailniosetL' sy bt rsikc

Сама задача -> https://www.codewars.com/kata/58c5577d61aefcf3ff000081

Мое решение -> https://www.codewars.com/kata/reviews/5d712e8b19977500018f09f5/groups/654d0e3063e3da0001a39674

#kata #задача #строки #индексы
Знаете, какой будильник ставит себе ПМ, чтобы проснуться хоть в 4 утра?
Отложку на 04:01 с раскаткой релиза на прод, где точно есть критичный баг.

#fun_minute
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
# Weekend coding
Написал тут для себя приложение для смарт-часов, для работы по 🍅 Pomodoro подходу.

🏳️ Статья с процессом и демонстрацией промежуточных результатов: -> https://wiki.lpavlov.site/en/Kotlin/Guides/PomodoroApp

💻 Исходники: -> https://github.com/Zefirrat/PomodoroWatch/blob/master/README.md

язык в копилочку (🖼️Kotlin)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
Один из моих ответов догнал принятый ответ, по баллам.
Еще и под конец года держусь в топ 20% пользователей.
Неплохо!
🔥1
Привет! Я представляю вам свой горячий проект – умный Telegram-бот, основанный на передовой технологии GPT! 🌐

🚀 Молниеносные Ответы: Получайте мгновенные и точные ответы на ваши вопросы.
📚 Генерация Текстов: Создавайте уникальные и качественные тексты в один миг.
🌐 Многофункциональность: Будь то помощник в учебе, генератор идей или просто компаньон в разговоре – мой бот всегда рядом.
🤖 Технология GPT: Мой бот основан на передовой технологии GPT, гарантируя выдающуюся точность и контекстность.
🌟 Легкость Использования: Без сложных шагов или капч – просто отправьте запрос и получайте результат!

Присоединяйтесь к моему боту и откройте для себя новые горизонты текстового взаимодействия! 💬🚀

Напишите "Привет", чтобы начать! 🌟

https://t.me/TextCraftGptBot

PS. Да, это сообщение написано с помощью бота. Налетай, пока бесплатно!
🔥3
В новой версии магазина приложений Microsoft Store для Windows 10 и Windows 11 команда разработчиков Microsoft перешла с React на Shoelace, Lit и Vite на ASP.NET, заменив ими предыдущие технологии. Это изменение коснулось фронтенда и серверной части приложения.

В комментариях к одной из статей на Хабре пользователи обсуждают преимущества связки Vite и ASP.NET Core. Предполагают, что это может быть хорошим решением.
👍1🤯1
Boilerplate код — это повторяющиеся фрагменты программного кода, которые обычно используются в начале или в конце различных частей программы. Boilerplate код может включать в себя различные стандартные процедуры, такие как инициализация переменных, обработка ошибок, вывод на экран и другие.

Вот несколько примеров boilerplate кода:

- Инициализация переменных:
int x = 0;

x = 0


- Обработка ошибок:
try {
// код
} catch (error) {
console.log(error);
}

try {
// код
} catch (Exception e) {
System.out.println(e);
}


- Вывод на экран:
print("Hello, world!")

console.log("Hello, World!");
Не думал, что бэк может билдится дольше фронта, но когда нужно сделать билд под windows - все меняется...
Shebang — это последовательность символов, которая используется в Unix-подобных операционных системах для обозначения начала исполняемого файла. Она состоит из двух символов: #!, за которыми следует имя программы.
Например для shell:
- #!/bin/sh
- #!/bin/bash

Shebang позволяет операционной системе найти и запустить программу без указания полного пути к ней.
🔍 Давайте поможем людям найти кнопку скачивания, в 🌐 Internet Explorer
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
# Что такое ARM64 и AMD64, и чем они отличаются?

ARM64 и AMD64, также известные как Aarch64: ARM architecture, 64-bit и AMD64: EM64T, x86_64 — это архитектуры процессоров.

ARM64 (Aarch64) — 64‑битная архитектура, разработанная компанией ARM Limited. Она используется в процессорах мобильных устройств, серверов, суперкомпьютеров и других вычислительных систем.

Процессоры с архитектурой ARM64/Aarch64:
* обеспечивают более высокую производительность и эффективность по сравнению с 32-битными процессорами;
* поддерживают больший объём оперативной памяти;
* могут работать с 64-битными приложениями и операционной системой.

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

x86–64, AMD64 или EM64T, или x86_64 - 64-х битная версия архитектуры x86, используемая в процессорах Intel и AMD. Она обеспечивает поддержку 64 бит и позволяет использовать более 4 ГБ оперативной памяти на каждом ядре процессора.

Процессоры x86_64 используются для выполнения 64 битных инструкций. Они также могут выполнять 32 битные инструкции, но это не рекомендуется, так как это может привести к снижению производительности и безопасности.

Процессоры x86_64, в отличие от процессоров ARM64, используют другой набор инструкций и имеют другую архитектуру. Процессоры ARM64 и x86_64 не являются взаимозаменяемыми, и программы, написанные для одного типа процессора, не всегда могут быть выполнены на другом типе процессора.
В последнее время часто наблюдаю, как молодые разработчики сталкиваются с проблемами запуска, казалось бы рабочих, проектов, начатых до 2020 года.

Например:

Есть кроссплатформенный сервис, он себе прекрасно работает и живет, где-нибудь на windows server, или на старенькой Ubuntu, которую админы поднимали еще в "бородатом" 2015 году. И приходит молодой и энергичный разраб, или РП, и начинает ратовать и активно продвигать самые последние версии всех ОС и библиотек. А-ля "почему вы до сих пор работаете на этом старье?". И вот руководство согласовывает потратить пару часов, на то, чтобы перенести сборку и запуск более менее активных проектов, на новые машины, которые подняли админы, с самой последней (естественно последней long-term support) Ubuntu 22.04. Задача по переносу падает на джуна, т.к. "делов то: файлы сделать Ctrl+C -> Ctrl+V и запустилось!".
Но прошел 1 час, затем 2, 3, 8. Уже и пинговал, и curl проверял, но все время получает странные ошибки, связанные с OpenSSL, GSS и др. И вот уже второй день джун пытается открыть порты, изменить код, устанавливать различные версии СДК, но ничего не получается.

Чтож, все дело в том, что относительно старые проекты, зависят от не очень новых библиотек, или имеют конфигурацию, использующие TLS версии 1.0 и 1.1 - которые были удалены в ubuntu 20.04 и 22.04. Существуют различные способы исправления таких ошибок, например установка, или конфигурирование openssl, на использование легаси провайдеров (openssl md4 -provider legacy), или установка библиотек GSS (sudo apt-get -y install libgss-dev) - всё зависит от стека и окружения сборки.

Мораль сей басни такова:
1) закладывайте x2 часы на подводные камни
2) спрашивайте помощи у старших
3) РАБОТАЕТ - НЕ ТРОГАЙ! xD

Извините, я оставлю тут эти хэштеги для удобства:
#истории #ssl #tls
🤩1
Короче говоря, релизнули Mojo.

Это язык программирования для Data Science, от создателей PyTorch и компаний-лидеров в сфере AI-инфраструктуры, и обещают, что его скорость работы в 35 000 раз быстрее python. Если его будут успешно использовать для обработки данных, то и для обучения нейросетей он тоже должен подойти. Вроде уже доступен в JupyterHub.

Если взглянуть на самые популярные области применения python - обучение ИИ, анализ и работа с данными, веб-разработка, скриптинг и автоматизация - то потенциально, Mojo может отобрать примерно 50% хлеба питонистов. Предполагаю, что на этом фоне и общая популярность Python может снижаться.

Хотя с другой стороны это похоже на C++ и C# в свое время, и возможно один из этих языков станет мейнстримом для молодежи, а другой хардкорный для олдов и супер-гиков.

Но лучше не учить питон сейчас, пока есть такая неопределенность, а уйти в более стабильные и менее хайповые языки.
Совершенно случайно наткнулся на диссертацию из UCI, от доктора философии в области информационных и компьютерных наук Roy T. Fielding.
В ней достаточно краткая выжимка по архитектуре REST,
Могу отметить параграф "5.1.6 Layered System", "5.1.7 Code-On-Demand", "5.3 REST Architectural Views". Достаточно много продвинутой информации, для тех, кому хочется большего, но кто уже устал перебирать статьи про REST, в формате "REST - это POST, GET и др."

#dissertation #uci #rest #architecture
🔥2