Нет времени уведомлять сообщника, нужен срочный запуск убийства. https://ozon.ru/t/rZVXMYB
Довелось почитать немного исходники популярных логеров...
Это работает потому что в JS при выполнении булевых операторов возвращается не булевое значение true/false, а последнее truthy значение.
Я такое не одобряю. Лучше написать больше, но понятнее.
Следующая строка тоже радует.
В Pino логере тоже они забавно делают - непривычно на самом деле видеть что-то такое:
Ребята в курсах про hoisting - это здорово, но вот нафиг оно, блин, надо было?
Как по мне - за такие хакерства в приличном обществе должны проходиться канделябрами по лицу, а не звёзды тысячами ставить на gh:)
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 - них есть конечно нечто подобное (нужно в полученном поддомене дописать
Короче вот мой флоу:
Дано - приложение стартует на порте 3000
Запускаем port forwarding в vscode для порта 3001
Запускаем mitmweb и настраиваем проксирование запросов с порта 3001 на порт 3000 (
Получаем полнофункциональный инспектор запросов
Говоря об ms devtunnel - них есть конечно нечто подобное (нужно в полученном поддомене дописать
-inspect
после порта), но проблема в том что консоль ппц кривая - например у меня не работает нормально повтор запроса, да и интерфейс там тупит.Короче вот мой флоу:
Дано - приложение стартует на порте 3000
Запускаем port forwarding в vscode для порта 3001
Запускаем mitmweb и настраиваем проксирование запросов с порта 3001 на порт 3000 (
mitmweb --listen-port 3001 --mode=reverse:http://localhost:3000
)Получаем полнофункциональный инспектор запросов
Нот бэд подборочка https://waspdev.com/articles/2025-04-06/features-that-every-js-developer-must-know-in-2025?utm_source=ECMAScript.news&utm_medium=Weekly+Newsletter&utm_campaign=2025-04-09
WaspDev Blog
Some features that every JavaScript developer should know in 2025
The list of JavaScript features that every web developer should know in 2025 in order to efficiently code in JavaScript.
С обновленьицем меня, апгрейднулся с Ubuntu 18.04 до 24.04 на своей vps (а вообще-то начало было ещё на 14.04 10 лет назад):)
Странное дело - одно из обновлений затащило кучу десктопных зависимостей несмотря на
Кстати в плане обновлений я теперь Debian зауважал, также беспроблемно недавно апгрейдил впску с 9 до 12, причём не считая рутину с редактированием apt sources, обновление происходит ГОРАЗДО быстрее чем в убунте.
Странное дело - одно из обновлений затащило кучу десктопных зависимостей несмотря на
-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-х, уж неужели нельзя нормальный дизайн сделать?
Казалось бы - simply и xfce - должно ведь работать лучше, не так ли?
А вот фиг там, если на федоре в этот маджонг ещё можно было нормально играть, то на симпли она еле как идёт. Но тут подозреваю конечно разница за счёт wayland / X.
В остальном конечно вроде бы и нормальная система (
Короче я тут в прошлом месяце ставил дебиан на мак….
Если подумываете о том же то вот главные причины почему это делать не стоит
1) забываем про suspend. Нет, он, конечно, работает, но после выхода из сна отрыгивает модуль wifi. Вас не спасет ребут, только выключение и включение. Пока я случайно не догадался до этого, я два дня перебирал разные модули ядра и настройки, но проблема в том что пробуждение устройства вайфайного эппл конечно же испортили и пробудить устройство нереально
2) микрофон не работает. Я пробовал разные модули ядра и хаки, но ничего не помогло - звук есть, микрофона нет. Опять же, после выхода из сна звук тоже, бывает, отваливается.
3) производительность не сильно то и выше. Гном работает в целом неплохо, тормозов не заметил даже в режиме 2к с масштабированием. Но как только начинаешь запускать тяжелые приложения сразу же получаешь тормоза. Моя надежда была на лучшую производительность Docker под линуксом чтобы юзать этот мак в качестве выездного устройства - увы, 8гб озу это 8гб озу
4) не работает один и двух usb-c портов. Точнее он работает, но только для зарядки. Заставить его работать нормально не получилось никакими костылями
5) установка дебиана была конечно потрясающей - клавиатура и тачпад тупо не работали в инсталлере, скорее всего есть способ добавить нужные модули в образ, но я решил проблему с помощью проводной клавы и usb хаба
Железо на котором проводились изыскания: macbook pro 2017, 8gb ram, i5.
По поводу живучести сложно сказать, у меня батарея подуставшая уже, часов 6-7 он проработал в смешанном режиме
Вывод: если думаете купить старенький макбук под линукс - я бы не советовал. Либо использовать wifi адаптер, но учтите что работает только один usb порт (на четырех портовых возможно будет по другому).
Если подумываете о том же то вот главные причины почему это делать не стоит
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 (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)
lsof -p 12345
lsof -ni
lsof -ni TCP:80
lsof -ni TCP@192.168.1.10
lsof -ai -u nginx
lsof -iUDP
lsof - это инструмент не только для отладки “куда делось место”, но и для быстрого анализа сетевых соединений, отлова "висячих" файлов и поиска активных пользователей.
#linux #lsof
Please open Telegram to view this post
VIEW IN TELEGRAM
Режет прям ухо название нового ваза, а оказалось что таки действительно правильно и’скра, а никакая не искра’. Офигеть.
И кстати ещё гофриро’ванный шланг и шарова’я опора.
Живи теперь с этим😅
И кстати ещё гофриро’ванный шланг и шарова’я опора.
Живи теперь с этим😅
А вы знали, что в JS два нуля? 🤯
Да-да, есть 0 и -0. И да, они равны (
Главный парадокс:
Где JS различает нули:
Математические операции:
Тригонометрия (сохраняет знак):
Специальные проверки:
Во всех прочих случаях, JS плевать на знак нуля:
Когда это может оказаться полезно?
Да фиг его знает на самом деле. Т.к. ведут себя эти нули одинаково в 99.99% случаев - я не смог придумать реальный кейс для этого.
Единственная функция, которая может опираться на разницу между 0 / -0 - Math.atan2. Это можно использовать для определения направления движения по единичной окружности:
Вообще в atan2 значения 0 и -0 тоже конечно выглядят как сова на глобусе (ну камон, кому вообще может понадобиться нулевой вектор?), тем не менее стоит учитывать этот факт.
Я лишь могу порекомендовать при разработке любых счётных функций не преобразовывать -0 к 0 нарочно и помнить об этом при покрытии тестами.
Да-да, есть 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...
Поражаюсь иногда - и как же мы вообще жили без реактивности на фронтенде, так это было грустно со всякими jQuery...