Как стать автором
Обновить
0
Alexey Elizarov @beauty_free read⁠-⁠only

Fullstack developer

Отправить сообщение

Реверс-инжиниринг промптов for fun and (no) profit

Уровень сложности Простой
Время на прочтение 15 мин
Количество просмотров 2.5K

Этот материал посвящён взлому промптов Notion AI, семи методикам реверс‑инжиниринга промптов и рассказу о том, почему все ошибаются в своих мнениях о промпт‑инъекциях (prompt injection).

Вчера я получил доступ к публичной альфа‑версии Notion AI. У меня ушло 2 часа на то, чтобы, пользуясь промпт‑инъекциями, раздобыть полные тексты внутренних промптов, применяемых для реализации каждой из возможностей Notion AI.

Сегодня я публикую тексты этих промптов, но делаю это не потому, что я — человек безответственный; я отстаиваю точку зрения, в соответствии с которой в этом нет ничего страшного. И я воздаю должное команде Notion, которая так хорошо интегрировала возможности искусственного интеллекта в свой продукт.

Мне, кроме того, пришлось разработать и использовать кое‑какие новые техники приблизительного определения исходных текстов промптов. Я подумал, что было бы интересно представить их вам — моим замечательным читателям.

Читать далее
Всего голосов 19: ↑19 и ↓0 +19
Комментарии 3

Чем на самом деле занимается Chief Technical Officer?

Уровень сложности Простой
Время на прочтение 18 мин
Количество просмотров 12K

В 2017 году я впервые почувствовал себя в роли CTO (Chief Technical Officer, технический директор). Я присоединился к маленькому стартапу в роли разработчика‑сеньора, и не успел опомниться, как оказалось, что я держу в руках бразды правления технической командой. Если сказать кому о том, что я занимаю пост технического директора, прозвучало бы это впечатляюще, но на самом деле моя должность больше соответствовала роли технического руководителя проекта. Я трудился в маленькой компании, в состав которой входило человек десять сотрудников, и плотно занимался разработкой продукта этой компании. Мои дни были наполнены программированием, отладкой и постоянной борьбой с новыми багами и проблемами клиентов. Я, кроме того, был ответственным за то, чтобы наша команда выполняла бы обязательства перед инвесторами и клиентами. Это было не только время непростых задач, но и время мощного обучения, и время профессионального роста.

И ещё — то было время постоянного стресса. Но это — уже совсем другая история.

Перенесёмся в наши дни. Сегодня я — сооснователь цифрового агентства, которое находится в Швейцарии. В нём я занимаю должность CTO. Мы одновременно работаем над несколькими проектами, задействуя в каждом из них универсальные команды. Наше агентство, со времён его создания, немного подросло. Теперь в нём работает почти 50 человек. Эволюционировала и та роль, которую я в нём играю. Я больше не занимаюсь только программированием и отладкой. Теперь я управляю ресурсами, занимаюсь планированием, принимаю стратегические решения. Сейчас передо мной стоят другие непростые задачи. Но я, как и раньше, прямо‑таки наслаждаюсь, решая разного рода проблемы, и понимая, что я — тот, кто формирует техническое видение компании.

Читать далее
Всего голосов 20: ↑18 и ↓2 +16
Комментарии 1

Написание минимальной подсистемы хранения данных в памяти для MySQL/MariaDB

Уровень сложности Средний
Время на прочтение 24 мин
Количество просмотров 5.2K

Я потратил неделю, копаясь во внутренностях MySQL/MariaDB вместе с ещё примерно 80 разработчиками. Хотя MySQL и MariaDB — это, по большей части, одно и то же (я ещё к этому вернусь), я сосредоточился именно на MariaDB.

Раньше я никогда сам не собирал MySQL/MariaDB. В первый день «недели хакерства» я смог наладить локальную сборку MariaDB и твикнул код так, что запрос SELECT 23 возвращал 213. Сделал я и другой твик — такой, что запрос SELECT 80 + 20 возвращал 60. На второй день я смог заставить заработать простую UDF на C, благодаря которой запрос SELECT mysum(20, 30) давал 50.

Остаток недели я потратил, пытаясь разобраться с тем, как сделать минимальный движок для хранения данных в памяти. Именно о нём я и расскажу. Это — 218 строк кода на C++.

Читать далее
Всего голосов 21: ↑21 и ↓0 +21
Комментарии 5

Ищем аномалии: доход, отношения и 10х-программисты

Время на прочтение 21 мин
Количество просмотров 9.8K

