tpxek6oa94qqwv3c

Фото

27 Интересных фактов о Linux


Ниже приведён список из 27 интересных фактов о Linux, его создателе Линусе Торвальдсе и о том, какое влияние оказала его «хобби»-операционная система на мир, в котором мы живём.

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

Linux является доминирующей операционной системой в облаке, в сфере Интернета вещей и на мобильных устройствах. И хотя она, возможно, и не «выиграла» войну за настольные компьютеры (пока), нельзя отрицать, что её совместный, свободно распространяемый характер оказал значительное влияние на многих её конкурентов.

Бьющееся сердце современного мира и вездесущая сила, пронизывающая повседневную цифровую жизнь: Linux повсюду. Он используется в высокоскоростных поездах и мощных суперкомпьютерах, а также в смартфонах, космических роботах и сверхзащищённых маршрутизаторах.

Итак, вот список из 27 фактов о Linux, искусно составленный из источников сообщества, интервью с его создателем и общедоступных данных.

27 Фактов о Linux

1. В ядре Linux более 40 миллионов строк кода по состоянию на 2025 год. Это может показаться многовато, но на самом деле это самое маленькое ядро за последнее время! Тем не менее, несмотря на недавние сокращения, огромное количество строк означает, что Linux остается единственным крупнейшим проектом с открытым исходным кодом на планете.

 2. Linux едва не назвали не Linux! Линус хотел назвать свой «хобби-проект» «FreaX» (сочетание слов «free», «freak» и «Unix»). К счастью, его переубедил владелец сервера, на котором размещался его ранний код, который предпочёл название «Linux» (сочетание слов «Linus» и «Unix»).

3. Несмотря на то, что он написал 100% кода для первой версии Linux, менее 1% кода последней версии ядра написан Линусом Торвальдсом. Однако парень не сидит сложа руки: сейчас Линус занят управлением и объединением кода, написанного другими разработчиками.

 

4. Linux используется во всех крупных космических программах в мире, включая НАСА и ЕКА. Его также используют частные космические компании, такие как SpaceX, которая завершила 65 космических миссий (и продолжает их) с помощью отказоустойчивой системы Linux в своих мощных ракетах Falcon 9.

5. Говоря о более широкой вселенной, в настоящие астероиды, названные в честь Linux и Линуса Торвальдса — будь то космический гик или технический, похоже, нам, гикам, нравится держаться вместе!

6. Такс, талисман Linux, — это пингвин,  но вы когда-нибудь задумывались, почему это пингвин? Ответ зависит от того, кого вы спросите: Линус рассказывает историю о том, как его укусил злой пингвин, заразивший его (выдуманной) болезнью под названием «пингвинит». Другие говорят, что выбор пал на пингвина из-за любви Линуса к этому животному и/или из-за его непригодности в качестве корпоративного логотипа.

 

 7. Linux полностью доминирует на суперкомпьютерах.  По состоянию на 2018 год 100% из 500 самых быстрых суперкомпьютеров в мире работают на Linux. Впечатляет!

8. Сообщество разработчиков Linux невероятно активно. Изменения в ядре вносились со средней скоростью 7,8 исправлений в час за последние 15 месяцев, согласно цифрам, собранным людьми из некоммерческой организации The Linux Foundation (которые платят зарплату Линусу).

9. Ранняя разработка Linux велась на основе  операционной системы MINIX, что побудило Линуса использовать для своего молодого проекта файловую систему, аналогичную Minix. Она просуществовала недолго: показав свою неэффективность, Линус позже заменил ее на «расширенную файловую систему», более известную как ext, версии которой используются и по сей день.

 10.  Linux 1.0 был выпущен 14 марта 1994 года , более чем через три года после первоначального заявления Линуса. Он содержал 176 250 строк кода. Версия 2.0 вышла в 1996 году.

11.  Linux работает на от смартфонах и серверах до подводных лодок и космических ракет. В нашем списке из 25 устройств, работающих на Linux, представлены наиболее впечатляющие примеры использования универсального ядра.

12. Стив Джобс предложил Линусу Торвальдсу работу в 2000 году при условии, что он прекратит разработку Linux. Линус (к счастью) отказался.

 

13. Нужны доказательства того, насколько успешен Linux? Взгляните на его давнего главного конкурента, Microsoft. Компания, которая, как известно, пыталась «уничтожить» проект в конце 90-х — начале 2000-х годов, теперь использует Linux в своём серверном бизнесе. Она даже вносит свой вклад в разработку ядра!

14. Если говорить о вкладе, то Google, Intel, Huawei, Samsung, Red Hat, Canonical и Facebook входят в число ведущих разработчиков ядра Linux в последние годы.

15. Линус родился в Финляндии, двуязычной стране, и считает шведский своим «родным языком». Он говорит, что ему часто «неудобно» говорить по-английски из-за различий в произношении, но он предпочитает читать книги на английском.

 

16. Сейчас это, возможно, самый крупный проект свободного программного обеспечения (см. № 1), но когда в 1991 году было выпущено первое ядро, оно состояло из сравнительно небольшого количества строк кода — всего 10 тысяч!

17. После пересмотра графика разработки и выпуска новая версия ядра Linux теперь выходит примерно раз в 66 дней, а в промежутках регулярно появляются новые точечные выпуски.

 18. Linux — не единственное знаменитое творение Линуса Торвальдса . Знаменитый финн также является автором системы контроля версий Git и приложения для подводного плавания «Subsurface».

 

19. Те захватывающие дух спецэффекты, которые вы видите в фильмах-блокбастерах? Что ж, они (отчасти) созданы благодаря Linux. По оценкам, 90% голливудских визуальных эффектов создаются с помощью Linux на каком-то этапе производственного процесса.

20. Согласно данным, полученным с сайта openhub.net, более 95% Linux написано на языке C.

21. Как бы странно это ни звучало, 13,3% новейшего ядра Linux состоит из… пустых строк. Бессмысленно? Едва ли: пустые строки являются частью строгого стиля кодирования, который делает ядро аккуратным, эффективным и упорядоченным.

 

 22. Android — самая успешная операционная система  на планете — без вариантов — с более чем 2 миллиардами активных пользователей в месяц по всему миру, по данным Google. А на чём работает Android? Конечно же, на ядре Linux!

23.  Каждому выпуску ядра присваивается кодовое название.  Среди недавних кодовых названий — «Бесстрашный койот» (v4.13) и «Застенчивый крокодил» (v5.0).

24.  По данным Red Hat, 9 из 10 крупнейших публичных облаков работают на Linux. Они, вероятно, знают, о чём говорят, ведь это одна из самых успешных компаний в истории Linux!

 

25.  Ubuntu — самая популярная в мире настольная операционная система на базе Linux.   По оценкам, у неё 20 миллионов пользователей по всему миру. Доля Linux на рынке оценивается в 2–3% от общего числа настольных компьютеров.

 26. первой книгой, опубликованной о Linux , была "Установка Linux и начало работы" Мэтта Уэлша в 1993 году. Первый специализированный журнал, Linux Journal, был опубликован годом позже, в марте 1994 года. В первом номере было опубликовано интервью с Лайнусом.

27. Linux — самый известный пример программного обеспечения с открытым исходным кодом, но знаете ли вы, что так было не всегда? Ранние версии Linux распространялись с лицензией, запрещающей коммерческое использование или распространение. В 1992 году была выпущена версия 0.12, в которой Линус принял GPL, сделав свой код доступным для всех.

 

Источник:   www.omgubuntu.co.uk

 

 



Фото

Удивительные возможности современного C++


Было время, когда С++ не хватало динамизма, и увлечься этим языком было трудно. Но всё изменилось, когда было принято решение развить стандарт C++. С 2011 года язык стал более динамичным и постоянно развивается. В статье мы рассмотрим некоторые интересные функциональные возможности языка.

Ключевое слово auto

