Tominoff
16 subscribers
68 photos
1 file
51 links
Мой уютненький
Download Telegram
Проценты - это дело такое конечно😂
Хороший конкурс и тамада весёлый (сегодня 29)
Нет времени уведомлять сообщника, нужен срочный запуск убийства. https://ozon.ru/t/rZVXMYB
Довелось почитать немного исходники популярных логеров...

const info = msg && msg.message && msg || { message: msg };


Это работает потому что в JS при выполнении булевых операторов возвращается не булевое значение true/false, а последнее truthy значение.

Я такое не одобряю. Лучше написать больше, но понятнее.

Следующая строка тоже радует.

info.level = info[LEVEL] = level;


В Pino логере тоже они забавно делают - непривычно на самом деле видеть что-то такое:

function transport(fullOptions) {
// ...
return buildStream(fixTarget(target), options, worker, sync)

function fixTarget (origin) {
// ...
}
}

Ребята в курсах про hoisting - это здорово, но вот нафиг оно, блин, надо было?

Как по мне - за такие хакерства в приличном обществе должны проходиться канделябрами по лицу, а не звёзды тысячами ставить на gh:)
В какой-то момент ngrok сказал нам "до свидания", и я перешёл на использование vscode port forwarding. Короче раньше всё было супер удобно, поскольку в ngrok был встроенный инспектор и всё запускалось одной командой, теперь приходится делать через жопу.

Говоря об ms devtunnel - них есть конечно нечто подобное (нужно в полученном поддомене дописать -inspect после порта), но проблема в том что консоль ппц кривая - например у меня не работает нормально повтор запроса, да и интерфейс там тупит.

Короче вот мой флоу:
Дано - приложение стартует на порте 3000
Запускаем port forwarding в vscode для порта 3001
Запускаем mitmweb и настраиваем проксирование запросов с порта 3001 на порт 3000 (mitmweb --listen-port 3001 --mode=reverse:http://localhost:3000)
Получаем полнофункциональный инспектор запросов
Скорость конечно прямиком из 2005-х. Потрясающее убожество
Tominoff
Photo
This media is not supported in your browser
VIEW IN TELEGRAM
Общение Олега это прям отдельный вид искусства
Рекомендации озона такие рекомендации. Действительно, чего бы и не заказать ещё раз эту книгу, как раз и цену подняли в два раза по случаю:)
С обновленьицем меня, апгрейднулся с Ubuntu 18.04 до 24.04 на своей vps (а вообще-то начало было ещё на 14.04 10 лет назад):)

Странное дело - одно из обновлений затащило кучу десктопных зависимостей несмотря на -m server, пришлось после обновления до 24 удалять кучу лишнего софта.

Кстати в плане обновлений я теперь Debian зауважал, также беспроблемно недавно апгрейдил впску с 9 до 12, причём не считая рутину с редактированием apt sources, обновление происходит ГОРАЗДО быстрее чем в убунте.
А вообще интересно у меня биполярочка сложилась - ВСЕ серверы я настраиваю на убунтах или дебианах, при этом десктоп у меня последние 4 года Fedora и я вообще не собираюсь больше возвращаться ни на убунту (если канониклы воскресят unity - обещаю подумать), ни на дебиан (это, да простит меня Басило, вообще что-то для извращенцев в качестве десктопа), ни на минт (cinnamon нормальная штука для low систем, но это не gnome)
Ах да, у меня ещё есть моноблок с, ВНЕЗАПНО, Simply linux :D И вот удивительное дело - изначально я запустил там федору с гномом и через вайн запускал древнюю игрушку kyodai mahjong, которая весьма неплохо шла на этой картошке.

Казалось бы - simply и xfce - должно ведь работать лучше, не так ли?

А вот фиг там, если на федоре в этот маджонг ещё можно было нормально играть, то на симпли она еле как идёт. Но тут подозреваю конечно разница за счёт wayland / X.

В остальном конечно вроде бы и нормальная система (apt с rpm, ага), но все эти Альтовские фентифлюшки я бы выпилил нахрен. Ну серьёзно, этот их alterator или как его там, панель управления - ну всё это говно мамонтовое из 2000-х, уж неужели нельзя нормальный дизайн сделать?
gnome moment:)
Короче я тут в прошлом месяце ставил дебиан на мак….

Если подумываете о том же то вот главные причины почему это делать не стоит
1) забываем про suspend. Нет, он, конечно, работает, но после выхода из сна отрыгивает модуль wifi. Вас не спасет ребут, только выключение и включение. Пока я случайно не догадался до этого, я два дня перебирал разные модули ядра и настройки, но проблема в том что пробуждение устройства вайфайного эппл конечно же испортили и пробудить устройство нереально
2) микрофон не работает. Я пробовал разные модули ядра и хаки, но ничего не помогло - звук есть, микрофона нет. Опять же, после выхода из сна звук тоже, бывает, отваливается.
3) производительность не сильно то и выше. Гном работает в целом неплохо, тормозов не заметил даже в режиме 2к с масштабированием. Но как только начинаешь запускать тяжелые приложения сразу же получаешь тормоза. Моя надежда была на лучшую производительность Docker под линуксом чтобы юзать этот мак в качестве выездного устройства - увы, 8гб озу это 8гб озу
4) не работает один и двух usb-c портов. Точнее он работает, но только для зарядки. Заставить его работать нормально не получилось никакими костылями
5) установка дебиана была конечно потрясающей - клавиатура и тачпад тупо не работали в инсталлере, скорее всего есть способ добавить нужные модули в образ, но я решил проблему с помощью проводной клавы и usb хаба