Вскоре после того как я, в сентябре 2013, начал вести блог (мне, студенту, тогда больше нечем было заняться), я поставил перед собой цель — писать по статье в неделю. В результате — со дня рождения моего блога и до того момента, когда я начал работать в Wave (тогда мне уже было чем заняться, в результате посты я выкладывал гораздо реже), я опубликовал примерно 150 материалов.

Результаты публикации этих 150 статей оказались очень и очень разными:

— Два поста оказались крайне успешными, добрались до главной страницы Hacker News (первый — о том, что произошло со всеми непрограммистами, второй — о читабельности, хакабельности и абстрагировании кода).

Дэн Луу, после того, как увидел второй из вышеупомянутых постов, подписался на мой блог и начал слать на Hacker News многие мои материалы. В результате ещё штук 5 статей стали довольно-таки популярными. Это привело к приходу в мой блог первой волны подписчиков, с которыми я не знаком лично. Плюс — это дало мне серьёзную мотивацию писать дальше. Я и Дэн, в итоге, стали хорошими друзьями.

— Примерно 95% оставшихся постов получились совершенно непримечательными.

Это — очень типичный разброс результатов публикаций, на который могут рассчитывать блогеры: несколько «хитов» и куча «хлама». Через восемь лет я развил достаточно хорошее чутьё на то, какой пост найдёт отклик у читателей. В результате я смог почти полностью уйти от написания совершенного «хлама». Но, даже учитывая это, несколько моих лучших недавних постов (этот и этот) оказались гораздо успешнее других. Речь идёт о том, что многие делились с другими ссылками на них, и о комментариях к ним, вроде «то, что я узнал, сильно на меня повлияло».

Читать далее
Всего голосов 27: ↑25 и ↓2 +23
Комментарии 2

Генераторы непрерывно распределенных случайных величин

Время на прочтение 15 мин
Количество просмотров 115K
Генератор случайных чисел во многом подобен сексу: когда он хорош — это прекрасно, когда он плох, все равно приятно (Джордж Марсалья, 1984)

Популярность стохастических алгоритмов все растет. Многие из них базируются на генерации большого количества различных случайных величин. Далеко не всегда равномерно распределенных. Здесь я попытался собрать информацию о быстрых и точных генераторах случайных величин с известными распределениями. Задачи могут быть разными, разными могут быть и критерии. Кому-то важно время генерации, кому-то — точность, кому-то — криптоустойчивость, кому-то — скорость сходимости. Лично я исходил из предположения, что мы имеем некий базовый генератор, возвращающий псевдослучайное целое число, равномерно распределенное от 0 до некого RAND_MAX

unsigned long long BasicRandGenerator() {
    unsigned long long randomVariable;
    // some magic here
    ...
    return randomVariable;
}

и что этот генератор достаточно быстрый. Я имею ввиду, что дешевле сгенерировать с десяток случайных чисел, нежели чем посчитать логарифм или возвести в степень одно из них. Это могут быть стандартные генераторы: std::rand(), rand в MATLAB, Java.util.Random и т.д. Но имейте ввиду, что подобные генераторы редко подходят для серьезной работы. Зачастую они проваливают разные статистические тесты. А также, помните, что вы полностью зависите от них и лучше использовать свой собственный генератор, чтобы иметь представление о его работе.

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


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

Равномерное распределение





Читать дальше →
Всего голосов 44: ↑42 и ↓2 +40
Комментарии 7

Тестируем ruGPT-3 на новых задачах

Время на прочтение 9 мин
Количество просмотров 49K

Рекомендательные системы с нуля, чат-боты и многое другое


Погрузившись в пучину текстовых данных, в октябре этого года мы обучили модели ruGPT-3 — модели для русского языка на основе архитектуры от OpenAI. Но на что же способны эти модели? В этой статье мы соберем первые примеры применения модели — и попробуем новые.

Мы представляем первые результаты самой большой из обученных моделей — ruGPT-3 Large, разработанной совместно с командами SberDevices, Sber.AI и SberCloud. Изучим границы ее применения вместе с вами.

image

В этом году на AI Journey мы подготовили соревнование применений ruGPT-3 — в трек можно сдать любое решение с использованием модели, оцениваемое по трем шкалам — инновационность, эмоциональное вовлечение и бизнес-применимость.

Спойлер:
1 млн рублей за первое место

Читать дальше →
Всего голосов 29: ↑27 и ↓2 +25
Комментарии 51

Тестирование Node.js-проектов. Часть 2. Оценка эффективности тестов, непрерывная интеграция и анализ качества кода

