Сравнение времени выполнения вложенных циклов для различных языков программирования.
Исходники для всех языков - https://github.com/bddicken/languages/tree/main/loops
Исходники для всех языков - https://github.com/bddicken/languages/tree/main/loops
😱20😁9😭4👎3👏1
В руководство по языку Python добавил статью про функцию zip
https://metanit.com/python/tutorial/3.9.php
#python
https://metanit.com/python/tutorial/3.9.php
#python
👍8🔥2😱2🤮2👏1🎉1
Microsoft выпустила новое предупреждение для пользователей Windows, которые хотят установить браузер Google Chrome, призывая их пользоваться более безопасным способом просмотра веб-страниц и предлагая Edge в качестве безопасной альтернативы.
Теперь при попытке установить браузер Chrome появляется сообщение:
«Microsoft Edge работает на той же технологии, что и Chrome, но при этом пользуется доверием Microsoft».
https://wccftech.com/microsoft-issues-bold-warning-stop-using-google-chrome-on-windows-and-switch-to-edge/
PS. На месте Microsoft я бы не был уверен, что доверие Microsoft - это плюс.
Теперь при попытке установить браузер Chrome появляется сообщение:
«Microsoft Edge работает на той же технологии, что и Chrome, но при этом пользуется доверием Microsoft».
https://wccftech.com/microsoft-issues-bold-warning-stop-using-google-chrome-on-windows-and-switch-to-edge/
PS. На месте Microsoft я бы не был уверен, что доверие Microsoft - это плюс.
😁55🤡13🤣9🤪2😎2😭1
Консольный тетрис на PHP
Под впечатлением от фильма "Тетрис", энтузиаст решил написать эту игру на РНР, чтобы попрактиковаться в работе с терминалом.
Исходник - https://gist.github.com/al3rez/e43f4bc86e50a79fca14529d4f2f2b8c
#php
Под впечатлением от фильма "Тетрис", энтузиаст решил написать эту игру на РНР, чтобы попрактиковаться в работе с терминалом.
Исходник - https://gist.github.com/al3rez/e43f4bc86e50a79fca14529d4f2f2b8c
#php
Gist
I made a 30fps CLI Tetris game in PHP after watching the Tetris movie
I made a 30fps CLI Tetris game in PHP after watching the Tetris movie - tetris.php
👍8😁5😨2🔥1👏1
Предсказуемые обращения к памяти значительно быстрее
Загрузка данных из памяти часто занимает несколько наносекунд. Пока процессор ожидает данные, он может простаивать, не выполняя полезную работу. Аппаратные блоки предварительной выборки современных процессоров предсказывают доступ к памяти, загружая данные в кэш заранее, что оптимизирует производительность. Их эффективность зависит от шаблона обращений: последовательные чтения выигрывают от эффективной предзагрузки, в отличие от случайных запросов.
Для примера на скриншоте приведены 5 примеров доступа к элементам большого массива 32-разрядных целых чисел размером 64 Мбайта (в программе на Go)
1) Последовательный доступ (Seq): считываются каждые 8 элементов подряд.
2) Случайный доступ (Random): считываются каждые 8 элементов в произвольном порядке.
3) Обратный доступ (Backward): считываются каждые 8 элементов с конца массива.
4) Перемежающийся доступ (Interleaved): считываются каждые 8 элементов, начиная с первого, третьего, второго и далее.
5) "Перепрыгивающий" доступ (Bouncing): считываются каждые 8 элементов, начиная с первого, последнего, второго, предпоследнего и так далее.
Можно увидеть, что случайный доступ работает гораздо медленнее, чем остальные варианты, что наглядно демонстрирует, насколько хорошо процессоры умеют предсказывать обращение к данным и что следует учитывать при работе с данными
Загрузка данных из памяти часто занимает несколько наносекунд. Пока процессор ожидает данные, он может простаивать, не выполняя полезную работу. Аппаратные блоки предварительной выборки современных процессоров предсказывают доступ к памяти, загружая данные в кэш заранее, что оптимизирует производительность. Их эффективность зависит от шаблона обращений: последовательные чтения выигрывают от эффективной предзагрузки, в отличие от случайных запросов.
Для примера на скриншоте приведены 5 примеров доступа к элементам большого массива 32-разрядных целых чисел размером 64 Мбайта (в программе на Go)
1) Последовательный доступ (Seq): считываются каждые 8 элементов подряд.
2) Случайный доступ (Random): считываются каждые 8 элементов в произвольном порядке.
3) Обратный доступ (Backward): считываются каждые 8 элементов с конца массива.
4) Перемежающийся доступ (Interleaved): считываются каждые 8 элементов, начиная с первого, третьего, второго и далее.
5) "Перепрыгивающий" доступ (Bouncing): считываются каждые 8 элементов, начиная с первого, последнего, второго, предпоследнего и так далее.
Можно увидеть, что случайный доступ работает гораздо медленнее, чем остальные варианты, что наглядно демонстрирует, насколько хорошо процессоры умеют предсказывать обращение к данным и что следует учитывать при работе с данными
Telegram
METANIT.COM
👍11🤔4🤓1
Схемы маршрутизации
(описание к предыдущему посту)
Broadcast (широковещание)
Использует одноадресную связь, где один отправитель передает пакет всем узлам в сегменте сети. Сеть реплицирует пакет по мере необходимости для достижения каждого устройства в подсети. Часто используется в локальных сетях для таких задач, как запросы ARP или обнаружение DHCP.
Unicast (одноадресная передача)
Использует одноадресную связь между отправителем и одним конкретным получателем. Каждый пакет отправляется непосредственно одному уникальному получателю, идентифицированному по его адресу. Используется в повседневных задачах, таких как посещение веб-сайта или отправка электронной почты одному человеку.
Anycast
Использует одноадресную связь с одним или несколькими получателями. Отправитель отправляет пакет одному получателю, выбранному из группы, которая разделяет один и тот же адрес. Сеть доставляет его ближайшему или наиболее оптимальному узлу на основе стоимости маршрутизации или предпочтений. Используется в DNS и CDN-сервисах для повышения скорости и надежности за счет достижения ближайшего сервера.
Multicast (многоадресная передача)
Использует одноадресную связь с одним или несколькими получателями. Отправитель передает один пакет множеству получателей, которые присоединились к определенной многоадресной группе. Только заинтересованные узлы получают сообщение. Полезно в потоковой передаче (например, IPTV), где только заинтересованные устройства получают данные. Также используется в маршрутных протоколах, таких как OSPF (использует 224.0.0.5 для маршрутизаторов OSPF), EIGRP (использует 224.0.0.10 для всех маршрутизаторов EIGRP), PIM (использует 224.0.0.13 для маршрутизаторов PIM).
(описание к предыдущему посту)
Broadcast (широковещание)
Использует одноадресную связь, где один отправитель передает пакет всем узлам в сегменте сети. Сеть реплицирует пакет по мере необходимости для достижения каждого устройства в подсети. Часто используется в локальных сетях для таких задач, как запросы ARP или обнаружение DHCP.
Unicast (одноадресная передача)
Использует одноадресную связь между отправителем и одним конкретным получателем. Каждый пакет отправляется непосредственно одному уникальному получателю, идентифицированному по его адресу. Используется в повседневных задачах, таких как посещение веб-сайта или отправка электронной почты одному человеку.
Anycast
Использует одноадресную связь с одним или несколькими получателями. Отправитель отправляет пакет одному получателю, выбранному из группы, которая разделяет один и тот же адрес. Сеть доставляет его ближайшему или наиболее оптимальному узлу на основе стоимости маршрутизации или предпочтений. Используется в DNS и CDN-сервисах для повышения скорости и надежности за счет достижения ближайшего сервера.
Multicast (многоадресная передача)
Использует одноадресную связь с одним или несколькими получателями. Отправитель передает один пакет множеству получателей, которые присоединились к определенной многоадресной группе. Только заинтересованные узлы получают сообщение. Полезно в потоковой передаче (например, IPTV), где только заинтересованные устройства получают данные. Также используется в маршрутных протоколах, таких как OSPF (использует 224.0.0.5 для маршрутизаторов OSPF), EIGRP (использует 224.0.0.10 для всех маршрутизаторов EIGRP), PIM (использует 224.0.0.13 для маршрутизаторов PIM).
Telegram
METANIT.COM
Схемы маршрутизации
👍8🔥4❤3
This media is not supported in your browser
VIEW IN TELEGRAM
Дерево процессов в Windows, запускаемых при старте системы #windows
✍29👍11🔥6❤3🙏1🫡1
В руководство по языку Python добавлена статья про Модуль pdb и отладку программы
https://metanit.com/python/tutorial/6.11.php
#python
https://metanit.com/python/tutorial/6.11.php
#python
🔥7😐4👀2❤1❤🔥1👍1👏1🤮1🥱1
Основные типы серверов
(описание к предыдущему посту)
Веб-сервер
- Хостинг и обслуживание веб-страниц и веб-приложений для клиентов.
- Обрабатывает HTTP-запросы от веб-браузеров и доставляет HTML-контент.
- Поддерживает различные технологии, такие как PHP, ASP.NET или Node.js.
- Предоставляет меры безопасности, такие как SSL-сертификаты для зашифрованной связи.
Почтовый сервер
- Обеспечивает отправку, получение и хранение электронных сообщений.
- Использует протоколы, такие как SMTP, POP3 или IMAP для обработки передачи электронной почты.
- Хранит электронные письма в пользовательских почтовых ящиках и позволяет доступ через почтовые клиенты или веб-интерфейсы.
- Реализует функции фильтрации спама, антивирусного сканирования и механизмов аутентификации для безопасности электронной почты.
Сервер баз данных
- Управляет и хранит структурированные данные, обеспечивая эффективное извлечение и управление данными.
- Поддерживает языки запросов, такие как SQL для управления и извлечения данных.
- Предоставляет функции, такие как целостность данных, управление транзакциями и контроль доступа.
- Предлагает опции масштабирования для обработки больших объемов данных и одновременных подключений.
DNS-сервер
- Преобразует доменные имена (например, www.example.com) в IP-адреса (например, 192.168.1.1).
- Обрабатывает запросы от клиентов, направляя их на соответствующий IP-адрес.
- Реализует кэширование для улучшения времени отклика на запросы и снижения сетевого трафика.
- Поддерживает передачу зон между DNS-серверами для синхронизации и распределения записей доменов.
Файловый сервер
- Централизованное хранение и управление файлами для файловых серверов в сети.
- Позволяет клиентам получать доступ к общим файлам и папкам через сетевое соединение.
- Реализует контроль доступа для обеспечения разрешений и поддержания безопасности.
- Поддерживает функции, такие как блокировка файлов, версия файлов и резервное копирование для обеспечения целостности данных.
FTP-сервер
- Обеспечивает передачу файлов между клиентом и сервером с использованием протокола передачи файлов (FTP).
- Предоставляет аутентификацию пользователей и контроль доступа для безопасной передачи файлов.
- Поддерживает загрузку, скачивание и управление файлами и папками.
- Может использоваться для публичного распространения файлов или как частный репозиторий файлов.
DHCP-сервер
- Протокол динамической конфигурации хоста (DHCP) позволяет устройствам в сети автоматически получать ключевые сетевые настройки, такие как IP-адрес, маска подсети, шлюз по умолчанию и информация о DNS-сервере, без необходимости ручной настройки этих параметров.
(описание к предыдущему посту)
Веб-сервер
- Хостинг и обслуживание веб-страниц и веб-приложений для клиентов.
- Обрабатывает HTTP-запросы от веб-браузеров и доставляет HTML-контент.
- Поддерживает различные технологии, такие как PHP, ASP.NET или Node.js.
- Предоставляет меры безопасности, такие как SSL-сертификаты для зашифрованной связи.
Почтовый сервер
- Обеспечивает отправку, получение и хранение электронных сообщений.
- Использует протоколы, такие как SMTP, POP3 или IMAP для обработки передачи электронной почты.
- Хранит электронные письма в пользовательских почтовых ящиках и позволяет доступ через почтовые клиенты или веб-интерфейсы.
- Реализует функции фильтрации спама, антивирусного сканирования и механизмов аутентификации для безопасности электронной почты.
Сервер баз данных
- Управляет и хранит структурированные данные, обеспечивая эффективное извлечение и управление данными.
- Поддерживает языки запросов, такие как SQL для управления и извлечения данных.
- Предоставляет функции, такие как целостность данных, управление транзакциями и контроль доступа.
- Предлагает опции масштабирования для обработки больших объемов данных и одновременных подключений.
DNS-сервер
- Преобразует доменные имена (например, www.example.com) в IP-адреса (например, 192.168.1.1).
- Обрабатывает запросы от клиентов, направляя их на соответствующий IP-адрес.
- Реализует кэширование для улучшения времени отклика на запросы и снижения сетевого трафика.
- Поддерживает передачу зон между DNS-серверами для синхронизации и распределения записей доменов.
Файловый сервер
- Централизованное хранение и управление файлами для файловых серверов в сети.
- Позволяет клиентам получать доступ к общим файлам и папкам через сетевое соединение.
- Реализует контроль доступа для обеспечения разрешений и поддержания безопасности.
- Поддерживает функции, такие как блокировка файлов, версия файлов и резервное копирование для обеспечения целостности данных.
FTP-сервер
- Обеспечивает передачу файлов между клиентом и сервером с использованием протокола передачи файлов (FTP).
- Предоставляет аутентификацию пользователей и контроль доступа для безопасной передачи файлов.
- Поддерживает загрузку, скачивание и управление файлами и папками.
- Может использоваться для публичного распространения файлов или как частный репозиторий файлов.
DHCP-сервер
- Протокол динамической конфигурации хоста (DHCP) позволяет устройствам в сети автоматически получать ключевые сетевые настройки, такие как IP-адрес, маска подсети, шлюз по умолчанию и информация о DNS-сервере, без необходимости ручной настройки этих параметров.
Telegram
METANIT.COM
Основные типы серверов
(описание в следующем посте)
(описание в следующем посте)
🔥12❤🔥5🤔4❤1
Рубрика "Цитаты известных людей"
"Most good programmers do programming not because they expect to get paid or get adulation by the public? but because it is fun to program.""
"Большинство хороших программистов занимаются программированием не потому, что ожидают оплаты или признания публики, а потому что это доставляет удовольствие."
Линус Торвальдс
"Most good programmers do programming not because they expect to get paid or get adulation by the public? but because it is fun to program.""
"Большинство хороших программистов занимаются программированием не потому, что ожидают оплаты или признания публики, а потому что это доставляет удовольствие."
Линус Торвальдс
👍47💯11❤6🤔4🤓4🤡2🖕1
Создатели менеджера Max отрицают постоянное использование камеры на компьютере
В команде мессенджера Max опровергли появившиеся в соцсетях сообщения о том, что приложение использует камеру на компьютере в постоянном режиме. Пресс-служба сервиса заявила, что камера пользователя активируется только при запуске отдельных функций вроде видеозвонка.
«Без активного действия пользователя приложение не запрашивает доступа к камере,— заявили в пресс-службе ТАСС, — и не использует ее».
Ранее в сети стали распространяться утверждения о том, что Max подключается к камере компьютера каждые 5-10 минут, даже если пользователь не использует сервис.
https://www.kommersant.ru/doc/7972892
В команде мессенджера Max опровергли появившиеся в соцсетях сообщения о том, что приложение использует камеру на компьютере в постоянном режиме. Пресс-служба сервиса заявила, что камера пользователя активируется только при запуске отдельных функций вроде видеозвонка.
«Без активного действия пользователя приложение не запрашивает доступа к камере,— заявили в пресс-службе ТАСС, — и не использует ее».
Ранее в сети стали распространяться утверждения о том, что Max подключается к камере компьютера каждые 5-10 минут, даже если пользователь не использует сервис.
https://www.kommersant.ru/doc/7972892
Коммерсантъ
Пресс-служба Max опровергла постоянное использование камеры на компьютере
Подробнее на сайте
😁33🤡24🙊4🥰1
Обновление Windows 11 уничтожает накопители SSD на аппаратном уровне
Сообщается, что последнее обновление Windows 11 (KB5063878 ) приводит к тому, что SSD-накопители перестают работать после записи большого объёма данных, и, по всей видимости, это затронуло несколько накопителей.
В подробном исследовании выяснилось, что после обновления безопасности KB5063878 для Windows 11, вышедшего несколько дней назад, накопители, как сообщается, выходят из строя при одновременной записи на них больших файлов. Пользователь сам заметил проблему, когда обновлял Cyberpunk 2077 с помощью нового обновления безопасности.
Важно отметить, что эти данные были получены в результате внутреннего тестирования и бенчмаркинга, и ни производители SSD, ни Microsoft не подтвердили наличие проблемы с SSD, поскольку она появилась недавно, в связи с последними обновлениями безопасности.
Утверждается, что проблемы с SSD могут возникнуть при непрерывной записи около 50 ГБ данных, и аналогичные проблемы наблюдаются и с жёсткими дисками, поэтому проблема касается не только одного накопителя.
После длительной записи данных ОС не распознаёт SSD, и при перезагрузке компьютера раздел диска становится недоступным. Уязвимые SSD основаны практически на всех основных контроллерах, таких как SMI, Innogrit, Samsung, Phison и WD.
Ниже перечислены SSD-накопители, которые, как сообщалось, столкнулись с этой проблемой после установки последних обновлений безопасности:
Corsair Force MP600
SSD-накопитель Phison PS5012-E12 с контроллером
KIOXIA EXCERIA PLUS G4
Fikwot FN955
SSD с контроллером InnoGrit
SSD Maxio
SSD KIOXIA M.2
SSD SanDisk Extreme PRO M.2 NVMe 3D SSD
https://wccftech.com/windows-11-latest-update-is-reportedly-causing-widespread-ssd-failures/
Сообщается, что последнее обновление Windows 11 (KB5063878 ) приводит к тому, что SSD-накопители перестают работать после записи большого объёма данных, и, по всей видимости, это затронуло несколько накопителей.
В подробном исследовании выяснилось, что после обновления безопасности KB5063878 для Windows 11, вышедшего несколько дней назад, накопители, как сообщается, выходят из строя при одновременной записи на них больших файлов. Пользователь сам заметил проблему, когда обновлял Cyberpunk 2077 с помощью нового обновления безопасности.
Важно отметить, что эти данные были получены в результате внутреннего тестирования и бенчмаркинга, и ни производители SSD, ни Microsoft не подтвердили наличие проблемы с SSD, поскольку она появилась недавно, в связи с последними обновлениями безопасности.
Утверждается, что проблемы с SSD могут возникнуть при непрерывной записи около 50 ГБ данных, и аналогичные проблемы наблюдаются и с жёсткими дисками, поэтому проблема касается не только одного накопителя.
После длительной записи данных ОС не распознаёт SSD, и при перезагрузке компьютера раздел диска становится недоступным. Уязвимые SSD основаны практически на всех основных контроллерах, таких как SMI, Innogrit, Samsung, Phison и WD.
Ниже перечислены SSD-накопители, которые, как сообщалось, столкнулись с этой проблемой после установки последних обновлений безопасности:
Corsair Force MP600
SSD-накопитель Phison PS5012-E12 с контроллером
KIOXIA EXCERIA PLUS G4
Fikwot FN955
SSD с контроллером InnoGrit
SSD Maxio
SSD KIOXIA M.2
SSD SanDisk Extreme PRO M.2 NVMe 3D SSD
https://wccftech.com/windows-11-latest-update-is-reportedly-causing-widespread-ssd-failures/
Wccftech
Windows 11’s Latest Security Update Is Reportedly Causing Several SSD Failures When Writing a Large Number of Files at Once
It is now reported that the latest Windows 11 update is causing SSDs to become non-functional after a large data write.
😁16🤡10👏7🤯6🔥4🤔3❤1🤩1
Добавил мобильную версию руководства по языку SQL и работе с базами данных на примере SQL Server
https://www.rustore.ru/catalog/app/com.metanit.sql_tutorial
#sql #database
https://www.rustore.ru/catalog/app/com.metanit.sql_tutorial
#sql #database
🔥16🤮3❤2🥰1👏1
8 ошибок в командах Linux, которые постоянно допускают разработчики
1. Пробелы имеют значение
В отличие от некоторых операционных систем, в Linux пробелы в именах файлов и путях необходимо правильно экранировать или заключать в кавычки.
Забывание этого приводит к ошибкам «файл не найден» и путанице.
Пример:
Правильно будет:
2. Чувствительность к регистру
Linux чувствителен к регистру символов.
Файл 'myfile.txt' отличается от 'MyFile.txt'.
Автодополнение (tab) может помочь избежать ошибок, но главное — внимательность.
3. Скрытые файлы
Файлы и каталоги, начинающиеся с точки (.), по умолчанию скрыты.
Используйте команду 'ls -a', чтобы увидеть их. Будьте осторожны при работе с ними — они могут содержать важные настройки.
4. rm -rf
Рекурсивное принудительное удаление.
Хотя эта команда необходима для очистки, опечатка при использовании в неправильном каталоге может привести к катастрофическим последствиям.
Всегда дважды проверяйте целевые объекты перед выполнением.
5. Перенаправление вывода
Символ '>' перезаписывает существующий файл.
Символ '>>' добавляет данные в конец файла.
Использование '>' вместо '>>' может привести к потере данных.
Для предотвращения случайного перезаписи используйте режим 'noclobber' (команда 'set -o noclobber').
6. Команды cp и mv без флага -i
Эти команды молча перезаписывают существующие файлы.
Используйте флаг '-i' для интерактивного запроса подтверждения или '-n', чтобы никогда не перезаписывать файлы.
7. chmod и восьмеричные права доступа
Помните, что 'chmod 755' отличается от 'chmod +755'.
Первая команда устанавливает абсолютные права, вторая — модифицирует существующие.
Знайте значения восьмеричных прав доступа!
8. Фоновые задания и nohup
Фоновые задания (с использованием '&') завершаются при завершении сеанса оболочки.
Для длительных процессов, которые должны работать постоянно, используйте 'nohup' или инструменты управления заданиями, такие как 'screen' или 'tmux'.
#linux
1. Пробелы имеют значение
В отличие от некоторых операционных систем, в Linux пробелы в именах файлов и путях необходимо правильно экранировать или заключать в кавычки.
Забывание этого приводит к ошибкам «файл не найден» и путанице.
Пример:
cd My Documents ❌
Правильно будет:
cd 'My Documents' ✅
или
cd My\ Documents ✅
2. Чувствительность к регистру
Linux чувствителен к регистру символов.
Файл 'myfile.txt' отличается от 'MyFile.txt'.
Автодополнение (tab) может помочь избежать ошибок, но главное — внимательность.
3. Скрытые файлы
Файлы и каталоги, начинающиеся с точки (.), по умолчанию скрыты.
Используйте команду 'ls -a', чтобы увидеть их. Будьте осторожны при работе с ними — они могут содержать важные настройки.
4. rm -rf
Рекурсивное принудительное удаление.
Хотя эта команда необходима для очистки, опечатка при использовании в неправильном каталоге может привести к катастрофическим последствиям.
Всегда дважды проверяйте целевые объекты перед выполнением.
5. Перенаправление вывода
Символ '>' перезаписывает существующий файл.
Символ '>>' добавляет данные в конец файла.
Использование '>' вместо '>>' может привести к потере данных.
Для предотвращения случайного перезаписи используйте режим 'noclobber' (команда 'set -o noclobber').
6. Команды cp и mv без флага -i
Эти команды молча перезаписывают существующие файлы.
Используйте флаг '-i' для интерактивного запроса подтверждения или '-n', чтобы никогда не перезаписывать файлы.
7. chmod и восьмеричные права доступа
Помните, что 'chmod 755' отличается от 'chmod +755'.
Первая команда устанавливает абсолютные права, вторая — модифицирует существующие.
Знайте значения восьмеричных прав доступа!
8. Фоновые задания и nohup
Фоновые задания (с использованием '&') завершаются при завершении сеанса оболочки.
Для длительных процессов, которые должны работать постоянно, используйте 'nohup' или инструменты управления заданиями, такие как 'screen' или 'tmux'.
#linux
❤19👍5👏2😁2🤔1