Леонид Павлов. "It specialist's tricks"
14 subscribers
77 photos
7 videos
5 files
59 links
Keep calm, no spam.
Download Telegram
Идти в айти?
😁1
# Ну почему

JS, ну почему? Ты же позиционируешься как кросс-платформенный язык... Почему при запуске на разных ОС, у тебя совершенно непредсказуемое поведение? Казалось бы, аргумент для выполнения тестов --runInBand -- всего лишь включающий запуск отдельных тестов в разных процессах, вместо подпроцессов. Почему он везде работает нормально, под windows, под ubuntu, но на alpine системе, он вызывает exit code 1 даже при успешном прохождении тестов. Впустую потраченные часы на поиск проблемы и debug... Сначала грешил на npx, затем на cross-env, даже на окружение и возможное совпадение или конфликт его переменных. Пришлось завернуть все в Docker-in-Docker и только так получилось идентифицировать проблему, убирая друг за другом, все вызовы команд, пока не стало ясно, что проблема в jest. Если бы не парни из issue JEST tests complete successfully but returns exit status 1 · Issue #9324 · jestjs/jest · GitHub — то НИКОГДА В ЖИЗНИ я бы не догадался, что дело в одном единственном аргументе, который даже чисто теоретически не может лежать рядом с функционалом выбрасывания кода выхода ПРИ УСПЕШНЫХ ТЕСТАХ.

PS. C# как же я по тебе скучаю... Да, ты нудный, костноязычный, старпёрский, но блин, СТАБИЛЬНЫЙ.
Forwarded from DevHumor
Есть два стека...

DevHumor
😁1
# new level
Помогаю с настройкой своей библиотеки, работяге. Странное чувство. Как будто на работе.
🔥1
почему программисты больше получают чем аналитики? Вопрос заменяемости. Без программиста можно будет качественно запланировать процесс, но нельзя реализовать его. Без аналитика не идеально, но реализовать процесс можно. Поэтому когда в организации нет аналитики - она теряет деньги, т.к. труд программиста дороже, чем труд аналитика. А в задачах, обычно , аналитики больше, чем программирования, грубо 1 к 3. Можно посчитать, если задача на 8 часов, и ЗП аналитика 100к, а программиста 200к. Возьмём за месяц 4 недели, по 40 рабочих часов.
Затраты на аналитика: 100к/160 = 625₽/ч
Затраты на программиста: 200к/160 = 1250₽/ч
Значит при связке:
- аналитик+программист, мы тратим на задачу
2ч разработки, и 6ч аналитики, или в деньгах: 6250₽
- только программист, 8ч разработки плюс аналитики: 10000₽
Crowdstrike рассказала, что падение вызвано ошибкой в блокировке named_pipes.

Да уж, помню намучался я с этим межпроцессным взаимодействием, когда на .NetCore с ними работал. В итоге выбрал REST.
PS. Задачка со звёздочкой:
Реализовать ping-pong на именованных пайпах. 😁
Please open Telegram to view this post
VIEW IN TELEGRAM
Channel name was changed to «Леонид Павлов. "It specialist's tricks"»
Попалась научная работа от Hussam Hourani и Thamer Alrawashdeh (Al-Zaytoonah University of Jordan) с какой-то забугорной конференции 2019 года, они разработали свой метод подсчета сложности кода, перелопатив: MOOD and MOOD2 metric suite (Abreu, 1995), Lorenz and Kidd metric suite (Lorenz & Kidd, 1994), Design metrics for testing (Binder 1994), product metrics for object-oriented design (Purao&Vaishnavi 2003, Vaishnavi et al 2007), Henderson–Sellers metrics (Henderson–Sellers 1996) и многие другие методы.

2O2C (Object Oriented Code Complexity) - основан на множестве моделей измерения сложности кода, придуманных до этого. В основе лежит модель Чидамбера и Кемерера, с добавлением оценки по качеству абстракции и детальной (подробной) сложности класса (DCC).

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

