Заметки разработчика. webdevin
91 subscribers
60 photos
8 videos
2 files
68 links
Заметки по разработке. Программирование, опыт, сервисы, новости, трюки.

Чат: @webdevin_chat
Download Telegram
https://www.conventionalcommits.org/ru/v1.0.0/
Соглашение о написании сообщении коммитов
Forwarded from КиберТопор
This media is not supported in your browser
VIEW IN TELEGRAM
Meta выпустила ИИ для генерации кода, которая превосходит GPT-4.

Code Llama 70B теперь можно запустить у себя на компьютере, бесплатно, без VPN и цензуры.

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

Запрашиваем доступ здесь.

🕹КиберТопор
Forwarded from Авва
В мире компьютерной безопасности сегодня интересный день. Точнее, он начался вчера вечером, когда немецкий разработчик Андрес Фройнд опубликовал отчет о тайной лазейке (бэкдор), которую он обнаружил в новых версиях широко используемой библиотеки для сжатия liblzma (часть архиватора xz). Лазейка позволяет взломщикам заходить через SSH на системы, в которых установлены эти новые версии - к счастью, похоже, что это всего несколько дистрибутивов Линукса в их до-релизовых версиях.

Всех очень впечатлило, насколько эта лазейка была сделана хитро, и как взломщик или взломщики серьезно поработали над тем, чтобы замести следы:

- взломщик под именем/псевдонимом Jia Tan почти два года (!) участвовал в разработке опенсорсного пакета xz, завоевал доверие его мейнтейнеров и получил доступ к прямому коммиту в его репозиторию. Он сделал больше 700 коммитов, лишь малая часть которых медленно подготовила код для лазейки

- основной код лазейки спрятан в тестовых файлах проекта (примеры "плохих" и "хороших" архивов)

- исходный код, который включает лазейку в собственно библиотеку, вообще не является частью основной репозитории в Github. Он спрятан в тар-архивах двух последних релизов, которые обычно используются мейнтейнерами дистрибутивов. То есть есть таг релиза, есть архив, якобы собранный из репозитории в момент этого тага, но на самом деле в нем есть крохотная добавка; в самой репозитории ее нет

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

- она проверяет, когда исходники конфигурируют именно для постройки дебиан-пакета или RPM-пакета (т.е. то, что будут делать мейтейнеры дистрибутивов), и только в этом случае вынимает из тестовых файлов определенные куски и добавляет в код библиотеки

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

- интересно, что openssh, стандартный SSH-сервер под линуксом, не использует библиотеку liblzma, в которую вставили эту лазейку, но несколько популярных дистрибутивов добавляют в него поддержку уведомлений системы, systemd, а библиотека libsystemd уже в свою очередь использует liblzma.

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

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

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

Теперь все думают, что надо было/надо теперь делать по-другому, и как обнаружить следующую лазейку такого типа - или предыдущую, если она уже есть и никто не знает! - не опираясь на удачу и героическую занудливость Андреаса Фройнда.
Мысли, которые мне понравились, из интервью Павла Дурова Такеру Карлсону:

🔗 Всегда делайте качественный продукт! Качественный продукт не требует рекламы и продвижения.
🔗 Чтобы нанимать и управлять лучшими инженерами, тебе не нужен огромный штат hr-ов и менеджеров.
🔗 Хорошему инженеру нужна высокая оплата труда и продукт в котором он может раскрыть свой потенциал.
🔗 В мире высокой конкуренции нужно создавать инновации, а не копировать работающие идеи.
🔗 Бэкдор в твоём приложении это всегда бэкдор, его может использовать кто угодно.
🔗 Выбор между "двумя стульями" может появиться там где не ожидаешь :)
Please open Telegram to view this post
VIEW IN TELEGRAM
Постоянно слышу мнение, что PHP устарел и вобще не айс. Но мне нравится этот язык и куда он развивается. Сейчас, это полностью объектно-ориентированный язык, поддерживающий написание строго типизированного и качественного кода, который вобрал в себя лучшие практики.
https://teletype.in/@henryh/o-php
Media is too big
VIEW IN TELEGRAM
8-летняя девочка программирует своего чат бота при помощи нейросетей. И это впечатляет! Даже если видео преукрашено, возможности поражают. Такие вещи очень облегчают создание простых вещей, для которых ранее нужно было напрягать взрослых дядек)
Полезный пакет, надо будет попробовать:
Проверка переменных окружения во всех файлах .env

В мире, полном хаоса и неопределённости, существует пакет — Laravel Env Keys Checker, который, проверяет наличие ключей во всех .env файлах. Кто бы мог подумать, что в этой бездне бессмыслицы существует что-то, что может хоть как-то облегчить твои страдания.

