Посты пользователя: dima: страница 8
Российское кресло
1 г. назад
Купили жене кресло в обычном оффлайн магазине. Привезли домой, собрали, всё хорошо.
Смотрим на коробке документ, а там адрес изготовителя - Россия, Белгородская область, город Шебекино.
Ботанический сад осенью
1 г. назад
Осень - прекрасное время, чтобы сходить в ботанический сад.
Вечерние лучи красиво подсвечивают коричневые стволы сосен.
Вечерние лучи красиво подсвечивают коричневые стволы сосен.
Чертополох.
Собаководы, как же вы надоели
1 г. назад
В Ростове-на-Дону в центре отремонтировали территорию перед Музыкальным театром, сделали клумбы с подсветкой и капельным поливом, плюс несколько хороших фонтанов. И эту местность уже облюбовали собаководы! Играет классическая музыка, на струи фонтанов проецируется балет, а рядом уже половина гранитных углов обоссана псинами. Это даже не парк, по факту это часть здания, под всеми этими клумбами и фонтанами находится парковка театра.
Когда мы там были, работник театра в микрофон делала объявление, что с собаками вход воспрещён. Но собаководам плевать, им если любимая псина не обоссала угол - день прошёл зря.
Прошёл The Excavation of Hob's Barrow
1 г. назад
Периодически играю в квесты на компе, как в старые, так и в новые. Из новых вот на днях прошёл The Excavation of Hob's Barrow. Игра вышла при поддержке Wadjet Eye Games, а я эту студию уважаю за серию Blackwell. Я в принципе прошёл почти все квесты от Wadjet Eye Games, поэтому пропустить The Excavation of Hob's Barrow не мог.
Игра требует серьёзного знания английского языка. Очень много мудрёных речевых оборотов, а русского перевода нет, это нужно иметь в виду.
Что гложет Гилберта Грейпа
1 г. назад
Посмотрел "Что гложет Гилберта Грейпа" 1993 года. В главных ролях очень молодые Джонни Депп и Леонардо Ди Каприо.
Леонардо Ди Каприо так вообще выглядит как ребёнок, хотя актёру уже было 18 лет.
"Мечтать" и "присниться" по-английски
1 г. назад
Глагол "to dream" в английском языке совершенно дурацкий, потому что переводится одновременно как "мечтать" и как "присниться". Похоже, давным-давно кто-то почему-то решил, что это одно и то же, но это абсолютно не одно и то же.
"Мне приснилась поездка в Австралию" и "я мечтаю о поездке в Австралию" - это абсолютно разные вещи. Не всё, что снится, является сокровенной мечтой. Иногда снится вообще то, чего не хочется или вообще галиматья какая-то может присниться.
Как нам Гугл переведёт?
"Мне приснилась поездка в Австралию" и "я мечтаю о поездке в Австралию" - это абсолютно разные вещи. Не всё, что снится, является сокровенной мечтой. Иногда снится вообще то, чего не хочется или вообще галиматья какая-то может присниться.
Как нам Гугл переведёт?
Гугл сам не может определиться - мечтал или просто приснилось.
Кого хотела убить сватья баба Бабариха?
1 г. назад
У меня младший сын обожает "Сказку о царе Салтане" Пушкина.
Я когда ему читаю вот эти строки:
Я никогда не задумывался, кто такая Бабариха. А оказывается, Бабариха - это бабушка (!) царя Гвидона:
Пушкин прямым текстом говорит, что это бабушка князя Гвидона. Получается, родная бабушка приказала бросить внука в "бездну вод", по факту обрекала на смерть. А в конце сказки добрый царь Салтан пожалел всех негодяев, которые хотели его сына убить.
Вопрос только: Бабариха - это мать "царицы молодой" или мать Салтана? Что так, что так - дичь какая-то получается. В первом случае она хотела убить свою дочь и внука, во втором случае - убить свою невестку и опять же внука.
Я когда ему читаю вот эти строки:
А ткачиха с поварихой,
С сватьей бабой Бабарихой,
Не хотят его пустить
Чудный остров навестить.
аж интонация меняется в духе "ах какие они негодяйки".С сватьей бабой Бабарихой,
Не хотят его пустить
Чудный остров навестить.
Я никогда не задумывался, кто такая Бабариха. А оказывается, Бабариха - это бабушка (!) царя Гвидона:
Ни гугу — но Бабариха,
Усмехнувшись, говорит:
...
Молвить можно справедливо,
Это диво, так уж диво».
Гости умные молчат:
Спорить с бабой не хотят.
Чуду царь Салтан дивится —
А царевич хоть и злится,
Но жалеет он очей
Старой бабушки своей:
Он над ней жужжит, кружится —
Прямо на нос к ней садится,
Нос ужалил богатырь:
На носу вскочил волдырь
Усмехнувшись, говорит:
...
Молвить можно справедливо,
Это диво, так уж диво».
Гости умные молчат:
Спорить с бабой не хотят.
Чуду царь Салтан дивится —
А царевич хоть и злится,
Но жалеет он очей
Старой бабушки своей:
Он над ней жужжит, кружится —
Прямо на нос к ней садится,
Нос ужалил богатырь:
На носу вскочил волдырь
Пушкин прямым текстом говорит, что это бабушка князя Гвидона. Получается, родная бабушка приказала бросить внука в "бездну вод", по факту обрекала на смерть. А в конце сказки добрый царь Салтан пожалел всех негодяев, которые хотели его сына убить.
Вопрос только: Бабариха - это мать "царицы молодой" или мать Салтана? Что так, что так - дичь какая-то получается. В первом случае она хотела убить свою дочь и внука, во втором случае - убить свою невестку и опять же внука.
Фотозаметки о Нью-Йорке: часть 2
1 г. назад
Ростовский зоопарк становится лучше
1 г. назад
Был с сыном в ростовском зоопарке, там появился новый вольер, где можно смотреть на козлов сверху.
Такой же подход в московском зоопарке. Очень удобно посетителям.
Животные как на ладони.
Животные как на ладони.
Что-то слышал о Prodigy
1 г. назад
Сижу на работе, работаю работу, общаюсь с молодым коллегой о музыке, кто что слушал/слушает и прочее.
Сказал ему о Prodigy.
Он отвечает:
- А, да, слышал о такой группе.
У меня глаза округлились.
Да, у нас разница поколений, 15 лет почти, но если мне скажут про Beatles или Modern Talking, я буду прекрасно понимать о чем речь.
The Prodigy - это веха. Prodigy значимы для музыки так же, как значимы Deep Purple или Майкл Джексон.
Сказал ему о Prodigy.
Он отвечает:
- А, да, слышал о такой группе.
У меня глаза округлились.
Да, у нас разница поколений, 15 лет почти, но если мне скажут про Beatles или Modern Talking, я буду прекрасно понимать о чем речь.
The Prodigy - это веха. Prodigy значимы для музыки так же, как значимы Deep Purple или Майкл Джексон.
Фотозаметки о Нью-Йорке: часть 1
1 г. назад
Детализированность отделки некоторых зданий просто поражает.
Мы уже привыкли, что дорожки в парках обычно из тротуарной плитки. А вот в Нью-Йорке это может быть обычный асфальт.
Для повышения производительности приложений на NodeJS во всех материалах рекомендуется использовать нодовский встроенный модуль cluster. Все статьи повторяют одно и то же, что и так написано в документации.
Вот официальный пример из доки:
Вот официальный пример из доки:
import cluster from 'node:cluster';
import http from 'node:http';
import { availableParallelism } from 'node:os';
import process from 'node:process';
const numCPUs = availableParallelism();
if (cluster.isPrimary) {
console.log(`Primary ${process.pid} is running`);
// Fork workers.
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
});
} else {
// Workers can share any TCP connection
// In this case it is an HTTP server
http.createServer((req, res) => {
res.writeHead(200);
res.end('hello world\n');
}).listen(8000);
console.log(`Worker ${process.pid} started`);
}
А теперь поделюсь своими исследованиями и расскажу, что не так в этом примере и как это можно улучшить.
Во-первых, некорректен нейминг переменной numCPUs. На моём компьютере, на котором тестировал производительность, стоит процессор Intel i7-13700, в нём всего 16 ядер. Сайт Intel так и пишет:
Во-первых, некорректен нейминг переменной numCPUs. На моём компьютере, на котором тестировал производительность, стоит процессор Intel i7-13700, в нём всего 16 ядер. Сайт Intel так и пишет:
Обратите внимание: 16 ядер и 24 треда. И нода после вызова availableParallelism() возвращает число 24, а не 16. Так что это не ядра, а треды.
Во-вторых, большинство нодовских приложений - это обычные API. Какой-нибудь REST API, гоняющий туда-сюда JSON. А берётся этот JSON в большинстве случаев из базы данных вроде PostgreSQL. Многие сайты, описывающие работу с модулем cluster в качестве примера, почему-то возвращают моковые данные, захардкоженные прямо в коде, а в реальную базу данных не лезут. И потом делают нагрузочное тестирование по этим данным. Т.е. при таком подходе на каждом ядре сидит по процессу NodeJS и другие процессы не мешают их работе, не заставляют переключать на себя внимание ядра.
А теперь давайте проведём тест на реальной работе REST API. Это будет GET-запрос за сущностью по её id. Чтобы сформировать JSON этой сущности, нода совершает не один, а несколько сложных запросов в базу данных. Кэширование в глобальных переменных или в Redis не используется.
Для тестирования я использовал пакет bombardier, написанный на Golang.
Сначала провёл тест на Windows 10.
Запускаю:
Во-вторых, большинство нодовских приложений - это обычные API. Какой-нибудь REST API, гоняющий туда-сюда JSON. А берётся этот JSON в большинстве случаев из базы данных вроде PostgreSQL. Многие сайты, описывающие работу с модулем cluster в качестве примера, почему-то возвращают моковые данные, захардкоженные прямо в коде, а в реальную базу данных не лезут. И потом делают нагрузочное тестирование по этим данным. Т.е. при таком подходе на каждом ядре сидит по процессу NodeJS и другие процессы не мешают их работе, не заставляют переключать на себя внимание ядра.
А теперь давайте проведём тест на реальной работе REST API. Это будет GET-запрос за сущностью по её id. Чтобы сформировать JSON этой сущности, нода совершает не один, а несколько сложных запросов в базу данных. Кэширование в глобальных переменных или в Redis не используется.
Для тестирования я использовал пакет bombardier, написанный на Golang.
go install github.com/codesenberg/bombardier@latest
Сначала провёл тест на Windows 10.
Запускаю:
bombardier http://127.0.0.1:7100/api/some/1101Результат без cluster:
Bombarding http://127.0.0.1:7100/api/some/1101 for 10s using 125 connection(s)
[=================================================================================================================] 10s
Done!
Statistics Avg Stdev Max
Reqs/sec 2754.89 1413.90 5813.88
Latency 45.31ms 1.95ms 72.43ms
HTTP codes:
1xx - 0, 2xx - 27625, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 9.99MB/s
Результат с cluster (все 24 потока):Bombarding http://127.0.0.1:7100/api/some/1101 for 10s using 125 connection(s)
[=================================================================================================================] 10s
Done!
Statistics Avg Stdev Max
Reqs/sec 8424.89 801.49 15177.67
Latency 14.84ms 1.69ms 72.64ms
HTTP codes:
1xx - 0, 2xx - 84224, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 30.54MB/s
Разница по производительности почти в 3 раза.Согласно данным Росстата в 2023 году среднемесячная номинальная начисленная заработная плата работников в Москве была 138882 рублей.
Для сравнения:
Ростовская область - 52100 руб.
Краснодарский край - 58256 руб.
Волгоградская область - 51833 руб.
Средняя по всей России - 74854 руб.
Согласно данным Циана в 2023 года стоимость среднего московского квадратного метра в новостройке была 291000 рублей.
Теперь предположим, что у нас семья из 4 человек - мама, папа, двое детей. Оба родителя работают (хотя часто один не работает, но, ладно, пусть работают оба). Такая семья должна жить в человеческих условиях, а не в однушках или в "студиях", прости-господи. Адекватная (!) минимальная площадь квартиры должна быть от 60 м2 для 4 человек, т.е. каждому хотя бы по 15 м2.
Таким образом, чтобы купить такую квартиру им нужно 60 * 2910000 = 17,46 млн рублей.
Давайте теперь считать - сколько месяцев должны работать родители, причем не есть, не пить, не платить коммуналку, не покупать одежду и прочее, чтобы накопить на такую московскую квартиру.
Ростовская область: 17460000 / (52100 * 2) = 167 месяцев = 13,9 лет.
Краснодарский край: 17460000 / (58256 * 2) = 150 месяцев = 12,5 лет.
Волгоградская область: 17460000 / (51833 * 2) = 168 месяцев = 14 лет.
"Средняя" Россия: 17460000 / (74854 * 2) = 116 месяцев = 9,7 лет.
Москва: 17460000 / (138882 * 2) = 63 месяца = 5,2 лет.
Разумеется, это нереалистично-оптимистичные подсчёты. Людям надо чем-то питаться, им придётся платить за электричество и проезд в общественном транспорте все эти годы. Поэтому все эти числа можно смело умножать на 2. Те, у кого есть дети, знают насколько "бьёт" по карману содержание детей.
По факту получается, что рядовой российской семье квартира в Москве никогда не светит. В противном родителям придётся более 20 лет работать, чтобы уже ближе к старости получить эти убогие 60 квадратных метров в муравейнике.
Квартиры в Москве доступны... только москвичам. Какой-то заколдованный круг.
Для сравнения:
Ростовская область - 52100 руб.
Краснодарский край - 58256 руб.
Волгоградская область - 51833 руб.
Средняя по всей России - 74854 руб.
Согласно данным Циана в 2023 года стоимость среднего московского квадратного метра в новостройке была 291000 рублей.
Теперь предположим, что у нас семья из 4 человек - мама, папа, двое детей. Оба родителя работают (хотя часто один не работает, но, ладно, пусть работают оба). Такая семья должна жить в человеческих условиях, а не в однушках или в "студиях", прости-господи. Адекватная (!) минимальная площадь квартиры должна быть от 60 м2 для 4 человек, т.е. каждому хотя бы по 15 м2.
Таким образом, чтобы купить такую квартиру им нужно 60 * 2910000 = 17,46 млн рублей.
Давайте теперь считать - сколько месяцев должны работать родители, причем не есть, не пить, не платить коммуналку, не покупать одежду и прочее, чтобы накопить на такую московскую квартиру.
Ростовская область: 17460000 / (52100 * 2) = 167 месяцев = 13,9 лет.
Краснодарский край: 17460000 / (58256 * 2) = 150 месяцев = 12,5 лет.
Волгоградская область: 17460000 / (51833 * 2) = 168 месяцев = 14 лет.
"Средняя" Россия: 17460000 / (74854 * 2) = 116 месяцев = 9,7 лет.
Москва: 17460000 / (138882 * 2) = 63 месяца = 5,2 лет.
Разумеется, это нереалистично-оптимистичные подсчёты. Людям надо чем-то питаться, им придётся платить за электричество и проезд в общественном транспорте все эти годы. Поэтому все эти числа можно смело умножать на 2. Те, у кого есть дети, знают насколько "бьёт" по карману содержание детей.
По факту получается, что рядовой российской семье квартира в Москве никогда не светит. В противном родителям придётся более 20 лет работать, чтобы уже ближе к старости получить эти убогие 60 квадратных метров в муравейнике.
Квартиры в Москве доступны... только москвичам. Какой-то заколдованный круг.
Пишу, может кому поможет.
Дано авто: Форд Фокус 3 2013 года выпуска (дорестайлинговая версия), двигатель 1,6 л, 125 лс.
Сажусь в машину, завожу ключом, но машина лишь издаёт "чик-чик-чик" и гаснет экран. Сразу мысль на аккумулятор - я его не менял с момента покупки авто, а уже прошло 11 лет. Вообще, это мегарекорд для обычного автомобильного аккумулятора, обычно они 3-7 лет служат.
Нахожу на Авито объявление "прикурить/заменить" аккум. Звоню, выбираю аккум, через полчаса приезжает человек, меняет аккумулятор. Делов на 10 минут.
Кстати, на ютубе есть ролик, где человек на Фокусе 3 меняет аккумулятор и сначала снимают плюсовую клемму. Так вот это небезопасно, может долбануть током!
Вообще, до этого у меня был Ford Focus 2 и там была похожая проблема на пробеге в 100 тысяч, только машина делала при повороте ключа не "чик-чик-чик", а "пзиууу" и тоже не заводилась. Там проблема оказалась в бендиксе стартера. Но в нынешней проблеме обошлось минимальными трудностями, а я терпеть не могу по автосервисам ездить и тратить на них своё время.
Человек, который менял на моём Форде АКБ тоже удивился, когда узнал, что батарея родная за более чем 11 лет, в его опыте это тоже рекорд службы. На российских фордах тогда ставили вроде бы немецкие Варты, как теперь видно очень хорошая фирма оказалась.
Любопытно, что у меня даже в ключе стоит до сих пор родная батарейка. Разобрал ключ - CR 2032 3V Panasonic. Во раньше качество делали!
Дано авто: Форд Фокус 3 2013 года выпуска (дорестайлинговая версия), двигатель 1,6 л, 125 лс.
Сажусь в машину, завожу ключом, но машина лишь издаёт "чик-чик-чик" и гаснет экран. Сразу мысль на аккумулятор - я его не менял с момента покупки авто, а уже прошло 11 лет. Вообще, это мегарекорд для обычного автомобильного аккумулятора, обычно они 3-7 лет служат.
Нахожу на Авито объявление "прикурить/заменить" аккум. Звоню, выбираю аккум, через полчаса приезжает человек, меняет аккумулятор. Делов на 10 минут.
Кстати, на ютубе есть ролик, где человек на Фокусе 3 меняет аккумулятор и сначала снимают плюсовую клемму. Так вот это небезопасно, может долбануть током!
Вообще, до этого у меня был Ford Focus 2 и там была похожая проблема на пробеге в 100 тысяч, только машина делала при повороте ключа не "чик-чик-чик", а "пзиууу" и тоже не заводилась. Там проблема оказалась в бендиксе стартера. Но в нынешней проблеме обошлось минимальными трудностями, а я терпеть не могу по автосервисам ездить и тратить на них своё время.
Человек, который менял на моём Форде АКБ тоже удивился, когда узнал, что батарея родная за более чем 11 лет, в его опыте это тоже рекорд службы. На российских фордах тогда ставили вроде бы немецкие Варты, как теперь видно очень хорошая фирма оказалась.
Любопытно, что у меня даже в ключе стоит до сих пор родная батарейка. Разобрал ключ - CR 2032 3V Panasonic. Во раньше качество делали!
Государственный исторический музей - замечательное место, обязательно стоит пойти.
Есть масса интересных исторических экспонатов.
Личный автомобиль Ленина? Пожалуйста!
Есть масса интересных исторических экспонатов.
Личный автомобиль Ленина? Пожалуйста!
Бивни мамонта с берегов Енисея.
Насколько хорошо вы знаете JavaScript?
Как в JS передаются значения - по ссылке или по значению? Не спешите, подумайте даже если вы "мидл" или синьор-помидор.
Можете в опросе ответить:
Как в JS передаются значения - по ссылке или по значению? Не спешите, подумайте даже если вы "мидл" или синьор-помидор.
let str1 = 'Famabara';
let str2 = str1; // Тут копия или новая строка?
let obj1 = { name: 'Famabara' };
let obj2 = obj1; // Тут копия или новый объект?
Можете в опросе ответить:
Как передаются значения при присвоении в переменную или в свойство объекта?
Теперь посмотрим, что нам говорит learn.javascript.ru - очень популярный в рунете учебник JavaScript:
А теперь давайте запустим в NodeJS такой код:
После запуска смотриим программой top потребление ресурсов:
Теперь изменим немного код:
Смотрим ещё раз через top:
Программа потребила всего 73 Мб вместо 1 Гб. Согласно популярной теории о копировании примитивов такого быть не должно. ;)
В чем разница между двумя примерами кода? В первом случае мы всякий раз создаём новую строку, а а во втором - пихаем в массив ту же самую строку из созданной переменной. Если вы вдруг подумали, что во втором случае надо предварительно поместить значение в переменную-посредник, а потом уже пушить в массив, то нет - это не поможет, оперативка жраться всё равно не будет.
Кстати, на ноде в Windows 10 аналогичное поведение - около 1 Гб потребление против менее 100.
Ну, а теперь главный секрет! :)
В JavaScript всё передаётся/копируется по ссылке!
const arr = [];
for (let i = 0; i < 1200200; i++) {
arr.push('0123456789'.repeat(1000 * 1000));
}
while (true) {
}
После запуска смотриим программой top потребление ресурсов:
39858 dima 20 0 2026180 1,0g 37824 R 100,0 3,2 0:21.44 nodeНа моей Кубунте сожрано 1 Гб оперативки. Ух ты.
Теперь изменим немного код:
const arr = [];
const text = '0123456789'.repeat(1000 * 1000);
for (let i = 0; i < 1200200; i++) {
arr.push(text);
}
while (true) {
}
Смотрим ещё раз через top:
40267 dima 20 0 1066148 73796 37440 R 99,7 0,2 0:12.27 node
Программа потребила всего 73 Мб вместо 1 Гб. Согласно популярной теории о копировании примитивов такого быть не должно. ;)
В чем разница между двумя примерами кода? В первом случае мы всякий раз создаём новую строку, а а во втором - пихаем в массив ту же самую строку из созданной переменной. Если вы вдруг подумали, что во втором случае надо предварительно поместить значение в переменную-посредник, а потом уже пушить в массив, то нет - это не поможет, оперативка жраться всё равно не будет.
Кстати, на ноде в Windows 10 аналогичное поведение - около 1 Гб потребление против менее 100.
Ну, а теперь главный секрет! :)
В JavaScript всё передаётся/копируется по ссылке!
Популярность Vue.js в 2024
1 г. назад
Это перевод моего англоязычного поста - https://famabara.com/posts/108
Попытаюсь измерить попурлярность Vue.JS. Я очень люблю этот фреймворк, поэтому всецело за его популяризацию :)
Сначала давайте посмотри на статистику скачиваний на NPM.
Сейчас и год назад:
Как видно, по абсолютным значенияем React на первом месте. Ну, а VueJS занимает только второе место.
А теперь посмотрим на относительный рост в процентах по отношению к прошлому году.
vue +29,9%
angular +13,3%
react +15,6%
Ура! Популярность Вью растёт быстрее, чем у остальных из "большой троицы".
Ну а теперь пройдусь по сайтам из топа Гугла и посмотрим, какие там используются фреймворки.
Попытаюсь измерить попурлярность Vue.JS. Я очень люблю этот фреймворк, поэтому всецело за его популяризацию :)
Сначала давайте посмотри на статистику скачиваний на NPM.
Сейчас и год назад:
vue - 4,868,119 - 3,746,361
@angular/core - 3,416,382 - 3,015,855
react - 23,763,131 - 20,548,838
@angular/core - 3,416,382 - 3,015,855
react - 23,763,131 - 20,548,838
Как видно, по абсолютным значенияем React на первом месте. Ну, а VueJS занимает только второе место.
А теперь посмотрим на относительный рост в процентах по отношению к прошлому году.
vue +29,9%
angular +13,3%
react +15,6%
Ура! Популярность Вью растёт быстрее, чем у остальных из "большой троицы".
Ну а теперь пройдусь по сайтам из топа Гугла и посмотрим, какие там используются фреймворки.
В качесте тестового запроса взял англоязычный запрос "rent car".
Юзал Wappalyzer - это расширение для браузера, чтобы детектить используемые технологии.
Вот список сайтов; NF - означает "нет фреймворка из большой троицы".
rentalcars.com - NF
enterprise.com - NF
kayak.com - React
avis.com - NF (есть старый AngularJS)
localrent.com - Vue
hertz.com - NF (есть старый BackboneJS)
sixt.com - React
budget.com - NF (есть старый AngularJS)
zipcar.com - NF
turo.com - React
autoeurope.eu - NF
alamo.com - React
rent.toyota.co.jp - NF
booking.com - React
costcotravel.com - React
borent.nl - NF
europcar.com - Vue
turo.com - React
vipcars.com - NF
skyscanner.net - React
tripadvisor.com - NF
timescar-rental.com - NF
klook.com - Vue
wiberrentacar.com - Vue
uber.com - NF
dollar.com - React
edreams.com - Vue
nationalcar.com - NF
thrifty.com - NF
Ну что, всё очень неплохо для Vue.JS! Он постепенно захватывает англоязычные сайты.
Юзал Wappalyzer - это расширение для браузера, чтобы детектить используемые технологии.
Вот список сайтов; NF - означает "нет фреймворка из большой троицы".
rentalcars.com - NF
enterprise.com - NF
kayak.com - React
avis.com - NF (есть старый AngularJS)
localrent.com - Vue
hertz.com - NF (есть старый BackboneJS)
sixt.com - React
budget.com - NF (есть старый AngularJS)
zipcar.com - NF
turo.com - React
autoeurope.eu - NF
alamo.com - React
rent.toyota.co.jp - NF
booking.com - React
costcotravel.com - React
borent.nl - NF
europcar.com - Vue
turo.com - React
vipcars.com - NF
skyscanner.net - React
tripadvisor.com - NF
timescar-rental.com - NF
klook.com - Vue
wiberrentacar.com - Vue
uber.com - NF
dollar.com - React
edreams.com - Vue
nationalcar.com - NF
thrifty.com - NF
Ну что, всё очень неплохо для Vue.JS! Он постепенно захватывает англоязычные сайты.
Мел Брукс получил почётный Оскар
1 г. назад
Мел Брукс один из моих любимых режиссёров, очень нравятся его пародии. Оказывается, в этом году он получил почётный Оскар - "Премия за выдающиеся заслуги в кинематографе". Это как бы отдельная премия вне "текущего сезона", ею награждают видных кинодеятелей.
Автор фото: KEVIN WINTER/GETTY
Оскар вполне заслуженный, он классный пародийный режиссёр.
Мы с женой очень любим пересматривать "Дракула: Мёртвый и довольный" (Dracula: Dead and Loving It). Комедия особенно хороша в переводе Сербина.
Оскар вполне заслуженный, он классный пародийный режиссёр.
Мы с женой очень любим пересматривать "Дракула: Мёртвый и довольный" (Dracula: Dead and Loving It). Комедия особенно хороша в переводе Сербина.
Целая детективная история разыгралась на моём сервере.
Дано: небольшой арендуемый у хостера сервер с Debian 12 и последней PostgreSQL 16. Постгрес стоит без всяких докеров.
Месяц назад начал тормозить сервак. Думаю, что за ерунда, захожу по SSH, ввожу:
Зарождается слабая мысль о криптомайнерах, но пока не понимаю, как вирус проник на сервер. Пароль у рута сложный, да и тут про постгрес написано.
В общем, думаю - ну, заглючил PostgreSQL, наверное. Убиваю процесс и перезагружаю сервак (это всегда полезно):
Потом опять тормоза через некоторое время. Смотрю - эта хрень опять запущена. И странно как-то всё, причём тут юзер postgres?
Полез гуглить. Про этот kswapd и нагрузку на проц много разрозненных сообщений. Народ про него пишет и 2013, и в 2017, а у меня вообще-то 2024 на дворе, а ведь в те годы не было ещё криптовалют.
Может это не криптомайнер, а что-то другое?
Дано: небольшой арендуемый у хостера сервер с Debian 12 и последней PostgreSQL 16. Постгрес стоит без всяких докеров.
Месяц назад начал тормозить сервак. Думаю, что за ерунда, захожу по SSH, ввожу:
topи вверху поверх всякой мелочи вижу это:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2251 postgres 20 0 2445140 2,3g 4 S 400,7 14,7 6:20.66 kswapd0Жрёт все ресурсы, процессор загружен полностью.
Зарождается слабая мысль о криптомайнерах, но пока не понимаю, как вирус проник на сервер. Пароль у рута сложный, да и тут про постгрес написано.
В общем, думаю - ну, заглючил PostgreSQL, наверное. Убиваю процесс и перезагружаю сервак (это всегда полезно):
kill 2251 rebootЗахожу по SSH снова - чисто. Ну, думаю, всё ок.
Потом опять тормоза через некоторое время. Смотрю - эта хрень опять запущена. И странно как-то всё, причём тут юзер postgres?
Полез гуглить. Про этот kswapd и нагрузку на проц много разрозненных сообщений. Народ про него пишет и 2013, и в 2017, а у меня вообще-то 2024 на дворе, а ведь в те годы не было ещё криптовалют.
Может это не криптомайнер, а что-то другое?
Пытаюсь понять, кто запускает процесс. Делаю:
Решаю просто переименовать каталог:
Через эти пару недель опять веселуха с загрузкой всех ядер процессора.
Смотрю - каталог снова создан. Значит точно криптовалютный вирус. Но как зараза проникла на сервер?
Наконец-то до моей глупой головы дошло посмотреть логи SSH:
Фильтрую только логи успешного входа по SSH:
Ради интереса проверил айпишники:
103.94.113.2 - India
162.217.64.26 - USA
206.189.36.236 - Singapore
103.146.52.138 - Hong Kong
Целый ботнет. Или VPN-ы. Не знаю, да и это не важно.
Начинаю вспоминать, что когда ставил PostgreSQL, создавал примитивный пароль. Или вообще не задавал его - точно не помню.
Срочно меняю пароль юзеру postgres:
Перезагружаем SSH демона:
Кстати, это зараза прописала SSH-ключ в:
ls -l /proc/2251/exeвыводит:
lrwxrwxrwx 1 postgres postgres 0 июл 23 13:12 /proc/2251/exe -> /var/lib/postgresql/.configrc5/a/kswapd0Такс... Находится в каталоге postgresql. А вдруг это важная часть сервера базы данных? Названо ведь так "по-умному" - configrc5.
Решаю просто переименовать каталог:
kill 2251 cd /var/lib/postgresql mv .configrc5 _renamed_.configrc5 rebootПосле этого всё хорошо... но только пару недель :)
Через эти пару недель опять веселуха с загрузкой всех ядер процессора.
Смотрю - каталог снова создан. Значит точно криптовалютный вирус. Но как зараза проникла на сервер?
Наконец-то до моей глупой головы дошло посмотреть логи SSH:
journalctl -t sshdОпытные линуксоиды знают, что так смотреть не имеет смысла. Там толпы кул-хацкеров пытаются подключиться к серверу, но обламываются.
Фильтрую только логи успешного входа по SSH:
journalctl -t sshd --since "2024-08-01" --until "2024-08-16 10:00:00" | grep "Accepted "И там среди моих заходов вижу эту падлюку:
Jul 06 11:40:07 debian sshd[589266]: Accepted password for postgres from 103.94.113.2 port 33482 ssh2 Jul 10 08:18:00 debian sshd[723300]: Accepted publickey for postgres from 162.217.64.26 port 60366 ssh2: RSA SHA256:MkYY9qiVsFGBC5WkjoClCkwEFW5iSjcGQF7m4n4H7Cw Aug 02 07:45:44 debian sshd[258599]: Accepted publickey for postgres from 206.189.36.236 port 47140 ssh2: RSA SHA256:MkYY9qiVsFGBC5WkjoClCkwEFW5iSjcGQF7m4n4H7Cw Aug 02 07:50:53 debian sshd[258915]: Accepted publickey for postgres from 157.245.42.37 port 50478 ssh2: RSA SHA256:MkYY9qiVsFGBC5WkjoClCkwEFW5iSjcGQF7m4n4H7Cw Aug 14 10:23:08 debian sshd[99132]: Accepted publickey for postgres from 82.165.79.77 port 40086 ssh2: RSA SHA256:MkYY9qiVsFGBC5WkjoClCkwEFW5iSjcGQF7m4n4H7Cw Aug 14 10:47:37 debian sshd[99723]: Accepted publickey for postgres from 103.146.52.138 port 55110 ssh2: RSA SHA256:MkYY9qiVsFGBC5WkjoClCkwEFW5iSjcGQF7m4n4H7CwЁлы-палы! Сначала чувак вошёл по паролю, а потом уже входил по ключу.
Ради интереса проверил айпишники:
103.94.113.2 - India
162.217.64.26 - USA
206.189.36.236 - Singapore
103.146.52.138 - Hong Kong
Целый ботнет. Или VPN-ы. Не знаю, да и это не важно.
Начинаю вспоминать, что когда ставил PostgreSQL, создавал примитивный пароль. Или вообще не задавал его - точно не помню.
Срочно меняю пароль юзеру postgres:
passwd postgresи ставлю запрет входа SSH для определённых юзеров:
nano /etc/ssh/sshd_config
DenyUsers postgres no-reply blahВ идеале, конечно вообще всем запретить, а оставить только для разрешённых.
Перезагружаем SSH демона:
systemctl restart sshd
Кстати, это зараза прописала SSH-ключ в:
/var/lib/postgresql/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEArDp4cun2lhr4KUhBGE7VvAcwdli2a8dbnrTOrbMz1+5O73fcBOx8NVbUT0bUanUV9tJ2/9p7+vD0EpZ3Tz/+0kX34uAx1RV/75GVOmNx+9EuWOnvNoaJe0QXxziIg9eLBHpgLMuakb5+BgTFB+rKJAw9u9FSTDengvS8hX1kNFS4Mjux0hJOK8rvcEmPecjdySYMb66nylAKGwCEE6WEQHmd1mUPgHwGQ0hWCwsQk13yCGPK5w6hYp5zYkFnvlC8hGmd4Ww+u97k6pfTGTUbJk14ujvcD9iUKQTTWYYjIIu5PmUux5bsZ0R4WFwdIe6+i6rBLAsPKgAySVKPRK+oRw== mdrfckrРазумеется это надо сразу удалять.




