возможность повторного использования кода может сэкономить огромную сумму денег для организации

это улучшит качество кода, повысит надежность и увеличит отдачу от инвестиций


Суть критериев:
- Больше абстракции, меньше деталей использования.
- Не создавать дерево наследования, больше чем в 6 уровней.
- Не наследоваться от одного класса, слишком большим количеством дочерних классов.
- Более 20% покрытия комментариями
- Меньше строк в методах (не считая пустых и комментариев)
- Меньше параметров в методах
- Меньше переменных внутри метода
- Меньше цикломатической сложности - ветвей, условия и переходов в другие методы
- Выше "cohesion" методов внутри класса - схожесть задачи, которую решают методы, например: хорошо, когда все методы в классе отвечают за взаимодействие с сетью, и плохо, когда некоторые методы отвечают за взаимодействие с сетью, некоторые за БД и некоторые за файлы, и один занимается base64 шифрованием.
- Меньше атрибутов в классах
- Меньше методов в классах
- Меньше связность объектов
Соцсети для военных? ВК нужно начинать беспокоиться? Или они тоже скоро поддержат эти фичи 😀
❗️Военнослужащие российской армии получат специальное приложение для планшетов с интерактивными картами и другим функционалом, существенно расширяющим возможности боевых подразделений, пишут «Известия».

Оно позволит бойцам не только видеть расположение своих сил или сил противника, но и наносить координаты целей, а также просить поддержки артиллерии или авиации в режиме реального времени. Также приложение позволяет военным напрямую общаться друг с другом в специальных чатах. Оно получило название "Комплекс повышения осведомленности" (КПО-А)".
#tip
Сохранение базового состояния клиента, для воспроизведения багов:

// Export Local Storage
let localStorageData = JSON.stringify(Object.fromEntries(Object.entries(localStorage)));

// Export Session Storage
let sessionStorageData = JSON.stringify(Object.fromEntries(Object.entries(sessionStorage)));

// Export Cookies
let cookies = document.cookie.split('; ').reduce((acc, cookie) => {
let [name, ...rest] = cookie.split('=');
acc[name] = rest.join('=');
return acc;
}, {});
let cookiesData = JSON.stringify(cookies);

console.log('Local Storage:', localStorageData);
console.log('Session Storage:', sessionStorageData);
console.log('Cookies:', cookiesData);
👍1
Опрос StackOverflow за 2024