https://github.com/msamgan/laravel-env-keys-checker

Представь: ты отчаянно пытаешься добавить новое значение в свой локальный .env файл. И тут возникает вопрос: а есть ли оно в .env.example? Или другой разработчик, словно глупец, обновил .env.example.

Функции этого пакета, возможно, не столь уж и значительны, но вот они:

- Проверяет наличие всех ключей во всех .env файлах, чтобы ты не чувствовал себя полным неудачником.

- Автоматически добавляет недостающие ключи, словно заботливый друг, который подставляет плечо.

- Синхронизирует ключи по строкам во всех .env файлах, как будто это хоть как-то поможет.
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
| Don't Push To Production On Friday |
|_________________|
\ (•◡•) /
\ /
——
| |
|_ |_
This media is not supported in your browser
VIEW IN TELEGRAM
Когда тестировщик проводит проверку того, что создал разработчик
Forwarded from CardReview
Очень интересное и короткое выступление Кирилла Меньшова. Цитирую близко к оригиналу:

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

В результате этого исторического момента наши банки снова окажутся впереди планеты всей просто потому что всем остальным это не надо, а мы вынуждены импортозамещаясь строить новый ИТландшафт на самых современных доступных технология: микросервисы, постгре....
Добавлены новые функции mb_trim(), mb_ltrim(), mb_rtrim(), mb_ucfirst(), mb_lcfirst(), bcceil(), bcdivmod(), bcfloor() и bcround(), pcntl_getcpu(), pcntl_getcpuaffinity(), pcntl_getqos_class(), pcntl_setns(), pcntl_waitid(), http_get_last_response_headers(), http_clear_last_response_headers(), fpow()

Операции exit и die теперь можно вызывать в форме полноценных функций, которые допускается передавать в качестве аргумента в другие функции. Ранее возможности функций exit() и die() были сильно ограничены, так как они представляли собой обвязки над ключевыми словами exit и die.

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

Объявлено устаревшим поведение, при котором для параметров функций с присвоенным по умолчанию значением null автоматически разрешалось присвоение значений null. Для того, чтобы подобные параметры могли принимать значения null теперь требуется явное указание префикса "?". Например, вместо "function save(Book $book = null) {}" следует указывать "function save(?Book $book = null) {}".

Объявлены устаревшими константы E_STRICT, MYSQLI_REFRESH_*, функции mysqli_ping(), mysqli_kill(), mysqli_refresh(), методы mysqli::ping(), mysqli::kill(), mysqli::refresh(), возможность использования "_" в качестве имени класса, некоторые свойства DOMDocument и DOMEntity. Запрещено переопределение констант класса GMP, для которого теперь выставлено ключевое слово "final".


Источник: https://www.opennet.ru/opennews/art.shtml?num=62269
Доброе утро, мой дорогой программист/QA/devops/etc!
Тебе повезло и ты в моей команде!
А если ты работаешь у меня, то попал ты сюда одним из этих путей:
1) ты уже ранее работал со мной и показал себя не мудаком, поэтому я просто взял тебя без собеса.

2) я нашёл тебя через огромное комьюнити разрабов, девопсов тестеров и даже манагеров, сарафанное радио и 3 рукопожатия, а тот кто тебя рекомендовал, скорее всего адекват. Поэтому я провёл не сильно занудное интервью, и скорее оно касалось софтов и фита команде.

3) в оставшихся 10% случаев получилось так, что я самостоятельно нашел тебя на хх, LI и прочих площадках/дали сорсеры. Мы с командой действительно внимательно прочли твоё резюме, списались с тобой в телеге, договорились о встрече, поговорили по душам про твои реализованные проекты, ты показал что умеешь и чему хотел бы научиться, обсудили как мы пьем пиво по пятницам, поняли что фит есть и без лишней бюрократии взяли. Потому что ты подошел по софтам и 50%+ хардов, а остальные с удовольстием добьешь)

Утопия? Отнюдь! Это тот самый адвекатный подбор и наём.

Тесты, тупые вопросы про солид, алгоритмы, тупорылый систем дизайн, 10 этапов хуй пойми чего растянутое на месяц, воронки, просмотр всех, гороскопы, карты таро, цыгане, гадание на гавне и кони - всё это нахуй.

Но..
Кажется чего-то не хватает???
Неужели HRов и дефективных менеджеров? )))

Всё нормально!
Они в Неве - баланс соблюден!
Ах да, посчитаем, сколько денег мы сэкономили компании?
Веб-сервер Angie: на PHP-приложении echo “Hello World” показывает результат в 2 раза производительнее, чем nginx!

Если у вас есть высоконагруженный Hello World в production - возьмите на заметку 😉