Время на прочтение 16 мин
Количество просмотров 9.5K
Тестирование Node.js-проектов. Часть 1. Анатомия тестов и типы тестов

Сегодня, во второй части перевода материала, посвящённого тестированию Node.js-проектов, мы поговорим об оценке эффективности тестов и об анализе качества кода.

image
Читать дальше →
Всего голосов 23: ↑22 и ↓1 +21
Комментарии 0

Тестирование Node.js-проектов. Часть 1. Анатомия тестов и типы тестов

Время на прочтение 27 мин
Количество просмотров 38K
Автор материала, первую часть перевода которого мы сегодня публикуем, говорит, что он, как независимый консультант по Node.js, каждый год анализирует более 10 проектов. Его клиенты, что вполне оправданно, просят его обратить особое внимание на тестирование. Несколько месяцев назад он начал делать заметки, касающиеся ценных приёмов тестирования и встречающихся ему ошибок. В результате получился материал, содержащий три десятка рекомендаций по тестированию.

image

В частности, речь здесь пойдёт о выборе подходящих в конкретной ситуации типов тестов, об их правильном оформлении, об оценке их эффективности, и о том, где именно в CI/CD-цепочках нужно их размещать. Некоторые из приведённых здесь примеров проиллюстрированы с использованием Jest, некоторые — с использованием Mocha. Этот материал, в основном ориентирован не на инструменты, а на методологии тестирования.

Тестирование Node.js-проектов. Часть 2. Оценка эффективности тестов, непрерывная интеграция и анализ качества кода
Читать дальше →
Всего голосов 25: ↑24 и ↓1 +23
Комментарии 0

Всё о визах в Таиланд в 2023 году

Время на прочтение 8 мин
Количество просмотров 61K

От “А” до “Я” о визах в Таиланд: виды, стоимость, нюансы. 

Всем привет! Я – Женя, как-то я прилетела в отпуск в Таиланд и осталась тут жить. За это время я делала 3 визы и сейчас в процессе получения 4 – Elite visa. В статье расскажу обо всех тонкостях, связанных с получением

*Далее цены указываю в батах. Чтобы перевести в рубли, смело умножайте на два. Это более-менее точная цифра с учётом всех конвертаций.

Читать далее
Всего голосов 17: ↑10 и ↓7 +3
Комментарии 14

Нужны ли изменения в работе команды? Рассчитываем ответ по формуле Глейчера

Время на прочтение 8 мин
Количество просмотров 4.8K

Старая мудрость гласит: «Работает — не трогай»‎. Но что делать, если результат работы ухудшается или появились новые вводные? Например, рабочая нагрузка увеличилась, а людей в команде столько же. Вы хотите что-то поменять, но не знаете, как это сделать, не навлекая на себя гнев сотрудников. Да и вообще, так ли нужно что-то менять?

Под катом рассказываем, как с помощью формулы Глейчера оценить необходимость изменений в работе и подготовиться к ним. А в комментариях ждем ваши истории — внедряли ли вы изменения сами или, может, стали «жертвой» непродуманных изменений.
Читать дальше →
Всего голосов 50: ↑44 и ↓6 +38
Комментарии 6

Магия оптимизации SQL запросов

Время на прочтение 7 мин
Количество просмотров 58K

Даже самый простой SQL запрос можно выполнить по-разному. Но из всех вариантов СУБД нужно выбрать оптимальный, как же это сделать? Неужели придётся перебрать все возможные варианты? Давайте разбираться.

Читать далее
Всего голосов 24: ↑24 и ↓0 +24
Комментарии 19

Универсальный VPN с WireGuard, MikroTik и Keenetic

Время на прочтение 7 мин
Количество просмотров 47K

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

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 39

Сам себе сотовый оператор

Время на прочтение 14 мин
Количество просмотров 88K
… Кроме типовых для журнала статей, там была статья за авторством некоего «DI HALT» про то, как из двух телефонов и микроконтроллера извлечь кучу лулзов. «Прикольный ник» — подумал мальчик Андрей и перелистнул страницу, ибо ниасилил. А за ней была статья того же автора про то, как скрестить флешку с мышкой. «А вот это нам под силу» — подумал мальчик и убил уже знакомую вам флешку банальной переполюсовкой. Но зато он понял, что электроника — это весело и почти безопасно. — с просторов



Приветствую всех!

Многие из вас наверняка слышали про OsmocomBB. Однако каких-то исчерпывающих мануалов по запуску почему-то крайне мало. Итак, в ходе данной статьи постараемся максимально простым образом запустить собственную базовую станцию из доступных комплектующих. Постараемся разобраться, как сделать так, чтобы оно точно заработало.
Читать дальше →
Всего голосов 342: ↑342 и ↓0 +342
Комментарии 135