Выделил интересное для себя (смотрел результаты только среди профи):
🔵34% профессиональных разработчиков не имеют полного высшего образования и 45% имеют хотя-бы бакалавра — напомню, это международный опрос, поэтому могут не получать образование как европейцы, которые считают его ненужным, так и индусы/пакистанцы и пр. у которых нет такой возможности. Но так как топ 10 стран (50%) это европа и сша, из которых 7% — индия, врятли неразвитые страны сильно повлияли на этот показатель, а значит — многие сознательно считают высшее образование для программирования не востребованным.
🔵C# на 9 месте среди популярных языков. Топ 3 — python -> js -> SQL. Забавно, что начали появляться SQL senior разработчики и SQL oriented команды. Т.е. вполне реально заучить только SQL и уже быть каким-никаким senior. (топ не только языков, но и языков разметки и скриптов, так что не удивляемся наличию в топе HTML/CSS и Shell)
🔵Есть большая потребность в frontend/fullstack профессионалах. Как я понял это, если в рейтинге этого нет? Просто потому что несмотря на то, что это один из крупнейших в мире сайтов для разработчиков — всеравно при переключении графиков рейтинга, перестают отрисовываться данные, приходится по нескольку раз перезагружать страницу. И да, в инкогнито и без расширений — то же самое. А так же по сути простейшая лендинг страница, грузится несколько секунд, что явно указывает на плохую оптимизацию, или на подготовку данных на лету, что вполне можно было сделать один раз подготовив данные для выдачи, или хотябы закэшировать в браузере.
🔵Почти 30% отчета посвящено ИИ, практически как и в прошлом году, так что тенденция такая, что никуда это не денется, и нужно учиться с этим работать. Что уж греха таить, мне сильно помогает ИИ анализировать 500 страничные источники, помогая выделять из них основные мысли или конкретные главы, чтобы не читать всё, иначе жизнь пролетит мимо.
🔵Postgres — ❤️
🔵Amazon и Azure — в топе облачных платформ, но Azure при этом уступает Jira и Confluence в качестве управления проектами и командами.
🔵ASP.Net core, родненький, на 5-м месте, после 4-х JS фреймворков. Удивлен, что JQuery еще жив и входит в эти топ 5.
🔵Docker и npm знает и использует каждый 2-й разработчик.
🔵Vim — топ 5, среди IDE для разработки 🤩
🔵Средняя ЗП C# в мире — $5500, делаем поправку на налоги и регион, до 30% в среднем, получаем 330к руб. Учитываем, что разрыв ЗП между джунами и миддлами сильно выше, чем между миддлами и сеньорами, можно делать вывод что такая ЗП соответствует уровню june++, middle-.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
# Принудительный запрос логина и пароля через браузер
Если вам нужно заставить браузер показать стандартный диалог для ввода логина и пароля (например, для базовой аутентификации), при использовании HTTP Basic Authentication сервер может вернуть ответ с заголовком WWW-Authenticate, который заставит браузер показать стандартный диалог ввода логина и пароля. Это делается на уровне сервера, а не клиента.

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="User Visible Realm"
👍1
Прямо сейчас идет презентация MadeByGoogle. И прямо во время живой демонстрации, Gemini AI выдает ошибки при работе. Что может говорить как о сырости продукта или кривости интеграции с Samsung, так и о том, что даже мега-компании делают ошибки. Поэтому не стоит расстраиваться, если совершили ошибку. Главное — какие выводы были сделаны.

https://www.youtube.com/watch?v=N_y2tP9of8A
🤯1
Галеры:
- У нас всё на доверии, главное чтобы задачи выполнялись.

Супер классная компания, мимими:
- Мы же платим за РАБОТУ, а не за то время, которое разраб ходит кофе наливать, он же в это время не работает.
👍1
Начиная с .net 8 появился стандартный шаблон нового проекта "Web API (native AOT)" — это что-то вроде self-contained приложения на выходе, после компиляции, но мелкомягкие привнесли туда несколько фич, связанных с быстродействием и оптимизацией использования ресурсов. Видимо рассчитано на облачный рой микросервисов.

Вот выдержка из оригинальной статьи:

Публикация вашего приложения в качестве нативного AOT позволяет создать автономное приложение, предварительно скомпилированное в машинный код (AOT). Нативные приложения AOT быстрее запускаются и занимают меньше места в памяти. Эти приложения могут запускаться на компьютерах, на которых нет встроенного AOT-интерфейса.Установлена среда NET runtime.

Преимущества встроенного AOT наиболее значимы для рабочих нагрузок с большим количеством развернутых экземпляров, таких как облачная инфраструктура и гипермасштабируемые сервисы. В .NET 8 добавлена ASP.NET Базовая поддержка встроенного AT.

В собственной модели развертывания AOT используется компилятор с опережением времени для компиляции IL в машинный код во время публикации. Собственные приложения AOT не используют JIT-компилятор при запуске приложения. Собственные приложения AOT могут запускаться в ограниченных средах, где JIT не разрешен. Собственные приложения AOT ориентированы на определенную среду выполнения, такую как Linux x64 или Windows x64, точно так же, как публикуются автономные приложения.


https://learn.microsoft.com/ru-ru/dotnet/core/deploying/native-aot/?tabs=net8plus%2Cwindows
🔓 Achievement unlocked:
Найти работу 🏢 за две недели, не откликаясь ни на одну вакансию.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1🤯1