Железо на котором проводились изыскания: macbook pro 2017, 8gb ram, i5.

По поводу живучести сложно сказать, у меня батарея подуставшая уже, часов 6-7 он проработал в смешанном режиме

Вывод: если думаете купить старенький макбук под линукс - я бы не советовал. Либо использовать wifi адаптер, но учтите что работает только один usb порт (на четырех портовых возможно будет по другому).
Forwarded from NetworkAdmin.ru
⛔️ lsof - больше, чем просто список открытых файлов

Утилиту lsof (list open files) чаще всего используют для просмотра открытых файлов в Linux - и на этом, как правило, всё. Но возможности этой команды куда шире. Давайте разберёмся.

🔎 Основная задача: поиск открытых, но удалённых файлов

Это частый кейс: удалили лог-файл (/var/log/nginx/access.log), не перезапустили сервис - и место продолжает быть занятым.


lsof | grep '(deleted)'
# или так, короче:
lsof +L1


💎 Полезные команды по категориям

📍 Открытые файлы в каталоге:


lsof +D /var/log


📍 Открытые файлы от пользователя:


lsof -u user
# Посчитать, сколько файлов открыто:
lsof -u user | wc -l
# Исключить пользователя:
lsof -u^user | wc -l


📍 Завершить все процессы пользователя, открывшие файлы:


kill -9 $(lsof -t -u user)


📍 Файлы, открытые конкретным PID:


lsof -p 12345


💩 Сетевой режим - неочевидный, но мощный

📍 Список всех сетевых соединений (TCP и UDP):


lsof -ni


📍 Кто слушает порт 80:


lsof -ni TCP:80


📍 TCP соединения к конкретному IP:


lsof -ni TCP@192.168.1.10


📍 Сетевые соединения конкретного пользователя:


lsof -ai -u nginx


📍 UDP соединения:


lsof -iUDP


lsof - это инструмент не только для отладки “куда делось место”, но и для быстрого анализа сетевых соединений, отлова "висячих" файлов и поиска активных пользователей.

#linux #lsof

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
Режет прям ухо название нового ваза, а оказалось что таки действительно правильно и’скра, а никакая не искра’. Офигеть.
И кстати ещё гофриро’ванный шланг и шарова’я опора.

Живи теперь с этим😅
А вы знали, что в JS два нуля? 🤯

Да-да, есть 0 и -0. И да, они равны (-0 === 0), но не идентичны (Object.is(0, -0) === false).

Главный парадокс:
-0 === 0    // true
1/-0 === -Infinity // а 1/0 === Infinity


Где JS различает нули:

Математические операции:
assert.strict.equal(-0, 0) // Будет выброшена ошибка в тесте
Math.sign(-0) // -0 (да, не -1!)
Math.pow(-0, 3) // -0
Math.pow(-0, 2) // 0


Тригонометрия (сохраняет знак):
Math.atan2(-0, 1)  // -0
Math.sin(-0) // -0


Специальные проверки:
Object.is(0, -0)  // false


Во всех прочих случаях, JS плевать на знак нуля:
`${-0}` // -> "0"
JSON.stringify(-0) // "0"
Math.log(-0) // -Infinity (как и для +0)
[0, -0].sort() // [0, -0] (порядок сохраняется)
[-0].includes(0) // true, как и [0].includes(-0)


Когда это может оказаться полезно?
Да фиг его знает на самом деле. Т.к. ведут себя эти нули одинаково в 99.99% случаев - я не смог придумать реальный кейс для этого.

Единственная функция, которая может опираться на разницу между 0 / -0 - Math.atan2. Это можно использовать для определения направления движения по единичной окружности:

// Подход к точке (0,0) с разных сторон:
Math.atan2(0, 0) // 0 (подход по положительной оси X)
Math.atan2(-0, 0) // -0 (подход по отрицательной оси X)

// Подход к точке (0,0) с разных сторон оси Y:
Math.atan2(0, -0) // π (3.14...) // справа от оси Y
Math.atan2(-0, -0) // -π (-3.14...) // слева от оси Y


Вообще в atan2 значения 0 и -0 тоже конечно выглядят как сова на глобусе (ну камон, кому вообще может понадобиться нулевой вектор?), тем не менее стоит учитывать этот факт.

Я лишь могу порекомендовать при разработке любых счётных функций не преобразовывать -0 к 0 нарочно и помнить об этом при покрытии тестами.
Tominoff
Новая игрушечка - alpine.js Это такая микролиба, которая легко дружит с html - прям вспомнились старые добрые времена backbone и первого angularjs. По синтаксису как будто намешали всего по маленьку из всей фронтовой троицы - react, angular, vue. Больше…
В очередной раз удостоверился что alpine.js - лучшая либа для работы с классическими php-шными сайтами, где генерация идёт на сервере. Крайне легко расширять его в старом проекте даже спустя время.

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