Зачем нам осваивать космос?

Время на прочтение 2 мин
Количество просмотров 11K

Любой, кто читал фантастику 60, помнит уверенность тогдашних авторов в скором освоении космоса. Да и разве можно было сомневаться, что уж когда-когда, но в 21 веке у человечества будут и орбитальные города и колонии на Марсе, не говоря уж про Луну.

Читать далее
Всего голосов 33: ↑17 и ↓16 +1
Комментарии 358

О desktop-уведомлениях в Linux-системах

Время на прочтение 7 мин
Количество просмотров 11K

В операционной системе, как и в жизни, обширны способы передачи информации: иногда можно деликатно сказать что-то в стиле «не будет ли любезен многоуважаемый джинн», или сделать жест рукой, чтобы твой собеседник понял без лишних слов, или в некоторых ситуациях достаточно лишь встретиться глазами, чтобы понять, как у тебя дела. Так и в арсенале ОС имеются сообщения из системного трея, обычные десктоп-уведомления из центра уведомлений, лампочки-индикаторы на клавиатуре, собственные уведомления у приложений и проч.

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

Читать далее
Всего голосов 19: ↑15 и ↓4 +11
Комментарии 14

Модели управления инфраструктурой

Время на прочтение 7 мин
Количество просмотров 6.4K

Управление инфраструктурой даже средней организации является непростой задачей. Большое количество серверов требует постоянного внимания. Установка обновлений и развертывание новых систем все это трудоемкие задачи. Поговорим о том, каким способами можно автоматизировать выполнение данных задач.

Читать далее
Всего голосов 13: ↑7 и ↓6 +1
Комментарии 0

Учим Алису здороваться

Время на прочтение 5 мин
Количество просмотров 37K

Хочу поделиться опытом добавления некоторой вольности Алисе (внутри колонок поддерживающих локальный API).

Идея заключается в том, чтобы Алиса реагировала на присутствующих людей. Для этого их необходимо идентифицировать, например, с помощью распознавания лиц. В статье будет использован самый простой (на мой взгляд) вариант создания модели для распознавания лиц – тренировка модели в Google Teachable Machine, так как он не требует знаний и хорошего железа.

Читать далее
Всего голосов 25: ↑23 и ↓2 +21
Комментарии 21

How to Start Reverse Engineering in 2021

Время на прочтение 4 мин
Количество просмотров 54K

Reverse engineering might seem so complex, that not everyone has the bravery required to tackle it. But is it really that hard? Today we are gonna dive into the process of learning how to reverse engineer.

First of all, try to answer yourself, what are you hoping to achieve with reverse engineering? Because reverse engineering is a tool. And you should choose the right tool for your task. So when reverse engineering might be useful?

Read more
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 0

Правильная архитектура данных с первых спринтов

Время на прочтение 6 мин
Количество просмотров 8.4K

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

Иногда размер технического долга оказывается настолько большим, что для его устранения запускаются отдельные проекты, рассчитанные на месяцы и годы - а это сопоставимо с 5-10 time-to-market новых решений. Соответственно, все новые запуски откладываются до тех пор, пока авгиевы конюшни не будут расчищены, покрашены и перестроены. Отдельное зрелище - СТО, который убеждает СЕО и добрую половину правления, а также акционеров, потратить несколько тысяч человекочасов драгоценных разработчиков на то, что по завершении не поможет бизнесу моментально, а только ускорит на неизвестное время получение выгод от новых продуктов в будущем. Правда, после того, как запуск каждого из этих продуктов будет отложен на несколько месяцев.

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

Читать далее
Всего голосов 7: ↑5 и ↓2 +3
Комментарии 8

Проверяем Архитектурные стили на движке Factorio (часть 1)

Время на прочтение 28 мин
Количество просмотров 42K

Добрый день всем, дорогие читатели!

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

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

Как сказал мой добрый друг-программист про Factorio: "Эту игру создали программисты для программистов" и эти слова плотно въелись в мою память. И реально игра в эту игру очень сильно напоминает процесс разработки ПО: можно просто строить как попало и прийти к полностью запутанной и сложнообслуживаемой системе, а можно подойти к вопросу с умом изначально и в итоге получить производительную и легкую в обслуживании систему (Прям как в жизни!)

Читать далее...
Всего голосов 25: ↑25 и ↓0 +25
Комментарии 24

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность