Нестандартные кейсы применения ChatGPT.
Начнем с бонуса к кейсу из предыдущего поста. Можно попросить ChatGPT выполнить HTTP запрос к API ChatGPT и что-то у него спросить. Так как связи с интернетом текущий ChatGPT не имеет, то он подумает как бы выглядел такой запрос и ответ от того "псевдо" ChatGPT. То есть один GPT внутри себя создает образ другого GPT и отвечает от него. Такая вот рекурсия. Можно у выдуманного ChatGPT тоже попросить сделать запрос к API ChatGPT, то есть идти еще глубже. Могу предположить, что с каждым таким уровнем абстракции качество ответов будет ухудшаться. А в какой-то момент может зафиксироваться на самом низком уровне и дальше падать уже не будет. Вспоминается фильм Начало или серия из Рик и Морти. Но на практике больше одной вложенности не проверял, ибо муторно, так что тут только догадки.
Дальше несколько кейсов из программирования.
Можно скинуть минимизированный/обфусцированный код и попросить его развернуть обратно в понятный вид. То есть открывается возможность для новых инструментов реверс инжениринга.
Даем на вход такой код:
Получаем на выходе такой:
Весь код не привожу, ибо слишком много. Но ChatGPT понял, что происходит в этом методе. Он добавил нормальные нейминги как самому методу, так и переменным. Даже вспомогательные комментарии оставил, чтобы уж точно понятно было.
Еще можно скинуть ему ассемблерный/машинный код и попросить переписать его на любом удобном вам языке (или просто объяснить, что в нём происходит). Это всё очень сильно поменяет индустрию кибер безопасности в ближайшем будущем. Пока что просто не все еще поняли, что происходит.
Кстати, помимо реверс инжениринга этот подход можно использовать для переписывания кодовой базы с какой-то старой технологии на новую. Например, у крупного банка есть супер старый код на каком-нибудь Cobol. Можно через GPT переписать его на Python (да, там могут быть сейчас ошибки и нюансы и надо чтобы за этим следил человек, но это все равно дает нереальный буст).
Продолжаем?)
#openai #chatgpt #llm #ai #ml #programming
Начнем с бонуса к кейсу из предыдущего поста. Можно попросить ChatGPT выполнить HTTP запрос к API ChatGPT и что-то у него спросить. Так как связи с интернетом текущий ChatGPT не имеет, то он подумает как бы выглядел такой запрос и ответ от того "псевдо" ChatGPT. То есть один GPT внутри себя создает образ другого GPT и отвечает от него. Такая вот рекурсия. Можно у выдуманного ChatGPT тоже попросить сделать запрос к API ChatGPT, то есть идти еще глубже. Могу предположить, что с каждым таким уровнем абстракции качество ответов будет ухудшаться. А в какой-то момент может зафиксироваться на самом низком уровне и дальше падать уже не будет. Вспоминается фильм Начало или серия из Рик и Морти. Но на практике больше одной вложенности не проверял, ибо муторно, так что тут только догадки.
Дальше несколько кейсов из программирования.
Можно скинуть минимизированный/обфусцированный код и попросить его развернуть обратно в понятный вид. То есть открывается возможность для новых инструментов реверс инжениринга.
Даем на вход такой код:
async function m(t,e,o,r,n,a){const s=new URL(t);e&&Object.keys(e).forEach((t=>s.searchParams.append(t,e[t])));const c=new Headers(a);if(r&&n){const t=Buffer.from(`${r}:${n}`).toString("base64");c.set("Authorization",`Basic ${t}`)}try{const t=await fetch(s.toString(),{method:"POST",headers:c,body:JSON.stringify(o)});return await t.json()}catch(t){throw console.error("Ошибка",t),t}}
Получаем на выходе такой:
async function sendPostRequest(url, queryParams, requestBody, username, password, headers) {
// Создаем объект URL из строки для дальнейшей работы с параметрами запроса
const requestUrl = new URL(url);
// Если переданы параметры запроса, добавляем их к URL
if (queryParams) {
Object.keys(queryParams).forEach((key) =>
requestUrl.searchParams.append(key, queryParams[key])
);
}
// Создаем объект заголовков запроса
const requestHeaders = new Headers(headers);
...
Весь код не привожу, ибо слишком много. Но ChatGPT понял, что происходит в этом методе. Он добавил нормальные нейминги как самому методу, так и переменным. Даже вспомогательные комментарии оставил, чтобы уж точно понятно было.
Еще можно скинуть ему ассемблерный/машинный код и попросить переписать его на любом удобном вам языке (или просто объяснить, что в нём происходит). Это всё очень сильно поменяет индустрию кибер безопасности в ближайшем будущем. Пока что просто не все еще поняли, что происходит.
Кстати, помимо реверс инжениринга этот подход можно использовать для переписывания кодовой базы с какой-то старой технологии на новую. Например, у крупного банка есть супер старый код на каком-нибудь Cobol. Можно через GPT переписать его на Python (да, там могут быть сейчас ошибки и нюансы и надо чтобы за этим следил человек, но это все равно дает нереальный буст).
Продолжаем?)
#openai #chatgpt #llm #ai #ml #programming
🔥23👍2👏2
Завершаем тему нестандартных кейсов использования ChatGPT.
⇨ Автоматическое написание тестов. Можно скинуть код и попросить написать unit-тесты. Можно скормить документацию по API и попросить написать функциональные http тесты. Можно скормить код фронтенда и попросить написать приемочные e2e тесты. Причем GPT-4 Turbo с этими задачами справляется очень хорошо. Мне жаль QA, которые до сих пор работают руками, а не головой.
⇨ Автоматическое написание документации к проекту. Разработчики не любят писать доку. Но сейчас достаточно скормить код и дока будет написана автоматически. Можно даже попросить вставлять примеры кода или блок-схем добавить и так далее.
⇨ Автоматический анализ логов как приложения, так и в целом сетевых и любых системных. Можно в автоматическом режиме отслеживать подозрительную активность. Теперь это сделать может любой DevOps/SecOps, не покупая супер дорогое ПО. Сейчас с поиском анамалий GPT справляется не идеально, но если чуть подкрутить промпты и подготовить более аккуратно данные, то всё будет ок.
⇨ Тюнинг/аудит конфигов. Скидываем конфиг чего угодно (nginx, mysql, postgresql, docker, k8s, kafka и так далее), просим найти ошибки или улучшить. Справляется на отлично. Периодически кидаюсь в GPT каким-то полотном конфигов, и он находит там ошибки.
⇨ Парсинг/извлечение данных. Если вы хотите обойти 100500 сайтов и собрать с них названия компаний, контактные данные, используемые технологии и прочее, то раньше приходилось писать кучу регулярок и кучу кода. GPT без проблем вытащит всю инфу с помощью простого промпта.
⇨ Анализ и обработка данных с помощью Code Interpreter. Code interpreter — это относительно новый механизм в ChatGPT, который заключается в том, что ChatGPT не просто сам отвечает на вопрос, а пишет себе в помощь скрипты на Python. Например, мы можем загрузить 100 MB сырых данных в csv. Обычный ChatGPT с этими данными мало что сделает. Они просто не поместятся к нему в контекст, да и в целом даже на меньшем объеме он может ошибиться, если вы начнете задавать вопросы вида
#openai #chatgpt #llm #ai #ml
⇨ Автоматическое написание тестов. Можно скинуть код и попросить написать unit-тесты. Можно скормить документацию по API и попросить написать функциональные http тесты. Можно скормить код фронтенда и попросить написать приемочные e2e тесты. Причем GPT-4 Turbo с этими задачами справляется очень хорошо. Мне жаль QA, которые до сих пор работают руками, а не головой.
⇨ Автоматическое написание документации к проекту. Разработчики не любят писать доку. Но сейчас достаточно скормить код и дока будет написана автоматически. Можно даже попросить вставлять примеры кода или блок-схем добавить и так далее.
⇨ Автоматический анализ логов как приложения, так и в целом сетевых и любых системных. Можно в автоматическом режиме отслеживать подозрительную активность. Теперь это сделать может любой DevOps/SecOps, не покупая супер дорогое ПО. Сейчас с поиском анамалий GPT справляется не идеально, но если чуть подкрутить промпты и подготовить более аккуратно данные, то всё будет ок.
⇨ Тюнинг/аудит конфигов. Скидываем конфиг чего угодно (nginx, mysql, postgresql, docker, k8s, kafka и так далее), просим найти ошибки или улучшить. Справляется на отлично. Периодически кидаюсь в GPT каким-то полотном конфигов, и он находит там ошибки.
⇨ Парсинг/извлечение данных. Если вы хотите обойти 100500 сайтов и собрать с них названия компаний, контактные данные, используемые технологии и прочее, то раньше приходилось писать кучу регулярок и кучу кода. GPT без проблем вытащит всю инфу с помощью простого промпта.
⇨ Анализ и обработка данных с помощью Code Interpreter. Code interpreter — это относительно новый механизм в ChatGPT, который заключается в том, что ChatGPT не просто сам отвечает на вопрос, а пишет себе в помощь скрипты на Python. Например, мы можем загрузить 100 MB сырых данных в csv. Обычный ChatGPT с этими данными мало что сделает. Они просто не поместятся к нему в контекст, да и в целом даже на меньшем объеме он может ошибиться, если вы начнете задавать вопросы вида
дай топ 3 самых популярных события из таблицы 1, в которых duration > 10ms. С помощью Code Interpreter бот напишет себе и запустит скрипт на Python, который отфильтрует нужные данные, сгруппирует и подсчитает результат. Это будет уже точный результат без "галлюцинаций". Весь код написанных скриптов он также выдает, то есть можно их, если что, проверить и подправить самостоятельно.#openai #chatgpt #llm #ai #ml
👍7🔥6
Все же мы не закончили с нестандартными кейсами ChatGPT. Не могу не поделиться.
Совсем недавно был опубликован препринт научной статьи, в которой авторам удалось приспособить большие языковые модели для создания новых белков, которые смогут редактировать ДНК наподобие CRISPR/Cas9. Получившийся новый белок OpenCRISPR-1 потенциально более эффективен, чем текущий CRISPR/Cas9. При этом аминокислотная последовательность белка выложена на Github со всеми инструкциями. Пользоваться может любой желающий.
Тут уже совсем не баловство пошло.
ps. И да, сами догадайтесь, как я за пару минут ознакомился с содержанием научной статьи.
#openai #chatgpt #llm #ai #ml #crispr #cas9 #github
Совсем недавно был опубликован препринт научной статьи, в которой авторам удалось приспособить большие языковые модели для создания новых белков, которые смогут редактировать ДНК наподобие CRISPR/Cas9. Получившийся новый белок OpenCRISPR-1 потенциально более эффективен, чем текущий CRISPR/Cas9. При этом аминокислотная последовательность белка выложена на Github со всеми инструкциями. Пользоваться может любой желающий.
Тут уже совсем не баловство пошло.
ps. И да, сами догадайтесь, как я за пару минут ознакомился с содержанием научной статьи.
#openai #chatgpt #llm #ai #ml #crispr #cas9 #github
👍6🔥4
Скоро во всех новостях. OpenAI анонсировали новую модель GPT-4o (omnimodel). С ней можно общаться голосом. Ответы от GPT тоже можно получать голосом. То есть с ботом реально можно разговаривать. Причем, разговор идёт в реальном времени, то есть не надо ждать, когда робот договорит, можно прерывать его и т.п. Как в реальном диалоге с человеком.
Новая модель будет доступна для всех бесплатно. По API она будет дешевле, чем GPT-4 Turbo.
#openai #chatgpt #llm #ai #ml
Новая модель будет доступна для всех бесплатно. По API она будет дешевле, чем GPT-4 Turbo.
#openai #chatgpt #llm #ai #ml
😱8🔥5
Самоорганизующаяся файловая система
Недавно в OpenSource появилась файловая система llama-fs, которая автоматически отслеживает и переименовывает и переносит ваши файлы в указанных папках и делает там свою структуру. Она призвана бороться с бардаком в ваших папках за вас.
Несмотря на большой хайп вокруг этого продукта, я вот не рискнул протестировать.
Если кто-то потестит, пишите, как вам оно.
#opensource #ai #llm #llama #chatgpt
Недавно в OpenSource появилась файловая система llama-fs, которая автоматически отслеживает и переименовывает и переносит ваши файлы в указанных папках и делает там свою структуру. Она призвана бороться с бардаком в ваших папках за вас.
Несмотря на большой хайп вокруг этого продукта, я вот не рискнул протестировать.
Если кто-то потестит, пишите, как вам оно.
#opensource #ai #llm #llama #chatgpt
👍4🔥2
Большая подборка набирающих популярность OpenSource проектов.
Общее:
⇨ Bend — новый язык программирования для параллельных вычислений. Вы просто пишите код (наподобие Python), а runtime языка сам распределяет его по ядрам процессора. Главное писать код, который можно распараллелить. Например, такое выражение легко разделить на 2 ядра и потом сложить результаты:
⇨ heyform — бесплатный конструктор форм, аналог typeform.
⇨ planka — бесплатная realtime kanban доска, аналог trello.
⇨ DARC — интересная задумка на тему автоматизированной децентрализованной компании. Можно делать операции с деньгами, акциями, дивидендами и прочим. Законы/правила можно добавлять как плагины через голосование. В общем, полная имитация юридического лица из офлайна, только тут добавляются плюсы блокчейна. Возможно это наше будущее. Или нет.
⇨ llm-answer-engine — аналог perplexity.
⇨ IDM-VTON — виртуальная примерка вещей. Берете фото человека и фото одежды, получаете человека одетого в эту одежду. Есть довольно залипательное демо.
Большие языковые модели:
⇨ grok-1 — нашумевшая модель Grok от xAI.
⇨ dbrx — модель от Databricks.
⇨ LLMs-from-scratch — пошаговое руководство создания аналога ChatGPT с нуля.
⇨ jan — бесплатная оффлайн альтернатива ChatGPT, работающая локально с llama и др.
Генерация кода:
⇨ gpt-pilot — продвинутый copilot, который пишет код, тестирует фичи и так далее.
⇨ MetaGPT — это агент заточен под то, чтобы создать для вас продукт. Например, пишите ему Create a 2048 game, он заходит с разных ролей в команде: продакт, архитектор, разработчик, QA и так далее. В итоге делает для вас готовый продукт под ключ.
⇨ OpenDevin — аналогично, ассистент программиста.
⇨ plandex — немного отличающийся агент, пишущий код. Вы загружаете в него нужные папки вашего проекта и дальше просите "создать такую-то фичу" и т.п. В отличии от многих других, он работает в контексте существующего проекта и потенциально может быть полезен в ежедневной работе.
⇨ openui — описываете словами UI, получаете готовую верстку.
Автоматизация действий:
⇨ skyvern — браузерный агент, который может полазить по сайту за вас и сделать там то, что вы его попросили. Например, можно попросить найти на сайте какую-то информацию или сделать для вас заказ и т.п.
⇨ open-interpreter — запускает команды в консоли вместо вас. Можно попросить отредактировать файлы в папке или поискать что-то с помощью браузера и т.п.
⇨ devika — аналогично, разбивает с помощью LLM запрос на посоедовательность действий/команд и выполняет их.
⇨ codel — и еще один агент, пишущий код и управляющий браузером, консолью и т.п.
Генерация видео:
⇨ Open-Sora — генерация видео, бесплатный аналог Sora.
⇨ Mora — генерация видео, бесплатный аналог Sora.
⇨ AniPortrait — берете портрет, добавляете mp3 с речью и получаете видео говорящего лица.
#opensource #github #ai #openai #ml #llm #chatgpt
Общее:
⇨ Bend — новый язык программирования для параллельных вычислений. Вы просто пишите код (наподобие Python), а runtime языка сам распределяет его по ядрам процессора. Главное писать код, который можно распараллелить. Например, такое выражение легко разделить на 2 ядра и потом сложить результаты:
((1 + 2) + (3 + 4)). А такое — не разделить: (((1 + 2) + 3) + 4).⇨ heyform — бесплатный конструктор форм, аналог typeform.
⇨ planka — бесплатная realtime kanban доска, аналог trello.
⇨ DARC — интересная задумка на тему автоматизированной децентрализованной компании. Можно делать операции с деньгами, акциями, дивидендами и прочим. Законы/правила можно добавлять как плагины через голосование. В общем, полная имитация юридического лица из офлайна, только тут добавляются плюсы блокчейна. Возможно это наше будущее. Или нет.
⇨ llm-answer-engine — аналог perplexity.
⇨ IDM-VTON — виртуальная примерка вещей. Берете фото человека и фото одежды, получаете человека одетого в эту одежду. Есть довольно залипательное демо.
Большие языковые модели:
⇨ grok-1 — нашумевшая модель Grok от xAI.
⇨ dbrx — модель от Databricks.
⇨ LLMs-from-scratch — пошаговое руководство создания аналога ChatGPT с нуля.
⇨ jan — бесплатная оффлайн альтернатива ChatGPT, работающая локально с llama и др.
Генерация кода:
⇨ gpt-pilot — продвинутый copilot, который пишет код, тестирует фичи и так далее.
⇨ MetaGPT — это агент заточен под то, чтобы создать для вас продукт. Например, пишите ему Create a 2048 game, он заходит с разных ролей в команде: продакт, архитектор, разработчик, QA и так далее. В итоге делает для вас готовый продукт под ключ.
⇨ OpenDevin — аналогично, ассистент программиста.
⇨ plandex — немного отличающийся агент, пишущий код. Вы загружаете в него нужные папки вашего проекта и дальше просите "создать такую-то фичу" и т.п. В отличии от многих других, он работает в контексте существующего проекта и потенциально может быть полезен в ежедневной работе.
⇨ openui — описываете словами UI, получаете готовую верстку.
Автоматизация действий:
⇨ skyvern — браузерный агент, который может полазить по сайту за вас и сделать там то, что вы его попросили. Например, можно попросить найти на сайте какую-то информацию или сделать для вас заказ и т.п.
⇨ open-interpreter — запускает команды в консоли вместо вас. Можно попросить отредактировать файлы в папке или поискать что-то с помощью браузера и т.п.
⇨ devika — аналогично, разбивает с помощью LLM запрос на посоедовательность действий/команд и выполняет их.
⇨ codel — и еще один агент, пишущий код и управляющий браузером, консолью и т.п.
Генерация видео:
⇨ Open-Sora — генерация видео, бесплатный аналог Sora.
⇨ Mora — генерация видео, бесплатный аналог Sora.
⇨ AniPortrait — берете портрет, добавляете mp3 с речью и получаете видео говорящего лица.
#opensource #github #ai #openai #ml #llm #chatgpt
1🔥14👍3
$ uptime
up 3662 days
Я не понимаю, как это работает. Один из первых серверов Roistat. До сих пор в строю. Более 10 лет под нагрузкой 24/7 без downtime.
Моё почтение разработчикам ядра linux и создателям микропроцессоров.
1🔥15👍5
Необычный способ передачи информации
Большой анимированный QR-код, который может передавать информацию со скоростью почти 1 мбит/с просто через камеру телефона. Не нужны WiFi, провода и прочие интернеты.
В обычный QR еле-еле помещается ссылка. Но если мы обычный черно-белый пиксель в классическом QR меняем на разные сложные геометрические фигурки и добавляем им разные цвета, то емкость данных существенно возрастает. А дальше делаем анимацию и меняем кадры (GIF).
Правда, такому QR требуется специальное приложение для чтения (но обычному QR так-то тоже). Вопрос времени — когда встроенная в телефоны камера научится читать усложненный вариант без доп. приложений.
Для чего оно нужно? Например, вы можете в рекламу вставить не ссылку на своё мобильное приложение, а само мобильное приложение целиком. Или закодировать в QR-код аудио, видео и тп. И вообще, это просто прикольно.
Большой анимированный QR-код, который может передавать информацию со скоростью почти 1 мбит/с просто через камеру телефона. Не нужны WiFi, провода и прочие интернеты.
В обычный QR еле-еле помещается ссылка. Но если мы обычный черно-белый пиксель в классическом QR меняем на разные сложные геометрические фигурки и добавляем им разные цвета, то емкость данных существенно возрастает. А дальше делаем анимацию и меняем кадры (GIF).
Правда, такому QR требуется специальное приложение для чтения (но обычному QR так-то тоже). Вопрос времени — когда встроенная в телефоны камера научится читать усложненный вариант без доп. приложений.
Для чего оно нужно? Например, вы можете в рекламу вставить не ссылку на своё мобильное приложение, а само мобильное приложение целиком. Или закодировать в QR-код аудио, видео и тп. И вообще, это просто прикольно.
🔥10❤2
Заблуждения о KPI в разработке
Тема "KPI в разработке" довольно обширна — в один пост всё не уместить. Буду раскрывать ее постепенно. Начнём с заблуждений, с которыми я встречался.
- Разработка — это креативный процесс и поэтому KPI для неё невозможен
- KPI подавляет креативность
- В больших компаниях классно выстроена разработка, там много всяких систем оценок, KPI и прочего, а вот "нам в маленьких" это слишком сложно сделать
- Не все аспекты работы можно измерить количеством
- У разработчиков в целом на слово KPI возникает буря эмоций и одно большое заблуждение
На самом деле заблуждений намного больше, но уже будет перебор для одного поста, так что начнём с этих.
Разработка — это креативный процесс и поэтому KPI для неё невозможен
Во-первых, работа разработчика — это не только и не столько креативный процесс. Конечно, бывает, надо что-то придумать, но в очень ограниченных рамках. И даже наоборот: "фантазёры" — это большая боль. В 99% случаев для решения задачи в проекте уже есть готовые подходы/компоненты/механизмы (плюс само собой подразумеваю, что разработчику дают какие-либо продуктовые требования), но фантазер просто тратит лишнее своё время на придумки и лишний кодинг, и потом время коллег на ревью его "фантазий". В итоге бизнес получает решение своей задачи сильно дороже, и к ней в придачу еще получает увеличение энтропии проекта (то есть удорожание будуших задач).
Во-вторых, надо понимать, что KPI для подобных профессий (это касается не только разработчиков, но и всю продуктовую команду и в целом не ограничивается IT направлением) — это дополнительный фактор, а не основной. Он не должен напрямую влиять на зарплату, как (условно) у продавца или маркетолога. Он должен показывать относительную динамику — лучше или хуже человек/команда поработали на этой неделе по сравнению с предыдущей? Если хуже — то узнаем о проблемах и исправляем их, если лучше — узнаем и закрепляем хорошие практики. В разработке вполне применим классический менеджемент. Он точно так же работает как и везде. Просто требует технических компетенций у этих самых "менеджеров". А у нас распространено, что ты либо технарь, либо менеджер. Мало, кто развивает оба набора компетенций и отсюда дальше большой "разрыв" в работе и коммуникации.
KPI подавляет креативность
Выше уже разобрали, что подавлять тут и нечего. Но я бы тут подсветил отдельно еще раз: KPI — вспомогательный инструмент, который нужен, чтобы помогать сделать процесс работы лучше, качественнее, эффективнее, комфортнее и так далее. KPI мешает тем, кто не умеет пользоваться инструментами и подстраивается под них (а таких людей много, к сожалению). Здоровый руководитель получает от инструмента пользу и адаптирует под свои потребности. У такого руководителя ничего там нигде "подавляться" не будет. Простой пример продавливания людей под инструмент — это scrum мастеры, OKR мастеры и прочие "мастеры". Зачастую они просто занимаются тем, что подстраивают всех под инструмент, даже если это не решает никакую проблему и даже если наоборот добавляет вреда. Но сразу оговорюсь — разумеется, есть и крутые, компетентные "мастер" специалисты. Они молодцы. Но, к сожалению, я на таких не натыкался, и можно предположить, что их довольно мало.
В больших компаниях классно выстроена разработка, там много всяких систем оценок, ...
Продолжение в комментах
Тема "KPI в разработке" довольно обширна — в один пост всё не уместить. Буду раскрывать ее постепенно. Начнём с заблуждений, с которыми я встречался.
- Разработка — это креативный процесс и поэтому KPI для неё невозможен
- KPI подавляет креативность
- В больших компаниях классно выстроена разработка, там много всяких систем оценок, KPI и прочего, а вот "нам в маленьких" это слишком сложно сделать
- Не все аспекты работы можно измерить количеством
- У разработчиков в целом на слово KPI возникает буря эмоций и одно большое заблуждение
На самом деле заблуждений намного больше, но уже будет перебор для одного поста, так что начнём с этих.
Разработка — это креативный процесс и поэтому KPI для неё невозможен
Во-первых, работа разработчика — это не только и не столько креативный процесс. Конечно, бывает, надо что-то придумать, но в очень ограниченных рамках. И даже наоборот: "фантазёры" — это большая боль. В 99% случаев для решения задачи в проекте уже есть готовые подходы/компоненты/механизмы (плюс само собой подразумеваю, что разработчику дают какие-либо продуктовые требования), но фантазер просто тратит лишнее своё время на придумки и лишний кодинг, и потом время коллег на ревью его "фантазий". В итоге бизнес получает решение своей задачи сильно дороже, и к ней в придачу еще получает увеличение энтропии проекта (то есть удорожание будуших задач).
Во-вторых, надо понимать, что KPI для подобных профессий (это касается не только разработчиков, но и всю продуктовую команду и в целом не ограничивается IT направлением) — это дополнительный фактор, а не основной. Он не должен напрямую влиять на зарплату, как (условно) у продавца или маркетолога. Он должен показывать относительную динамику — лучше или хуже человек/команда поработали на этой неделе по сравнению с предыдущей? Если хуже — то узнаем о проблемах и исправляем их, если лучше — узнаем и закрепляем хорошие практики. В разработке вполне применим классический менеджемент. Он точно так же работает как и везде. Просто требует технических компетенций у этих самых "менеджеров". А у нас распространено, что ты либо технарь, либо менеджер. Мало, кто развивает оба набора компетенций и отсюда дальше большой "разрыв" в работе и коммуникации.
KPI подавляет креативность
Выше уже разобрали, что подавлять тут и нечего. Но я бы тут подсветил отдельно еще раз: KPI — вспомогательный инструмент, который нужен, чтобы помогать сделать процесс работы лучше, качественнее, эффективнее, комфортнее и так далее. KPI мешает тем, кто не умеет пользоваться инструментами и подстраивается под них (а таких людей много, к сожалению). Здоровый руководитель получает от инструмента пользу и адаптирует под свои потребности. У такого руководителя ничего там нигде "подавляться" не будет. Простой пример продавливания людей под инструмент — это scrum мастеры, OKR мастеры и прочие "мастеры". Зачастую они просто занимаются тем, что подстраивают всех под инструмент, даже если это не решает никакую проблему и даже если наоборот добавляет вреда. Но сразу оговорюсь — разумеется, есть и крутые, компетентные "мастер" специалисты. Они молодцы. Но, к сожалению, я на таких не натыкался, и можно предположить, что их довольно мало.
В больших компаниях классно выстроена разработка, там много всяких систем оценок, ...
Продолжение в комментах
1🔥8👍7🥰2😈1
Бесплатные OpenSource альтернативы Amazon AWS, Heroku и Airtable
⇨ ubicloud — собственное облако, аналог Amazon AWS. Добавляете свои серверные мощности под управление ubicloud и дальше через интерфейс можно создавать шустрые виртуалки (с бесшовной миграцией между хостами и снэпшотами), лоад балансеры, управляемый postgres, виртуальная сеть, система доступов и так далее. Рекомендую ознакомиться и иметь в виду. Выглядит очень удобно и добротно. Отлично подойдёт, если у вас много проектов или большая IT инфраструктура внутри компании.
⇨ supabase — это более высокоуровневый инструмент, аналог Firebase. Здесь мы оперируем не железом, а юзерами, таблицами, хранилищем, удобным интерфейсом администрирования и так далее. Хорошо подойдёт, если у вас есть какой-то большой главный продукт/проект. Но в целом никто не мешает комбинировать и для каждого проекта разворачивать supabase на инфраструктуре под управлением ubicloud.
⇨ coolify — аналог Heroku. Оперирует проектами, серверами и кучей вспомогательных обвязок, типа Push To Deploy и все в этом духе. Думаю это уже больше для веб-студий, фрилансеров и прочего массового мелкого производства.
⇨ piku — более минималистичный и простой аналог Coolify/Heroku для Push To Deploy.
⇨ directus — автоматический конуструктор CMS, админок и бизнес-процессов, частично аналог Airtable. Если у вас есть база данных, то может быть полезно, чтобы не кодить лишние внутренние инструменты для команды.
⇨ nocodb — прямой аналог Airtable. Из любой базы делает удобные таблицы, таск трекеры, админки и т.д.
#opensource #open_source #aws #amazon #airtable
⇨ ubicloud — собственное облако, аналог Amazon AWS. Добавляете свои серверные мощности под управление ubicloud и дальше через интерфейс можно создавать шустрые виртуалки (с бесшовной миграцией между хостами и снэпшотами), лоад балансеры, управляемый postgres, виртуальная сеть, система доступов и так далее. Рекомендую ознакомиться и иметь в виду. Выглядит очень удобно и добротно. Отлично подойдёт, если у вас много проектов или большая IT инфраструктура внутри компании.
⇨ supabase — это более высокоуровневый инструмент, аналог Firebase. Здесь мы оперируем не железом, а юзерами, таблицами, хранилищем, удобным интерфейсом администрирования и так далее. Хорошо подойдёт, если у вас есть какой-то большой главный продукт/проект. Но в целом никто не мешает комбинировать и для каждого проекта разворачивать supabase на инфраструктуре под управлением ubicloud.
⇨ coolify — аналог Heroku. Оперирует проектами, серверами и кучей вспомогательных обвязок, типа Push To Deploy и все в этом духе. Думаю это уже больше для веб-студий, фрилансеров и прочего массового мелкого производства.
⇨ piku — более минималистичный и простой аналог Coolify/Heroku для Push To Deploy.
⇨ directus — автоматический конуструктор CMS, админок и бизнес-процессов, частично аналог Airtable. Если у вас есть база данных, то может быть полезно, чтобы не кодить лишние внутренние инструменты для команды.
⇨ nocodb — прямой аналог Airtable. Из любой базы делает удобные таблицы, таск трекеры, админки и т.д.
#opensource #open_source #aws #amazon #airtable
3🔥13❤2👍1
React Native: New Architecture
Если вы вдруг пропустили — React Native релизнул версию 0.76 с новой архитектурой, в которой избавились от узкого горлышка в виде Async Bridge.
Было:
Стало:
То есть раньше на телефоне, условно, запускался JS код, который по API отправлял запросы в написанный нативно Async Bridge, который в свою очередь нативно вызывал Native Renderer. При большом кол-ве событий это создавало узкое горлышко, из-за чего RN считался "медленным". Теперь же из JS кода генерируется нативный C++ модуль, который вызывает Native Renderer напрямую. Бонусом идёт возможность обращаться к native модулям синхронно.
Было:
Стало:
Рекомендую ознакомиться и учитывать при выборе стека для мобилки.
#mobile #react_native #react
Если вы вдруг пропустили — React Native релизнул версию 0.76 с новой архитектурой, в которой избавились от узкого горлышка в виде Async Bridge.
Было:
React Renderer —> Async Bridge —> Native RendererСтало:
React Renderer —> Native RendererТо есть раньше на телефоне, условно, запускался JS код, который по API отправлял запросы в написанный нативно Async Bridge, который в свою очередь нативно вызывал Native Renderer. При большом кол-ве событий это создавало узкое горлышко, из-за чего RN считался "медленным". Теперь же из JS кода генерируется нативный C++ модуль, который вызывает Native Renderer напрямую. Бонусом идёт возможность обращаться к native модулям синхронно.
Было:
// ❌ Sync callback from Native Module
nativeModule.getValue(value => {
// ❌ value cannot reference a native object
nativeModule.doSomething(value);
});
Стало:
// ✅ Sync response from Native Module
const value = nativeModule.getValue();
// ✅ value can be a reference to a native object
nativeModule.doSomething(value);
Рекомендую ознакомиться и учитывать при выборе стека для мобилки.
#mobile #react_native #react
7👍11🔥5💋1
Понравился чеклист по информационной безопасности для SaaS сервисов и в целом IT стартапов.
Даже если вы уверены, что у вас всё на высшем уровне и большая часть пунктов покажется банальной — все равно, скорее всего найдете для себя что-то, о чем забыли.
#информационная_безопасность
Даже если вы уверены, что у вас всё на высшем уровне и большая часть пунктов покажется банальной — все равно, скорее всего найдете для себя что-то, о чем забыли.
#информационная_безопасность
6👍8🔥2🤝1
Какие инструменты я использую каждый день для диагностики linux серверов (в наших проектах их многие сотни).
▪️ CPU/RAM: top, htop, sar
▪️ Диск: df, du, dstat, iostat, iotop, fatrace, fio, ioping, hdparm, sar
▪️ Сеть: iftop, iptraf, netstat, iperf, nethogs, slurm, sar
▪️ Процесс: strace, ltrace, fatrace, ps, lsof
Ставьте реакции, если тема интересна и хотите, чтобы я написал про каждый инструмент пример использования.
#linux #devops
▪️ CPU/RAM: top, htop, sar
▪️ Диск: df, du, dstat, iostat, iotop, fatrace, fio, ioping, hdparm, sar
▪️ Сеть: iftop, iptraf, netstat, iperf, nethogs, slurm, sar
▪️ Процесс: strace, ltrace, fatrace, ps, lsof
Ставьте реакции, если тема интересна и хотите, чтобы я написал про каждый инструмент пример использования.
#linux #devops
5👍24⚡5🔥5❤1
Как использовать strace для диагностики linux серверов.
Для чего это может пригодиться:
▪️ Узнать, чем занят зависший или потребляющий много ресурсов процесс. Например, может быть read/write или wait какого-то сокета к БД или внешнему сервису. Также часто бывает спам каких-нибудь mmap (выделение памяти), что намекает на какое-то большое количество создаваемых объектов или бесконечный цикл и тп.
▪️ Убедиться, что процесс получает ваш запрос. Например, в большой распределенной системе довольно сложно понять, пришёл ли запрос на нужный нам веб сервер или другой софт. Можно конечно идти по следам запроса от начала и до конца, проходя через десяток слоев абстракций и сервисов, но гораздо быстрее сразу подключиться к финальной точке назначения и просто посмотреть пришло что-то или нет.
▪️ Посмотреть текст входящего запроса/ответа или логи. Помимо того, чтобы просто понять пришёл запрос или нет, мы сразу можем увидеть текст запроса и текст ответа. Также часто бывают ситуации, когда проще прямо в strace увидеть, что какой-то софт пишет что-то в лог и где этот лог находится. На более менее крупных и нагруженных серверах у нас с десяток мест, куда пишут логи разные сервисы и системы. Например, логи могут идти в стандартный
▪️ Найти причину, почему процесс/запрос падает фаталом. Иногда сталкиваюсь с ситуациями, когда даже какой-нибудь nginx (!) не отдает ответ на запрос и ничего не пишет в лог. Здесь сразу на помощь приходит strace — можно посмотреть, что предшествовало ошибке и как вообще ошибка выглядела глазами syscall.
Во всех кейсах речь конечно про диагностику на prod серверах, когда проблема уже возникла и нужно очень быстро найти ее причины.
#linux #devops #strace
strace показывает все сигналы и системные вызовы (syscall) для выбранного процесса. Он не покажет вам логику выполняемого кода, но по системным вызовам всё же можно понять многое, что происходит внутри. Стандартный способ использования strace -ttyfkp 123. Не пугаемся от обилия флагов, тут всё просто. Флаги -tt добавляют к выводу timestamp (так проще ориентироваться в большом потоке сообщений), -y показывает человекочитаемые названия файловых дескрипторов вместо чисел. Флаг -f означает, что собирать инфомрацию будем в том числе со всех дочерних процессов (удобно подключиться к родительскому и собирать сразу всё), а -k покажет stacktrace каждого вызова (его можно можно не включать без необходимости). И в последнем параметре -p 123 указываем PID нужного нам процесса (в данном случае 123).Для чего это может пригодиться:
▪️ Узнать, чем занят зависший или потребляющий много ресурсов процесс. Например, может быть read/write или wait какого-то сокета к БД или внешнему сервису. Также часто бывает спам каких-нибудь mmap (выделение памяти), что намекает на какое-то большое количество создаваемых объектов или бесконечный цикл и тп.
▪️ Убедиться, что процесс получает ваш запрос. Например, в большой распределенной системе довольно сложно понять, пришёл ли запрос на нужный нам веб сервер или другой софт. Можно конечно идти по следам запроса от начала и до конца, проходя через десяток слоев абстракций и сервисов, но гораздо быстрее сразу подключиться к финальной точке назначения и просто посмотреть пришло что-то или нет.
▪️ Посмотреть текст входящего запроса/ответа или логи. Помимо того, чтобы просто понять пришёл запрос или нет, мы сразу можем увидеть текст запроса и текст ответа. Также часто бывают ситуации, когда проще прямо в strace увидеть, что какой-то софт пишет что-то в лог и где этот лог находится. На более менее крупных и нагруженных серверах у нас с десяток мест, куда пишут логи разные сервисы и системы. Например, логи могут идти в стандартный
/var/log, либо в домашнюю директорию сервиса, либо в stdout docker контейнера, либо могут даже сохраняться внутри docker контейнера в файл. А еще могут уходить в syslog или в journal или даже в /dev/null. В общем, в реальной жизни в /var/log логи оказываются реже всего. В такой ситуации strace — отличная отправная точка. ▪️ Найти причину, почему процесс/запрос падает фаталом. Иногда сталкиваюсь с ситуациями, когда даже какой-нибудь nginx (!) не отдает ответ на запрос и ничего не пишет в лог. Здесь сразу на помощь приходит strace — можно посмотреть, что предшествовало ошибке и как вообще ошибка выглядела глазами syscall.
Во всех кейсах речь конечно про диагностику на prod серверах, когда проблема уже возникла и нужно очень быстро найти ее причины.
#linux #devops #strace
60🔥7👍6❤3🤩3
Охренеть, какие объемы у Cloudflare.
Ребята логируют 50 триллионов (45 петабайт) событий в день. Это 1.5 квадриллиона событий в месяц. Об этом они рассказали в разборе недавнего инцидента, где сервис Cloudflare Logs вышел из строя на несколько часов.
Ребята логируют 50 триллионов (45 петабайт) событий в день. Это 1.5 квадриллиона событий в месяц. Об этом они рассказали в разборе недавнего инцидента, где сервис Cloudflare Logs вышел из строя на несколько часов.
1😱8🔥5👍3
Наткнулся на статью про валидацию емейлов через regexp.
Не сосчитать, сколько раз я видел странные и безуспешные попытки разработчиков написать свою валидацию емейл адресов. Практически никто не читает RFC. Впрочем, обычно эти документы не особо читаемы, так что я тоже в этой лодке. Но можно же хотя бы просто загуглить перед тем как писать какой-то код общего назначения. Ведь он уже миллион раз был написан до вас и всех собак там уже съели. Но разработчики (и не только джуны) зачем-то продолжают тратить своё время на написание заведомо некачественного и ошибочного кода.
На картинке выше только часть регэкспа, который написали энтузиасты в попытке соблюсти RFC. А вот здесь человек попытался реализовать проверку на php. Если ваша проверка не похожа на эту, то даже не показывайте мне её.
Как же правильно валидировать введенный юзером емейл адрес? — Просто проверить наличие
Не сосчитать, сколько раз я видел странные и безуспешные попытки разработчиков написать свою валидацию емейл адресов. Практически никто не читает RFC. Впрочем, обычно эти документы не особо читаемы, так что я тоже в этой лодке. Но можно же хотя бы просто загуглить перед тем как писать какой-то код общего назначения. Ведь он уже миллион раз был написан до вас и всех собак там уже съели. Но разработчики (и не только джуны) зачем-то продолжают тратить своё время на написание заведомо некачественного и ошибочного кода.
На картинке выше только часть регэкспа, который написали энтузиасты в попытке соблюсти RFC. А вот здесь человек попытался реализовать проверку на php. Если ваша проверка не похожа на эту, то даже не показывайте мне её.
¯\_(ツ)_/¯Как же правильно валидировать введенный юзером емейл адрес? — Просто проверить наличие
@ в нём. И всё. Можно еще проверить длинну по RFC, но даже по ней идут споры и большого смысла в этом нет.3😎7👍5🔥4😁2
Мало ли вы не знали про такой инструмент. В Snack можно быстренько накидать простое кроссплатформенное мобильное приложение на React Native. Прямо в браузере можно редактировать код и сразу видеть результат в Anroid и iOS эмуляторах с live reload. Также можно в пару кликов отсканировать QR-код и получить приложение с live reload на своем мобильном, продолжив кодинг всё в том же браузере. Не нужно ни регистраций, ни СМС, ни даже какого-либо локального dev-окружения.
🔥14❤6👍4🤝1
Как использовать
⇨ ltrace — очень похоже на strace, но вместо syscall показывает обращения к динамически подключенным библиотекам (glibc и других). Использовать можно также указывая PID процесса через
⇨ fatrace — выводит все обращения к файлам как для указанного процесса, так и в целом для всей системы. Можно фильтровать как по процессу (чтобы посмотреть как он нагружает диск и какие файлы использует), так и по конкретному файлу (чтобы узнать, какие процессы к нему обращаются). Также удобно использовать при поиске того, что нагружает диск в целом.
⇨ ps — инфа по текущим запущенным процессам. Стандартное использование
⇨ lsof — показывает открыте файлы. Может использоваться как для конкретного процесса (-p PID), так и в целом по всему серверу. По процессу используем, чтобы посмотреть сколько файлов он открывает и что это за файлы. Например, чтобы найти где лежат конфиги, логи и тп. Открытые сокеты тоже показывает, так что можно увидеть куда открыты коннекты и на чем сейчас завис процесс (долгий HTTP или БД запрос). Без указания конкретного процесса полезно, например,
ltrace, fatrace, ps, lsof для диагностики linux серверов.⇨ ltrace — очень похоже на strace, но вместо syscall показывает обращения к динамически подключенным библиотекам (glibc и других). Использовать можно также указывая PID процесса через
-p. Использую в дополнение к strace, когда его становится не достаточно и надо взглянуть на внутренности процесса немного под другим углом. ⇨ fatrace — выводит все обращения к файлам как для указанного процесса, так и в целом для всей системы. Можно фильтровать как по процессу (чтобы посмотреть как он нагружает диск и какие файлы использует), так и по конкретному файлу (чтобы узнать, какие процессы к нему обращаются). Также удобно использовать при поиске того, что нагружает диск в целом.
⇨ ps — инфа по текущим запущенным процессам. Стандартное использование
ps ax для дальнейшей обработки в awk. Например, прибиваем все python скрипты: ps ax | grep python | awk '{print $1}' | xargs kill. Также можно просто написать ps aux для того, чтобы посмотреть, что запущено не так давно (поиск зловредов или каких-то аномалий). Флагов очень много, например, f чтобы увидеть дерево процессов или e чтобы увидеть ENV переменные для каждого процесса.⇨ lsof — показывает открыте файлы. Может использоваться как для конкретного процесса (-p PID), так и в целом по всему серверу. По процессу используем, чтобы посмотреть сколько файлов он открывает и что это за файлы. Например, чтобы найти где лежат конфиги, логи и тп. Открытые сокеты тоже показывает, так что можно увидеть куда открыты коннекты и на чем сейчас завис процесс (долгий HTTP или БД запрос). Без указания конкретного процесса полезно, например,
lsof | grep deleted, чтобы найти открытые файлы, которые были удалены с диска. При этом, пока такой мертвый файл висит открытым, то место на диске не освобождается, так что иногда полезно проверить нет ли какого-то зависшего мусора.🔥5👍4
OpenAI выпустили ChatGPT Agent
Этот агент может не просто выдать вам ответ на вопрос, но и выполнить задачи на вашем компьютере: поискать что-то через браузер и отправить заказ, написать код, выполнить команды в терминале, почистить календарь и так далее. То есть это смесь deep research (поиск в интернете) и agent (управление компьютером).
Всё, что он делает, транслируется в окне чата, так что можно его контролировать. Если надо залогиниться или ввести данные карты, то GPT просит юзера перехватить управление и ввести чувствительную инфу.
Выглядит очень круто. Раньше это надо было делать через кучу костылей, а сейчас это всё из коробки и сделано очень продуманно.
Этот агент может не просто выдать вам ответ на вопрос, но и выполнить задачи на вашем компьютере: поискать что-то через браузер и отправить заказ, написать код, выполнить команды в терминале, почистить календарь и так далее. То есть это смесь deep research (поиск в интернете) и agent (управление компьютером).
Всё, что он делает, транслируется в окне чата, так что можно его контролировать. Если надо залогиниться или ввести данные карты, то GPT просит юзера перехватить управление и ввести чувствительную инфу.
Выглядит очень круто. Раньше это надо было делать через кучу костылей, а сейчас это всё из коробки и сделано очень продуманно.
👍10🔥7💅3🤩1👀1🤝1
Тем временем уже более получаса продолжается глобальный сбой сети Cloudflare. Немалая часть крупнейших сервисов (например, ChatGPT) лежит вместе с ним.
Буду ждать incident report. Поделюсь, если будет что-то интересное.
Буду ждать incident report. Поделюсь, если будет что-то интересное.
👍4🤯1😢1