Когда в 11 версии C++ только появилось auto, жизнь стала намного легче.

Идея auto состояла в том, чтобы заставить компилятор C++ определять тип ваших данных во время компиляции, вместо того чтобы заставлять вас каждый раз объявлять тип. Это было удобно, если у вас были типы данных вроде map<string, vector <pair <int, int>>> ?

 

auto an_int = 26;              // при компиляции тип выводится в int
auto a_bool = false;        // в bool
auto a_float = 26.04f;     // в float
auto ptr = &a_float;        // и даже в указатель
auto data;                        // а можно ли так? Вообще-то нельзя.

 

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

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

 

auto merge(auto a, auto b)     // Тип параметров и возвращаемых данных тоже может быть auto!
{
std::vector c = do_something(a, b);
return c;
}
std::vector<int> a = { ... };     // какие-то данные
std::vector<int> b = { ... };    // какие-то данные
auto c = merge(a, b);           // тип определяется возвращаемой информацией!
 
 

В строках 7 и 8 была использована инициализация в скобках. Эта функция также была добавлена в 11 версии C++.

Не забывайте, что в случае использования auto у компилятора должен быть способ определить ваш тип.

Теперь встаёт хороший вопрос, что произойдёт, если мы напишем auto a = {1, 2, 3}? Это ошибка компиляции? Это вектор?

На самом деле, в 11 версии C++ был представлен std::initializer_list<type>. Инициализированный список в скобках будет считаться легковесным контейнером, если объявлен как auto.

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

 

void populate(auto &data) {                                    // видите!
data.insert({"a", {1, 4}});
data.insert({"b", {3, 1}});
data.insert({"c", {2, 3}});
}
 
auto merge(auto data, auto upcoming_data) {     // и не надо писать длинный идентификатор снова
auto result = data;
for (auto it: upcoming_data) {
result.insert(it);
}
return result;
}
 
int main() {
std::map<std::string, std::pair<int, int>> data;
populate(data);
 
std::map<std::string, std::pait<int, int>> upcoming_data;
upcoming_data.insert({"d", {5, 3}});
 
auto final_data = merge(data, upcoming_data);
for (auto itr: final_data) {
auto [v1, v2] = itr.second;                                         // про структурное связывание будет ниже
std::cout << itr.first << " " << v1 << " " << v2 << std::endl;
}
return 0;
}
 

Не забудьте проверить строку 25! Выражение auto [v1, v2] = itr.second — новая функция в 17 версии C++. Это называется структурным связыванием. В предыдущих версиях приходилось извлекать каждую переменную отдельно. Но структурное связывание сделало этот процесс более удобным.

Более того, если вы хотите получить данные, используя ссылку, то просто добавьте символ — auto &[v1, v2] = itr.second.

Лямбда-выражение

В 11 версии C++ появились лямбда-выражения. Это что-то вроде анонимных функций в JavaScript. Они являются безымянными функциональными объектами и захватывают переменные в различных областях на основе некоторого краткого синтаксиса. Они также могут быть присвоены переменным.

Лямбды будут полезны, если вам нужно сделать в коде быстрое и небольшое изменение, и вы не хотите писать для этого отдельную функцию. Другое довольно распространённое использование функции — сравнение.

 

std::vector<std::pair::<int, int>> data = {{1, 3}, {7, 6}, {12, 4}};    // обратите внимание на скобочную инициализацию
std::sort(begin(data), end(data), [ ](auto a, auto b) {                   // auto!
    return a.second < b.second;
});

 

Приведённый выше пример может многое сказать.

Во-первых, обратите внимание, как фигурные скобки упрощают вам жизнь. Затем следуют универсальные begin()end(), которые тоже были добавлены в 11 версии. После идёт лямбда-выражение в качестве компаратора ваших данных. Параметры лямбда-выражения объявлены с помощью auto, что было добавлено в 14 версии С++. До этого auto нельзя было использовать в качестве параметров функции.

Обратите внимание, мы начинаем лямбда-выражение с квадратных скобок [ ]. Они определяют область действия лямбды — сколько у неё полномочий над локальными переменными и объектами.

Как определено в этом потрясающем репозитории по современному C++:

  • [ ] — ничего не захватывает. Таким образом, вы не можете использовать любую локальную переменную внешней области видимости в лямбда-выражении. Вы можете использовать только параметры.
  • [=] — захватывает локальные объекты (локальные переменные, параметры) в области видимости по значению. Вы можете использовать, но не изменять их.
  • [&] — захватывает локальные объекты (локальные переменные, параметры) в области видимости по ссылке. Вы можете изменить их, как в примере, приведённом ниже.
  • [this] — захватывает этот указатель по значению.
  • [a, &b] — захватывает объект a по значению, объект b по ссылке.

Так что, если внутри лямбда-функции вы хотите преобразовать данные в какой-то другой формат, вы можете применить её, воспользовавшись преимуществами области видимости. Например:

 

std::vector<int> data = {2, 4, 4, 1, 1, 3, 9};
int factor = 7;
for_each(begin(data), end(data), [&factor](int &val) {          // захват factor по ссылке
val = val * factor;
factor--;                             // это будет работать, потому что переменная находится в области видимости лямбды
});
for(int val: data) {
std::cout << val << ' ';      // 14 24 20 4 3 6 9
}
 

В приведённом выше примере, если вы захватили локальные переменные по значению ([factor]) в лямбда-выражении, то вы не можете изменить factor в 5 строке. Вы просто не имеете права делать это. Не злоупотребляйте своими правами!

Наконец, обратите внимание, что мы берём переменную val в качестве ссылки. Это гарантирует, что любое изменение внутри лямбда-функции фактически изменяет vector.

Инициализатор в if и switch

Вам точно понравится эта возможность в С++ 17.

 

std::set<int> input = {1, 5, 3, 6};
if(auto it = input.find(7); it == input.end()) {         // первая часть - инициализация, вторая - условие
std::cout << 7 << " not found!" << std::endl;
}
else {
             // it тоже попадает в область видимости else!
std::cout << 7 << " is there!" << std::endl;
}
 
Очевидно, теперь вы можете выполнять инициализацию переменных и проверять условие сразу внутри блоков if или switch. Это поможет сделать код лаконичным и чистым. Общая форма:
 
if (init-statement(x); condition(x)) {
    // какой-то код

else {    // else тоже имеет переменную x в области видимости
    // какой-то другой код
}
 

Компиляция и constexpr

Скажем, у вас есть какое-то выражение для оценки, и его значение не изменится после инициализации. Вы можете предварительно рассчитать значение, а затем использовать его в качестве макроса. Или, как предложил C++ 11, можно использовать constexpr.

Программисты стремятся максимально сократить время выполнения программ. Поэтому если некоторые операции можно отдать на выполнение компилятору, это стоит сделать.

 

constexpr double fib(int n) {     // функция объявлена с помощью constexpr
if(n == 1) return 1;
return fib(n-1) * n;
}
int main()
{
const long long bigval = fib(20);
std::cout << bigval << std::endl;
return 0;
}
 

Приведённый выше код — распространённый пример использования constexpr.

Поскольку мы объявили функцию вычисления Фибоначчи как constexpr, компилятор может предварительно вычислить fib(20) во время компиляции. Так что после неё он может заменить строку с

const long long bigval = fib (20);

на

const long long bigval = 2432902008176640000;

 

Обратите внимание, что переданный аргумент является константным значением. Важный момент: в функциях, объявленных constexpr, передаваемые аргументы также должны быть constexpr или const. В противном случае они будут вести себя как обычные функции, и во время компиляции предварительный расчёт выполняться не будет.

Переменные также могут быть constexpr. В этом случае, как вы можете догадаться, эти переменные должны вычисляться во время компиляции. Иначе вы получите ошибку компиляции.

Интересно, что позже в C++ 17 были представлены constexpr-if и constexpr-lambda.

Кортежи

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

auto user_info = std::make_tuple("M", "Chowdhury", 25); // используем auto, чтобы уменьшить описание типов

                                                                                                    // чтобы получить доступ к данным
std::get<0>(user_info);
std::get<1>(user_info);
std::get<2>(user_info);

// в 11 версии С++ мы использовали tie, чтобы сделать связывание

std::string first_name, last_name, age;
std::tie(first_name, last_name, age) = user_info;

// но в 17 версии стало гораздо удобнее
auto [first_name, last_name, age] = user_info;

 Иногда удобнее использовать std::array вместо кортежа. Такой массив подобен обычному массиву в C вместе с несколькими функциями стандартной библиотеки C++. Эта структура данных была добавлена в 11 версии C++.

 

Вывод типов шаблонных параметров для классов

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

 

std::pair<std::string, int> user = {"M", 25};         // раньше
std::pair user = {"M", 25};                                     // C++ 17

 

В этом примере для первого элемента кортежа будет выведен тип const char *, а не std::string.

Выводимый тип задаётся неявно. Это становится ещё удобнее для кортежей.

 

// раньше
std::tuple<std::string, std::string, int> user ("M", "Chy", 25); 
// C++ 17
std::tuple user2("M", "Chy", 25);

 

Эта функция не имеет никакого смысла, если вы слабо знакомы с шаблонами в C++.

Умные указатели

Указатели могут быть адскими.

Из-за свободы, которую предоставляют такие языки, как C++, иногда становится очень легко выстрелить себе в ногу. И во многих случаях именно указатели ответственны за вред, нанесённый компьютеру.

К счастью, в C++11 появились умные указатели, которые намного удобнее, чем простые. Они помогают программистам предотвращать утечки памяти, освобождая её, когда это возможно. Они также обеспечивают исключительную безопасность.

 

Источник:  tproger.ru

 



Фото

Кастомизация Linux Mint под Windows 11


Кастомизация — это не только способ сделать свою систему более красивой, но и способ сделать её более функциональной. Ты сможешь настроить всё на свой вкус, удалив лишнее и добавив необходимое. Твой компьютер — это твой стиль, так что давай откроем перед тобой этот мир!

Многие при переходе с Windows на Linux теряются в разнообразии и множестве окружений рабочего стола. Некоторым было бы комфортнее осваивать Linux в привычном для себя интерфейсе. Но не секрет, что вид любого дистрибутива Linux можно изменить до неузнаваемости и настроить под свои нужды.

В этой статье, на примере Linux Mint, мы преобразим стандартную cinnamon к привычному интерфейсу пользователей Windows, а именно сделаем её похожей на Windows 11.

Итак, что мы имеем в самом начале:

 

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

В появившемся окошке выбираем вкладку «Загрузка», в поиске пишем «погода» и загружаем одноименный апплет. Там же можно добавить и другие полезные апплеты, выбор большой. Затем выбираем вкладку «Настройка», находим загруженный апплет, выделяем его и в низу нажимаем на «+» (добавить). Теперь апплет погоды добавлен на панель, позже мы переместим его на нужное нам место.

Теперь займемся панелью. Щёлкаем правой кнопкой мышки по панели задач и выбираем пункт «Настройки панели».

 

Значение высоты панели выставляем на 43px. Затем в области «Внешний вид панели» на вкладке «Правая зона» выставляем значения полей «Размер цветной иконки» и «Размер символической иконки (пиксел)» на 16px.

Закрываем окно настройки панели и снова кликаем правой кнопкой мышки по панели задач и ползунком включаем «Режим редактирования панели», что дает нам возможность убрать ненужные нам апплеты, а также перемещать их по своему усмотрению.

Для начала в правой области панели задач по правому клику мышки мы удаляем ненужные нам апплеты (я, например удалил у себя апплет «избранное» и «принтеры», остальные оставил).

Разместим элементы панели задач, так, как они располагались бы в Windows 11. Для этого мышкой перемещаем апплеты «Меню» и «Сгруппированный список окон» в центр панели задач. Слева на панели задач левой кнопкой мышки удаляем оставшиеся апплеты (например, оставшиеся разделители), а апплет «Погода» из правой части панели перетаскиваем в левую.

В правой стороне панели необходимо удалить апплет «Угловая панель», а значок «Уведомления» переместить в самый конец панели задач.

Должно получиться нечто подобное: 

 

Теперь настроим отображаемое время на панели задач, для этого выходим из режима редактирования панели (правой кнопкой мышки по панели задач и отключаем бегунком этот режим) и правой кнопкой кликаем по часам, в открывшемся меню выбираем «настройки».

 

Включаем бегунок «Задать свой формат даты» и в поле «Формат даты» прописываем следуюущие значения: %H:%M:%S%n %H %B %Y

Чтобы отцентровать отображаемое время можно перед первым символом «%» поставить три-четыре пробела.

В поле «Формат даты для всплывающей подсказки прописываем: %A, %B %e, %H:%M

Далее настроим отображение и переключение языка раскладки клавиатуры. Кликаем левой кнопкой мышки на флаг языка и в меню выбираем «Настройки клавиатуры».

В появившемся окне настроек выбираем вкладку «Раскладки» и внизу нажимаем кнопку «Параметры...», там находим пункт «Переключение на другую раскладку» и в открывшемся списке выбираем комбинацию «ALT+SHIFT»

 

 

В Linux Mint наблюдается баг при отображении раскладки клавиатуры в виде флага, когда значение размера значков установлено на 16px: при наведении курсора мышки на флаг он уверичивается в размере и в исходное состояние не возвращается, а так и остаётся увеличенным. Поэтому вместо отображения флага мы сделаем буквенное отображение состояния раскладки клавиатуры, для этого в области «Параметры экрана» выставляем чекбоксы в положение как показанно на скриншоте:

 

(Отключаем чекбокс «Использовать флаг страны...» и включаем два последующих)

Далее настроим отображение значков на рабочем столе. Правой кнопкой кликаем по рабочему столу и выбираем пункт «Настроить». В появившемся окне отключаем бегунок «Авторасположение» и внизу нажимаем «Настройки рабочего стола», где выбираем какие значки мы хотим видеть у себя на рабочем столе.

 

Пришло время для настройки необходимых тем, для того чтобы интерфейс нашего Cinnamon превратился в Windows 11.

Сначала необходимо подготовить необходимые папки в домашнем каталоге. Запускаем приложение «Файлы» и переходим в домашний каталог. Нажимаем комбинацию клавиш Ctrl+H для того чтобы увидеть скрытые папки и файлы. Проверяем имеются ли папки .icons и .themes (должны начинаться с точки), если таких папок нет, то создаем их. В папку .icons мы поместим тему иконок, а в папку .themes тему рабочего стола и отображения окон.

 

- Скачиваем тему иконок с сайта https://www.pling.com/p/1546069 , либо если там тема стала недоступной, то скачать её можно с этого сайта по прямой ссылке — Win11.tar.xzРаспаковываем архив и заходим в папку Win11, там мы обнаружим две папки: Win11 и Win11-dark, которые необходимо скопировать в папку .icons домашнего каталога (~/.icons/).

- Скачиваем тему курсоров с сайта https://www.pling.com/p/2171879/ , либо если там тема стала недоступной, то скачать её можно с этого сайта по прямой ссылке — windows-cursors.tar.gzРаспаковываем архив и папку windows-cursors копируем в папку .icons домашнего каталога (~/.icons/).

- Cкачиваем тему для окон и рабочего стола с сайта - https://www.pling.com/p/2278411/ , либо если там тема стала недоступной, то скачать её можно с этого сайта по прямой ссылке — Win11-round-Light.tar.xzРаспаковываем архив и папку Win11-round-Light копируем в папку .themes домашнего каталога (~/.themes/).

- Cтандартные обои для рабочего стола скачиваем отсюда — win11.jpg и перемещаем скачанный файл win11.jpg в папку Изображения домашней папки (~/Изображения/)

Чтобы не отображать скрытые файлы и папки в домашнем каталоге приложения файлы необходимо в домашней папке снова нажать комбинацию клавиш Ctrl+H.

Приступим к установке тем. Нажимаем кнопку пуск и запускаем параметры системы.

В появившемся окне настроек кликаем по разделу темы.

 

Указатель мыши выбираем — windows-cursors

Приложения выбираем — Win11-round-Light

Значки выбираем — Win11

Рабочий стол выбираем — Win11-round-Light

 

Закрываем окно настроек и изменим значок кнопки Пуск.

Нажимаем правой кнопкой мышки по кнопке Пуск и выбираем настройка…

В появившемся окне в поле значок нажимаем на иконку, затем в поиске пишем «start» и выбираем иконку start-here. Нажимаем кнопку Выбрать и закрываем окно настроек.

Устанавливаем стандартные обои рабочего стола, для этого запускаем приложение Файлы, переходим в папку Изображения и кликаем правой кнопкой мышки по файлу win11.jpg, затем выбираем «Сделать фоном...»

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

Включаем режим редактирования панели, как мы это делали ранее, значок уведомлений должен появиться справ на панели. Кликаем по нему правой кнопкой мыши и выбираем «Настройки...»

В окне настроек включаем пункты «Игнорировать временные уведомления» и «Показывать количество уведомлений».

Нажимаем кнопку «Открыть настройки уведомлений» и включаем пункты «Включить уведомления» и «Показывать уведомления в нижней части экрана».

 

Закрываем окно настроек и выключаем режим редактирования панели.

Вот и всё интерфейс выглядит как Windows 11. Вот что в итоге получилось:

Было:

Стало:

 



Фото

История HTML: от зарождения до современности


HTML (HyperText Markup Language) — это язык разметки, который используется для создания веб-страниц. Его история начинается в конце 1980-х годов...

Тим Бернерс-Ли, британский ученый, работавший в Европейском центре ядерных исследований (CERN), задумался о способе обмена научной информацией между исследователями. 

В то время существовало множество различных систем для обмена данными, но они не были совместимы друг с другом. Это создавало сложности в обмене информацией и замедляло научный прогресс.

Тим Бернерс-Ли предложил создать единый язык разметки, который позволил бы связывать документы через гипертекстовые ссылки. Так появился HTML, который стал основой для Всемирной паутины (World Wide Web). HTML позволил создавать документы, которые могли быть легко доступны и читаемы на любом компьютере, независимо от операционной системы и программного обеспечения. Это был революционный шаг, который открыл новые горизонты для обмена информацией и взаимодействия между людьми по всему миру.

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

HTML 1.0: Первые шаги в веб-разработке

Первая версия HTML, известная как HTML 1.0, была выпущена в 1993 году. Она содержала базовый набор тегов, которые позволяли создавать простые веб-страницы. Основные элементы включали заголовки, абзацы, списки и гиперссылки. Вот пример простой HTML-страницы на основе HTML 1.0:

 
<!DOCTYPE html>
<html>
<head>
    <title>Пример HTML 1.0</title>
</head>
<body>
    <h1>Заголовок 1 уровня</h1>
    <p>Это абзац текста.</p>
    <a href="https://example.com">Пример ссылки</a>
</body>
</html>

 

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

HTML 1.0 также сыграл важную роль в стандартизации веб-технологий. Он установил основные правила и принципы, которые до сих пор используются в веб-разработке. Это позволило разработчикам создавать веб-страницы, которые были совместимы с различными браузерами и платформами, что значительно упростило процесс разработки и поддержки веб-сайтов.

Эволюция HTML: От HTML 2.0 до HTML 4.01

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

HTML 2.0

HTML 2.0 был выпущен в 1995 году и включал в себя все элементы HTML 1.0, а также добавил новые возможности, такие как формы для ввода данных и таблицы для структурирования информации. Это сделало веб-страницы более интерактивными и удобными для пользователей. Формы позволили создавать интерактивные элементы, такие как поля ввода, кнопки и выпадающие списки, что значительно расширило возможности взаимодействия с пользователями.

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

HTML 3.2

HTML 3.2, выпущенный в 1997 году, добавил поддержку стилей (CSS) и скриптов (JavaScript), что позволило создавать более сложные и динамичные веб-страницы. Это была важная веха в развитии веб-дизайна, так как разработчики получили возможность контролировать внешний вид и поведение веб-страниц. CSS позволил отделить структуру документа от его стиля, что упростило разработку и поддержку веб-сайтов.

JavaScript, в свою очередь, позволил добавлять интерактивные элементы и динамическое поведение на веб-страницы. Это открыло новые возможности для создания интерактивных веб-приложений и улучшило пользовательский опыт. Веб-разработчики начали активно использовать CSS и JavaScript для создания более привлекательных и функциональных веб-сайтов, что привело к появлению новых профессий, таких как веб-дизайнеры и фронтенд-разработчики.

HTML 4.01

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

 
<!DOCTYPE html>
<html>
<head>
    <title>Пример таблицы</title>
</head>
<body>
    <table border="1">
        <tr>
            <th>Имя</th>
            <th>Возраст</th>
        </tr>
        <tr>
            <td>Иван</td>
            <td>25</td>
        </tr>
        <tr>
            <td>Мария</td>
            <td>30</td>
        </tr>
    </table>
</body>
</html>

 

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

HTML 4.01 также включал улучшенную поддержку мультимедиа, что позволило добавлять на веб-страницы изображения, аудио и видео. Это значительно расширило возможности веб-дизайна и улучшило пользовательский опыт. Веб-разработчики начали активно использовать мультимедийные элементы для создания более привлекательных и информативных веб-сайтов.

HTML5: Революция в веб-технологиях

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

Новые семантические элементы

HTML5 ввел новые семантические элементы, такие как <header><footer><article><section>, которые позволяют лучше структурировать контент и делают его более доступным для поисковых систем и вспомогательных технологий. Эти элементы помогают улучшить SEO (поисковую оптимизацию) и делают веб-страницы более понятными для поисковых систем.

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

Встроенные мультимедиа

HTML5 добавил поддержку встроенных мультимедийных элементов, таких как <audio> и <video>, что позволило воспроизводить аудио и видео непосредственно на веб-страницах без необходимости использования сторонних плагинов. Вот пример использования видео в HTML5:

 
<!DOCTYPE html>
<html>
<head>
    <title>Пример видео</title>
</head>
<body>
    <video controls>
        <source src="video.mp4" type="video/mp4">
        Ваш браузер не поддерживает видео.
    </video>
</body>
</html>

 

Это значительно упростило процесс добавления мультимедийного контента на веб-страницы и улучшило пользовательский опыт. Веб-разработчики начали активно использовать встроенные мультимедийные элементы для создания более интерактивных и привлекательных веб-сайтов.

Улучшенная поддержка форм

HTML5 также улучшил поддержку форм, добавив новые типы ввода, такие как emaildatenumber, и новые атрибуты, такие как placeholder и required, что упростило создание и валидацию форм. Это значительно упростило процесс взаимодействия пользователей с веб-сайтами и улучшило пользовательский опыт.

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

API и новые возможности

HTML5 включил множество новых API, таких как Geolocation API, Web Storage API, Canvas API, которые расширили возможности веб-приложений и позволили создавать более интерактивные и функциональные веб-сайты. Эти API предоставили разработчикам доступ к новым функциям и возможностям, что значительно расширило возможности веб-разработки.

Geolocation API позволяет определять местоположение пользователя, что открыло новые возможности для создания геолокационных сервисов и приложений. Web Storage API предоставляет возможность хранения данных на стороне клиента, что улучшило производительность и удобство использования веб-приложений. Canvas API позволяет создавать сложные графические элементы и анимации, что значительно улучшило визуальное восприятие веб-сайтов.

Современное состояние и будущее HTML

Сегодня HTML продолжает развиваться и адаптироваться к новым требованиям и технологиям. Современные веб-страницы становятся все более интерактивными и сложными, и HTML играет ключевую роль в этом процессе. Веб-разработчики активно используют HTML5 вместе с CSS3 и JavaScript для создания современных веб-приложений.

Тренды и перспективы

Среди текущих трендов можно выделить развитие прогрессивных веб-приложений (PWA), которые объединяют лучшие черты веб-сайтов и мобильных приложений. PWA позволяют создавать веб-приложения, которые работают офлайн, быстро загружаются и предоставляют пользователям удобный и интуитивно понятный интерфейс.

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

Влияние на будущее

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

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

 

Источник:   https://sky.pro

 



Фото

Шпаргалка по командам терминала LINUX...


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

В этой статье мы рассмотрим команды для терминала Linux, которые помогут вам максимально использовать возможности ОС.

Команды Linux для управления файлами

  1. ls – отображает список файлов и каталогов в текущей директории.
  2. cd – изменяет текущую директорию.
  3. pwd – выводит полный путь текущей директории.
  4. mkdir – создает новый каталог.
  5. rm – удаляет файлы или каталоги.
  6. cp – копирует файлы и каталоги.
  7. mv – перемещает или переименовывает файлы и каталоги.
  8. touch – создает новый файл или обновляет время доступа и модификации существующего файла.
  9. cat – выводит содержимое файла.
  10. less – позволяет просматривать содержимое файла постранично.
  11. head – выводит первые строки файла.
  12. tail – выводит последние строки файла.
  13. grep – ищет заданный текст в файлах или выводе команд.
  14. find – находит файлы и каталоги на основе различных критериев.
  15. chmod – изменяет права доступа к файлам и каталогам.
  16. chown – изменяет владельца файлов и каталогов.
  17. chgrp – изменяет группу файлов и каталогов.
  18. tar – создает или распаковывает архивы.
  19. zip – создает ZIP-архивы.
  20. unzip – извлекает файлы из ZIP-архивов.

Команды Linux для управления пользователями

  1. adduser – создает нового пользователя.
  2. usermod – изменяет параметры существующего пользователя.
  3. deluser – удаляет пользователя.
  4. passwd – изменяет пароль пользователя.
  5. su – переключается на другого пользователя или становится суперпользователем.
  6. sudo – выполняет команду с привилегиями суперпользователя.
  7. finger – отображает информацию о пользователе.
  8. who – отображает информацию о вошедших пользователях.
  9. id – отображает информацию о текущем пользователе или указанном пользователе.
  10. groups – отображает группы, к которым принадлежит пользователь.
  11. useradd – создает нового пользователя (альтернатива для adduser).
  12. userdel – удаляет пользователя (альтернатива для deluser).
  13. usermod – изменяет параметры существующего пользователя (альтернатива для usermod).
  14. passwd – изменяет пароль пользователя (альтернатива для passwd).
  15. last – отображает историю входа пользователей.
  16. w – отображает текущих пользователей и их активность.
  17. logout – выходит из текущей сессии пользователя.

Команды Linux для управления приложениями

  1. apt-get install – устанавливает новое приложение или пакет.
  2. apt-get remove – удаляет установленное приложение или пакет.
  3. apt-get update – обновляет список доступных обновлений пакетов.
  4. apt-get upgrade – обновляет установленные пакеты до последних версий.
  5. apt-cache search – ищет пакеты по ключевому слову.
  6. dpkg -i – устанавливает .deb пакет.
  7. dpkg -r – удаляет .deb пакет.
  8. dpkg -l – отображает список установленных пакетов.
  9. snap install – устанавливает приложение из snap-пакета.
  10. snap remove – удаляет установленное snap-приложение.
  11. snap list – отображает список установленных snap-приложений.
  12. systemctl start – запускает системную службу.
  13. systemctl stop – останавливает системную службу.
  14. systemctl restart – перезапускает системную службу.
  15. systemctl enable – включает автозапуск системной службы при загрузке системы.
  16. systemctl disable – отключает автозапуск системной службы при загрузке системы.
  17. service <service> start – запускает службу.
  18. service <service> stop – останавливает службу.
  19. service <service> restart – перезапускает службу.
  20. service <service> status – отображает статус службы.

Команды Linux для управления системой

  1. shutdown – позволяет выключить или перезагрузить систему. Например, shutdown -h now выключает систему немедленно.
  2. reboot – перезагружает систему. Просто запустите reboot в терминале.
  3. halt – выключает систему. Просто запустите halt в терминале.
  4. poweroff – выключает систему. Просто запустите poweroff в терминале.
  5. systemctl – команда для управления системными сервисами. Например, systemctl start apache2 запускает службу Apache.
  6. service – альтернативный способ управления системными службами. Например, service nginx restart перезапускает службу Nginx.
  7. ifconfig – отображает и настраивает сетевые интерфейсы системы, включая IP-адреса, маски и шлюзы.
  8. ip – альтернативный способ управления сетевыми интерфейсами и конфигурацией сети.
  9. netstat – отображает сетевые соединения, открытые порты и другую связанную информацию.
  10. ping – отправляет ICMP-пакеты на указанный IP-адрес для проверки доступности хоста в сети.
  11. traceroute – отображает путь, по которому проходят пакеты до указанного IP-адреса в сети.
  12. ssh – устанавливает безопасное соединение с удаленным сервером по протоколу SSH.
  13. scp – копирует файлы между удаленным и локальным серверами по протоколу SSH.
  14. rsync – выполняет синхронизацию и копирование файлов между удаленными и локальными серверами.
  15. crontab – позволяет управлять cron-задачами, которые выполняются автоматически по заданному расписанию.
  16. at – позволяет запускать команды или скрипты в определенное время в будущем.
  17. shutdown – планирует выключение или перезагрузку системы по расписанию.
  18. nohup – запускает команду с игнорированием сигналов завершения процесса. Это полезно для выполнения задач в фоновом режиме.
  19. history – отображает историю команд, введенных пользователем в терминале.

Команды Linux для управления процессами

  1. top – отображает список процессов и их характеристики, такие как использование CPU и памяти.
  2. ps – выводит список текущих запущенных процессов с их идентификаторами (PID).
  3. kill – отправляет сигнал процессу для его завершения. Например, kill PID завершит процесс с указанным идентификатором.
  4. pkill – отправляет сигнал процессам по их имени или другим атрибутам. Например, pkill firefox завершит все процессы Firefox.
  5. htop – интерактивное утилита мониторинга процессов, которая позволяет видеть дополнительную информацию и управлять процессами.
  6. free – отображает общую, использованную и свободную память системы, включая физическую и подкачку.
  7. vmstat – предоставляет информацию о использовании памяти, процессоре, вводе-выводе, планировании и других системных ресурсах.
  8. killall – завершает все процессы с указанным именем. Например, killall firefox завершит все процессы Firefox.
  9. renice – изменяет приоритет процесса в реальном времени. Например, renice -n -5 -p PID увеличит приоритет процесса с указанным идентификатором.
  10. nice – запускает процесс с более низким приоритетом. Например, nice -n 10 command запустит команду с очень низким приоритетом.
  11. pgrep – выводит идентификаторы процессов, соответствующие указанной строке. Например, pgrep firefox выведет идентификаторы процессов Firefox.
  12. strace – отслеживает системные вызовы и сигналы, связываемые с процессом. Можно использовать для отладки или анализа процессов.
  13. lsof – выводит открытые файлы и сетевые соединения для всех процессов на системе.
  14. sar – собирает информацию о использовании ресурсов системы, таких как процессор, память, сеть и диски, и сохраняет ее для последующего анализа.
  15. uptime – выводит информацию о времени работы системы, средней загрузке и количестве активных пользователей.
  16. time – запускает команду и отображает время, затраченное на ее выполнение, включая CPU-время и время ввода-вывода.

Команды Linux для управления памятью

  1. smem – отображает детальную информацию об использовании памяти процессами, группами процессов и системой в целом.
  2. sync – записывает все буферы операционной системы на диск, чтобы обеспечить сохранность данных перед завершением работы.
  3. swapoff – отключает файл подкачки, что позволяет освободить диск, но может увеличить использование оперативной памяти.
  4. swapon – включает файл подкачки, добавляя дополнительную виртуальную память для использования системой.
  5. sysctl – позволяет просматривать и изменять настройки ядра, включая параметры, связанные с памятью.
  6. ulimit – устанавливает ограничения на использование ресурсов, включая память, для отдельного пользователя или процесса.
  7. pmap – выводит карту памяти процесса, позволяя увидеть как процесс использует физическую и виртуальную память.
  8. slabtop – отображает информацию о кэшах ядра, которые используют физическую память системы.
  9. ulimit – устанавливает ограничения на использование ресурсов, включая память, для отдельного пользователя или процесса.
  10. numactl – управляет доступом процессов к памяти и процессорам, особенно в многоядерных системах.
  11. sysrq – позволяет отправлять системным вызовом определенные команды ядру Linux, в том числе сброс памяти (Memory Management).
  12. mdb – интерактивный отладчик для системы Solaris, который может использоваться для анализа памяти.

Заключение

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

Знание этих команд и их правильное использование позволяют улучшить производительность и обеспечить более глубокий контроль над Linux системой.



Фото

Выбор файловой системы в Linux


Какую файловую систему выбрать при установке Linux? Какие они эти файловые системы? В чем их сходство и различие? Просто о сложном: как не запутаться при установке системы.

Введение: Что такое файловая система?

Представьте, что ваш жесткий диск — это библиотека. Файловая система — это каталог, который помогает быстро находить книги (файлы) и следить за порядком. Без нее данные превратились бы в беспорядочную кучу. В Linux существует несколько вариантов таких «каталогов», и каждый подходит для разных задач. Разберемся, какой выбрать, если вы впервые устанавливаете систему.

 

Основные файловые системы в Linux

Для новичков важно выбрать баланс между надежностью и простотой. Вот ключевые варианты:

ext4

Что это? ext4 (Fourth Extended Filesystem) — это четвертая версия файловой системы ext, которая является стандартом для большинства дистрибутивов Linux. Она была разработана как улучшение ext3 и включает в себя множество новых функций и улучшений. ext4 поддерживает большие объемы данных, улучшенную производительность и надежность. Она использует журналирование, что позволяет быстро восстанавливать данные после сбоев. ext4 также поддерживает расширенные атрибуты файлов и большие файлы (до 16 терабайт).

Плюсы:

Надежная журналируемая система (запись изменений в «журнал» для восстановления после сбоев).

Поддержка дисков до 1 эксабайта (это 1 миллион терабайт!).

Высокая совместимость: работает во всех дистрибутивах.

Минусы:

Нет встроенной поддержки снапшотов или сжатия данных.

 

Btrfs (B-Tree File System)

Что это? Btrfs (B-Tree File System) — это современная файловая система, разработанная для предоставления передовых функций, таких как снапшоты, сжатие данных, динамическое управление разделами и высокая надежность. Она использует структуру данных B-Tree для управления файлами и метаданными, что обеспечивает высокую производительность и масштабируемость. Btrfs также поддерживает копирование при записи (COW), что позволяет создавать снапшоты и восстанавливать данные до предыдущих состояний.

Плюсы:

Снапшоты (моментальные снимки системы для отката изменений).

Сжатие данных (экономия места без потери скорости).

Динамическое управление разделами (не нужно заранее задавать размер).

Минусы:

Менее стабильна в экзотических сценариях.

Сложнее в настройке для новичков.

 

XFS

Что это? XFS — это высокопроизводительная файловая система, разработанная компанией Silicon Graphics (SGI) для работы с большими файлами и высокими нагрузками. Она была создана для использования в серверных средах и поддерживает большие объемы данных (до 8 эксабайт). XFS использует журналирование для обеспечения надежности и быстрого восстановления после сбоев. Она также поддерживает расширенные атрибуты файлов и большие файлы (до 8 эксабайт). XFS оптимизирована для работы с видеофайлами, базами данных и другими приложениями, требующими высокой производительности.

Плюсы:

Высокая скорость обработки крупных данных.

Надежное журналирование.

Минусы:

Сложности с уменьшением размера раздела.

Менее удобна для домашнего использования.

 

ZFS

Что это? ZFS (Zettabyte File System) — это мощная файловая система, разработанная компанией Sun Microsystems, которая фокусируется на целостности данных и высокой надежности. Она поддерживает гигантские объемы данных (до 256 зеттабайт) и использует проверку данных на ошибки для обеспечения их целостности. ZFS также поддерживает снапшоты, сжатие данных, дедупликацию и динамическое управление разделами. Она требует много оперативной памяти для работы и не встроена в ядро Linux, что требует дополнительных действий для ее установки и настройки.

Плюсы:

Проверка данных на ошибки (самолечение).

Поддержка гигантских объемов.

Минусы:

Требует много оперативной памяти.

Не встроена в ядро Linux (нужны дополнительные действия).

 

F2FS (Flash-Friendly File System)

Что это? F2FS (Flash-Friendly File System) — это файловая система, разработанная компанией Samsung специально для использования с SSD и флеш-накопителями. Она оптимизирована для увеличения срока службы SSD и обеспечения высокой производительности. F2FS использует логарифмическую структуру для управления данными, что позволяет минимизировать износ флеш-памяти и улучшить производительность. Она также поддерживает сжатие данных и снапшоты. F2FS менее распространена и не все дистрибутивы Linux поддерживают ее по умолчанию.

Плюсы:

Увеличивает срок службы SSD.

Минусы:

Меньшая распространенность (не все дистрибутивы поддерживают).

 

Что выбрать новичку?

Рекомендация: ext4.

Почему?

Простота: Установщики Ubuntu, Fedora и других дистрибутивов предлагают ext4 по умолчанию. Вам не нужно ничего настраивать.

Стабильность: Проверена годами — данные не потеряются из-за случайного сбоя.

Совместимость: Не возникнет проблем при подключении диска к другой системе.

А если хочется экспериментировать?

Попробуйте Btrfs, если:

Хотите использовать снапшоты для резервных копий.

Готовы следовать инструкциям (например, в openSUSE Btrfs настроена «из коробки»).

Когда выбрать другое?

XFS — если работаете с видео или большими базами данных.

F2FS — для SSD в легковесных дистрибутивах (например, Garuda Linux).

 

Как выбрать файловую систему при установке?

Запустите установщик (например, Ubuntu).

На этапе разметки диска выберите «Стереть диск и установить Linux» — система сама создаст разделы с ext4.

Для ручной настройки:

Укажите точку монтирования (например, / для корневого раздела).

Выберите файловую систему из выпадающего списка.

 

Заключение

Не переживайте из-за «идеального» выбора. Для первого раза ext4 — лучший вариант. Освоите базовые навыки — сможете перейти на Btrfs или другие системы. Linux тем и хорош, что позволяет менять настройки по мере роста ваших знаний. Удачной установки!

 

P.S. Не забудьте сделать бэкап данных перед экспериментами с разделами!

 

Источник: https://dzen.ru/

 



Фото

Как добавить иконку (favicon) на сайт в HTML


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

Что такое favicon

Favicon — это графический элемент, который является иконкой сайта и находится на вкладке веб-ресурса. Правильно настроенный favicon помогает пользователям легче находить сайт среди множества открытых вкладок и закладок.

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

Favicon сайта хостинга AdminVPS
Favicon сайта хостинга AdminVPS

Favicon выполняет несколько ключевых функций:

  1. Упрощение навигации для юзеров. С помощью фавикона пользователям легче находить нужные вкладки среди множества открытых сайтов.
  2. Брендинг. Запоминающийся favicon формирует яркий образ бренда. Иконка вызывает у пользователей ассоциации с продуктом или услугой, что в дальнейшем может повысить лояльность и доверие к бизнесу.
  3. Сертификаты безопасности. В некоторых браузерах значок сайта отображается рядом с предупреждениями о безопасности. Это может повысить уровень доверия к ресурсу, поскольку юзер будут видеть знакомую иконку и знать, что веб-ресурс принадлежит определённому бренду.

Фавикон различных сайтов видно в окне браузера на вкладках:

Фавиконы разных сайтов
Фавиконы разных сайтов

Иконка сайта может иметь разный формат, что главным образом влияет на её отображение:

  • ICO. Этот формат является золотым стандартом для фавиконов и поддерживает прозрачность, а также различные размеры (16x16, 32x32, 48x48 и так далее). Он совместим с большинством браузеров.
  • PNG. Современный формат, поддерживающий прозрачность и более высокое качество изображений. Однако не все браузеры корректно отображают PNG-файлы в качестве фавиконов.
  • SVG. Векторный формат, который позволяет масштабировать изображение без потери качества. Хотя SVG-файлы могут отлично выглядеть на современных устройствах, некоторые браузеры могут не поддерживать их в качестве фавиконов, что важно учитывать при выборе формата.

Как создать favicon

Создать значок сайта можно с помощью множества доступных онлайн-инструментов.

Выбор изображения

Первый шаг — выбрать или сгенерировать изображение. Например, подойдёт логотип вашей компании, символ или другой элемент, который точно передаёт суть вашего бизнеса. Рекомендуемые размеры для фавиконов — 16x16 пикселей для стандартного отображения на вкладках браузеров и 32x32 пикселя для более качественного отображения на устройствах с высоким разрешением. Помните, что изображение должно быть чётким и легко различимым.

Конвертация в нужный формат

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

Оптимизация

Убедитесь, что размер файла фавикона не превышает 100 КБ. Чем меньше весит иконка, тем быстрее она будет загружаться на сайте, что особенно важно для мобильных устройств. Сжимайте изображения при помощи инструментов, например, TinyPNG или ImageOptim, чтобы уменьшить вес файла без значительной потери качества.

Полезные сервисы

Для более быстрой разработки фавикона можно воспользоваться сервисами:

1. Favicon.io

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

2. Favicon.cc

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

3. RealFaviconGenerator.net

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

Как добавить иконку на сайт HTML

Теперь, когда у вас есть готовая иконка, необходимо добавить её на интернет-страницу. Это делается с помощью тега <link>, который помещается в секцию <head> вашего HTML-документа.

Пример HTML-кода для добавления favicon:

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="icon" href="favicon.ico" type="image/x-icon">
    <title>Мой сайт</title>
</head>
<body>
    <h1>Добро пожаловать на мой сайт!</h1>
</body>
</html>

В этом примере favicon.ico — это имя вашего файла с иконкой. Убедитесь, что файл находится в той же папке, что и ваш HTML-документ. Если вы используете другие форматы, замените

type="image/x-icon"

на соответствующий тип, например,

type="image/png"

для PNG.

Указание дополнительных размеров

Для лучшей поддержки различных устройств и браузеров вы можете указать разные размеры иконок, используя атрибуты sizes и type.

Пример:

<link rel="icon" href="favicon-16x16.png" sizes="16x16" type="image/png">
<link rel="icon" href="favicon-32x32.png" sizes="32x32" type="image/png">
<link rel="icon" href="favicon-96x96.png" sizes="96x96" type="image/png">

Браузеры будут выбирать наиболее подходящую иконку в зависимости от устройства и разрешения экрана.

Как добавить иконку в HTML для мобильных устройств

Мобильные устройства требуют особого подхода к иконкам. Используйте следующие метатеги в секции <head>, чтобы иконки корректно отображались в телефонах:

<link rel="apple-touch-icon" sizes="180x180" href="apple-icon.png">
<link rel="icon" type="image/png" sizes="192x192" href="android-icon.png">
<link rel="icon" type="image/png" sizes="512x512" href="android-icon.png">

Тестирование иконки

После добавления значка на ваш сайт важно тщательно протестировать его отображение в различных браузерах и на разных устройствах.

Тестирование в различных браузерах

Проверьте, как ваш значок выглядит в популярных браузерах, таких как «Яндекс Браузер», Google Chrome, Mozilla Firefox, Safari и Microsoft Edge. Каждый из них может обрабатывать фавиконы немного по-разному. Например, Chrome может кешировать старое изображение, если вы вносите изменения, поэтому лучше открыть сайт в режиме инкогнито или очистить кеш браузера, чтобы увидеть обновлённый значок.

Проверка на мобильных устройствах

Не забудьте протестировать favicon и на мобильных устройствах. На смартфонах и планшетах значок может отображаться иначе, особенно в зависимости от операционной системы (iOS или Android). Проверьте, как смотрится и отображается иконка на разных экранах, включая устройства с высокой плотностью пикселей (Retina).

Причины проблем с favicon

Если ваша иконка не отображается, на то может быть несколько причин. Разберём основные причины ошибок и предложим их решение.

Проверка пути к файлу

Вы должны проверить, правильно ли вы указали расположение файла в HTML-коде. Например, если ваш файл называется favicon.ico и находится в папке images, путь должен выглядеть так:

<link rel="icon" href="images/favicon.ico" type="image/x-icon">

Если файл находится в корневой директории вашего веб-ресурса, путь будет:

 href="favicon.ico"

Проверьте, не допущена ли опечатка в названии файла и его расширении. Также убедитесь, что файл действительно существует на сервере, иначе иконка не будет отображаться.

Очистка кеша браузера

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

Неправильный формат файла

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

Чтобы проверить тип MIME, вы можете использовать инструменты разработчика в вашем браузере. Откройте вкладку «Сеть» и обновите страницу, затем найдите ваш файл иконки в списке ресурсов. Убедитесь, что указанный тип MIME соответствует формату файла, например, image/x-icon для .ico и image/png для .png.

Заключение

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

 

Источник:  adminvps.ru

 



Фото

Парсинг сайтов на Python: как написать скрипт


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

Что такое парсинг?

Парсинг (англ. parsing — разбор) — это процесс автоматического анализа веб-сайтов для сбора структурированной информации. Еще парсинг часто называют веб-скрапингом. Представьте, что вы ищете на новостном сайте статьи про Python и сохраняете каждую в заметки: копируете заголовок и ссылку. С помощью парсинга можно автоматизировать этот процесс. Все данные будет искать и сохранять скрипт, а вам останется только проверять файл с результатами.

Часто парсинг используют боты, которые потом предоставляют доступ к собранным структурированным данным. Это может быть список статей на сайте, вакансий на платформе по поиску работы или предложений на досках объявлений. Например, один из героев нашего блога написал бот, который нашел ему работу за месяц. Если у сайта нет полноценного открытого API, то парсер ищет данные с помощью GET-запросов к серверу, а это создает дополнительную нагрузку на сервер.

Это накладывает некоторые этические ограничения на скрипты для парсинга веб-сайтов:

  • не стоит отправлять слишком много запросов к серверу, главная задача — собрать полезные данные, а не положить инфраструктуру сервиса;
  • если есть публичное API, то лучше использовать его;
  • на сайте могут быть личные данные пользователей, к ним надо относиться бережно и внимательно.

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

Для чего нужен парсинг?

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

  • Мониторинг цен. Можно быстро и эффективно отслеживать цены на один и тот же товар на разных площадках. Пользователям эта информация нужна для поиска самого выгодного предложения, а компаниям — для корректировки цен в своих магазинах.
  • Отслеживание трендов. В социальных сетях постоянно меняются популярные темы. Надо проводить много времени в Сети, чтобы идти в ногу со временем или использовать автоматизированные системы сбора популярных постов.
  • Новости. С помощью парсинга можно разработать собственный агрегатор новостей и настроить его только на интересные сайты и медиа.
  • Исследования. Для глубокого анализа рынка или конкурентов нужны большие массивы данных. Ручной сбор займет много времени. Парсер выполнит задачу быстрее и точно ничего не пропустит.

Python и Beautiful Soup

Для парсинга удобно использовать Python из-за его простого синтаксиса и интерпретируемого подхода. Скрипты можно писать быстро и не собирать весь проект снова после незначительных изменений в коде. Разработанный парсер можно без проблем перенести практически на любую платформу или запустить в облаке, автоматизировав процесс хранения информации.

Еще одно преимущество Python — его популярность. Для  языка программирования есть большое количество сторонних библиотек для различных задач и активное сообщество, которое может помочь советом. Одна из полезных библиотек для парсинга веб-сайтов — BeautifulSoup. С ее помощью можно легко анализировать HTML-файлы и находить в них нужные данные. В этой статье будем парсить сайт с ее помощью.

Как установить Beautiful Soup

Есть несколько популярных способов запуска кода на Python:

  • На своем компьютере. Python работает на Windows, Linux и MacOS. Для этого надо предварительно установить язык программирования на устройство. Сам код можно писать в редакторе или в полноценной IDE. Из бесплатных доступны Visual Studio Code и PyCharm Community. Плюсы этого способа заключаются в том, что все данные хранятся локально, а код выполняется быстрее.
  • В облачном сервисе. Есть множество платформ, которые позволяют писать и запускать код на Python в облаке. Для этого на компьютер не надо устанавливать дополнительные пакеты и заботиться о совместимости. Понадобится только браузер и стабильное подключение к интернету. Все данные будут передаваться на удаленный сервер. Такой способ подходит для новичков или для быстрых экспериментов с кодом. Можно использовать бесплатные Repl.itGoogle Colab или Programiz

Для работы нам понадобятся библиотеки BeautifulSoup, requests и lxml. Их можно установить с помощью следующей команды в терминале:

    $ pip3 install requests BeautifulSoup4 lxml
 

Получаем HTML-страницу

Для начала парсинга надо получить страницу, из которой будем вытаскивать полезные данные. Для этого будем использовать библиотеку requests, чтобы отправить GET-запрос, в качестве ответа получить код страницы и сохранить его. Попробуем распарсить вот эту статью, получив заголовок и первый абзац. Код выглядит следующим образом:

    import requests
 
    url = 'https://blog.skillfactory.ru/programmist-v-sims-4/'
    response = requests.get(url)
    response.raise_for_status()
    print(response.text)

Что в коде:

  • import requests — импортируем библиотеку requests в код скрипта;
  • url = ‘https://blog.skillfactory.ru/programmist-v-sims-4/’ — переменная, в которой хранится ссылка на целевую страницу;
  • response = requests.get(url) — выполняем GET-запрос и передаем в него переменную с хранящейся ссылкой;
  • response.raise_for_status() — эта функция вернет нам код ошибки, если запрос не получится выполнить. Если не добавить эту строчку, то Python будет дальше выполнять код и не обращать внимания на ошибку;
  • print(response.text) — печатаем код полученной страницы.

В ответе мы получим весь код страницы, включая CSS-стили и JavaScript. Вот так это выглядит:

Html разметка
Html-разметка страницы

Парсим страницу

Код страницы у нас уже есть, но теперь из него надо получить полезные данные. Обозначим, что для решения нашей задачи необходимо получить заголовок статьи и первый абзац. Для этого понадобятся возможности библиотеки BeautifulSoup. Но сперва надо найти теги элементов, которые будем извлекать из кода страницы.

Для этого потребуется веб-инспектор в любом браузере. Мы будем использовать Safari, но этот режим есть и в других браузерах. К примеру, в Google Chrome он открывается сочетанием клавиш Сtrl + Shift + I (Windows) или ⌥ + ⌘ + I (macOS). После этого можно выбрать на странице элемент и увидеть его код в инспекторе.

Веб-инспектор в браузере
Веб-инспектор в браузере Safari

Заголовок статьи находится в теге <h1>, поэтому попробуем получить его содержимое с помощью библиотеки BeautifulSoup. Для этого передадим в функцию find искомый тег:

    from bs4 import BeautifulSoup
    import requests
 
    url = 'https://blog.skillfactory.ru/programmist-v-sims-4/'
    response = requests.get(url)
    response.raise_for_status()
 
    soup = BeautifulSoup(response.text, 'lxml')
    title = soup.find('h1')print(title)
 
 

Все получилось и Python вывел в консоль текст заголовка, но с тегами. Надо избавиться от них. Это можно сделать с помощью преобразования содержимого переменной title в текст. После этого Python удалит теги, оставив только их содержимое:

    soup = BeautifulSoup(response.text, 'lxml')
    title = soup.find('h1')
    title = title.text
    print(title)
 
 

Теперь надо повторить весь порядок действий для вывода первого абзаца. Начинаем с поиска тега в инспекторе и после этого вытаскиваем его из файла и преобразуем в текст.

    paragraph = soup.find('p')
    paragraph = paragraph.text
 
    print(paragraph)
 
 
 

Мы в точности повторили весь порядок действий, но парсер вывел совсем не ту строчку. Все дело в том, что мы искали элемент по тегу <p>. В HTML-файле их может быть несколько, а BeautifulSoup ищет самый первый. Поэтому запрос надо уточнить и сделать его более конкретным.

Для этого можно указать дерево наследования элементов. К примеру, если тег <p> входит в <article>, а тот — в <main>, то код запроса можно будет записать так: soup.find(‘main’).find(‘article’).find(‘p’). Еще можно искать элемент по его классу. Для этого в функцию надо передать тег и его класс: soup.find(‘p’, class_=’paragraph’).

В нашем случае запрос будет выглядеть следующим образом:

    paragraph = soup.find('div', class_='single-content').find('p')
    paragraph = paragraph.text
 
    print(paragraph)
 
 

Таким образом можно распарсить любую веб-страницу и получить необходимые данные, а потом использовать их по своему усмотрению. К примеру, строить график изменения цен на товары в онлайн-магазинах или автоматически отправлять ссылки на новые статьи с кратким содержанием в Telegram.

Сохраняем результат

Сейчас наш код выводит результат парсинга веб-страницы в консоль. Эти данные никуда не сохраняются и к ним сложно получить доступ. Для этого каждый раз надо будет запускать скрипт. Упростим задачу и запишем данные в файл.

Для этого воспользуемся встроенной функцией write(). Сперва откроем файл в режиме записи:

    file = open("parsing.txt", "w")
 

Если файла с таким названием нет, то Python сам создаст его в директории проекта.

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

    file.write(title)
    file.write(paragraph)
 
    file.close()
 

Коротко о том, как парсить сайты на Python

  • С помощью парсинга можно автоматически анализировать веб-страницы и вытаскивать из них полезную информацию.
  • Для парсинга необходимо отправлять запросы к серверу, чтобы получать код сайтов, а это может нагружать сервис, поэтому важно не злоупотреблять этим.
  • Если у сервиса есть публичное API, то лучше пользоваться им.
  • В Python удобно парсить веб-сайты с помощью библиотеки BeautifulSoup.
  • Запросы выполняются с помощью библиотеки requests.
  • Результат парсинга можно сохранять в файл, вносить в базу данных или отправлять с помощью почты и мессенджеров.

 

Источник: blog.skillfactory.ru

 

 



1 2 3    Следующая