Первая в мире женщина-фрилансер в 1955 году с четырьмя детьми?
Женщины-фрилансеры и удаленщицы были очень многочисленны в некоторых странах, например в США, еще в первой половине XIX века. Пряли, ткали, вышивали. Для одного или нескольких предприятий, числясь сотрудницами и не числясь, на оборудовании работодателя или собственном. Не удивлюсь, если и в России такое было.
Не говоря уже о "фрилансершах", работавших на частных клиентов.
Порой путь человека может быть предопределён. Завтра исполняется 69 лет Тиму Бернерсу-Ли, создателю всемирной паутины, о жизни которого мы завтра вам расскажем подробно. Великие люди порой затмевают своих предков, так случилось и сейчас: мало кто знает родителей человека, создавшего WWW.
Но как вам создание одной из первых программ для диагностики ошибок в железе и ПО первого коммерческого компьютера? Первая в мире женщина-фрилансер в 1955 году с четырьмя детьми? Человек, который в середине ХХ века смог добиться равных условий труда и равной оплаты для программистов? Женщина, которая считает, что самое классное в программировании – это машинный код! Это всё мать Тима, Мэри Ли Бернерс-Ли (Вудс). Сейчас мы познакомимся с ней поближе!
Мэри Ли и маленький Тим Бернерс-Ли
Сегодня вы будете читать историю жизни «бабушки интернета», которая очень любила прогресс. Технический прогресс даёт вам возможность читать этот текст самому, или послушать его в подкасте, который для вас подготовил автор.
❯ Семья и учёба Мэри Ли
Мэри Ли родилась в учительской семье в 1924 году. Её мать с рождением ребёнка преподавать перестала, а отец продолжил. Он занимался с теми детьми, успехи и способности которых были невысоки. Мэри пошла в одну из первых школ с совместным обучением мальчиков и девочек. Сама Мэри любопытно отзывалась о своём месте обучения:«Школа не отличалась академичностью, но занималась воспитанием хороших граждан; там не было побоев палками, задержаний и прочих дисциплинирующих моментов. А в школе брата была и травля, и удары палками, и другие подобные вещи».
Будущая учёная начала делать карьеру по прямому совету родителей. Её родители и познакомились на собрании в защиту прав женщин. В рамках этих собраний не только говорилось о политических правах женщин, но и о том, что должна быть альтернатива замужеству для жизни. Такой альтернативой стала работа и высокая квалификация. Так Мэри Ли начала свой путь к программированию с класса с сильным математическим уклоном, который не так давно стал доступен для девочек. Затем последовало обучение в университете, которое пришлось на время Второй Мировой войны, и эвакуация из Бирмингема в небольшой городок Лидни.«Депрессивный, но красивый», – так описывала его Мэри. Там она продолжила учиться, причём жили студенты в домах простых граждан, даже не в интернате, его не было.
После возвращения в Бирмингем выяснилось, что здание, где проходили занятия, подверглось бомбардировке, было разрушено крыло здания. В институте не хватало преподавателей: все ушли на фронт. За два года у Мэри сменилось 5 учителей математики, что сильно сказалось на обучении. В возрасте около 20 лет лишь благодаря стипендии она смогла уехать в Манчестер и заняться там инженерной подготовкой за свой счёт. Стипендия составляла 75 фунтов в год, чего хватало, со слов Мэри, на безбедную жизнь. Для примера, у её коллег (еврейских беженцев) было всего 22 фунта в год.
Мэри Ли Вудс, в студенчестве
В 1944 году Мэри как талантливую выпускницу направили в центр авиационных исследований, но там она остаться не смогла. Её брат, лётчик, совсем недавно погиб на войне. Мэри вернулась ближе к дому, она тяжело переживала смерть брата и хотела быть ближе к своей семье. До 1947 года она продолжила изучать математику в институте и увлеклась астрономией, которая привела её в… Австралию!
❯ Австралия, астрономия и дискриминация
Для этого всего-то потребовалось прочитать статью в научном издании астрономического общества, написать статью её директору, доктору из Канберры, который оценил уровень подготовки молодого математика и выдал Мэри стипендию на обучение в обсерватории Канберры. На корабле для иммигрантов с контрактом на два года Мэри направилась изучать астрономию. Астрономом ей стать было не суждено.
Почему? Сексизм, господа. Ей дали «очень интересную работу» осуществлять классификацию звёзд по величине и радиусу. Простая техническая работа, которая не требует вообще никакого творчества. А досталась она Мэри по одной причине: мужчине, который занимался этой работой, просто не хватало терпения её вести. Но узнала Мэри об этом позже, уже когда покинула работу. Всего она провела в Австралии три года, сохранив воспоминания о прекрасном месте отдыха, катании на лошадях, красивых видах и совершенно неинтересной работе.
Удивительный путь в программисты
После возвращения домой Мэри впервые познакомилась с компьютером, просто найдя объявление: «Требуются математики для работы на цифровом компьютере». До этого никакого опыта работы с компьютерами у неё не было, она их даже не видела и пользовалась только механическим калькулятором Brunsvigas, который умел работать с перфокартами.
Что делает айтишник, когда чего-то не понимает? Идёт курить мануалы. Именно этим и занялась Мэри, она пошла в библиотеку читать, что же такое компьютер и… подала заявление на работу!
Сама Мэри так описывала своё собеседование: «Я пошла на собеседование; и, поскольку я кое-что знала о компьютерах, я могла задавать умные вопросы. Это должно было на треть увеличить мою первоначальную зарплату». Так она устроилась в фирму «Ферранти», где ей предстояло работать с первым коммерческим компьютером «Ferranti Mark 1».
Можно подумать, что Мэри, говоря современным языком «ушла в айти» за большими деньгами, но это не совсем так. На тот момент работа в компьютерной фирме не была особо прибыльной, местные жители предпочитали близлежащие фабрики хлопкопрядильной промышленности. А «Ферранти» в том районе делали радиоприёмники, где девушки на конвейерах монотонно паяли компоненты. Но Мэри наняли не паяльщицей, а в команду программистов.
Причём в компании была просто шикарная система обучения. Мэри вспоминала: «Нам показывали основы, некоторые базовые вещи, а потом – ну, ты сам разбираешься. У коллег спрашиваешь. Советуешься. Тебе поставили задачу, а ты её выполняй, всё очень просто. Не справляешься – свободен». Любопытно, но никаких гендерных различий в этой сфере не было, что мужчины, что женщины получали одинаковую «вводную», только мужчинам больше платили. Об этом мы расскажем чуть позже.
❯ Совсем (не)пыльная работа
Задачей Мэри было программирование в машинном коде. Она занималась решением систем уравнений. Огромного их количества. Задачи выполнялись для авиации: расчет напряжений вдоль крыльев и ряд похожих сложных и однообразных вычислений. А самое главное — очень многочисленных вычислений.
Код писался на тридцати двух символьной системе. Для этого нужно было выучить наизусть таблицу соответствия между 32 цифрами базы чисел, их числовым эквивалентом и их эквивалентом в двоичной системе счисления.
Та самая таблица, которую нужно было знать наизусть и уметь использовать.
Инструкции вводились в компьютер с перфолент, результат обработки также выводился на них. Программа формировалась пятисимвольными буквенно-цифровыми значениями, которые пробивались в двоичном коде на перфолентах.
Отдельную проблему создавала оперативная память. Она была реализована через трубки Уильямса–Килберна и вмещала двадцатибитное слово. Второе слово в память уже не помещалось и переходило во вторичную память, магнитный барабан. Любая настройка программ вызывала большие сложности в том числе и из-за того, что машина была одна и время пользования было сильно ограниченным. В то время существовала шутка, связанная с IBM: у руководителя висел плакат с надписью «ДУМАЙ!», а у работников фирмы «Ферранти» тоже висел плакат «Думай, но не здесь!»
Одной из важных задач, которые ставились перед Мэри, была попытка создания одной из первых диагностических программ. Эта программа должна была выполняться с невероятной экономией памяти. Запустить две программы одновременно было физически нельзя, компьютеры этого просто не умели. Поэтому сначала запускалась программа для теста, и потом она, как ведущая, запускала тестируемую программу.
Компьютер Ferranti Mark 1
В фирме были достаточно напряжённые отношения между инженерами и программистами. Опять же, всё сводилось к тому, что пользоваться компьютером мог лишь один человек. Естественно, время за техникой было чётко разделено, и люди даже спали рядом с компьютером. Мэри рассказывала, что приносили с собой раскладушки и спали непосредственно в зале, ожидая своего времени работы. Вас разбудили, вы бахнули кофе и айда работать!
Программисты постоянно конфликтовали с инженерами, вся трубка (оперативная память) могла оказаться заполненной единицами, машина работать дальше не будет. А у этого было две почти равнозначные причины: или программист накосячил, или машина опять сломалась. Извечный спор: кто виноват и что делать…
❯ Кто должен бороться с дискриминацией?
Когда появился компьютер Mark 1* – надёжность существенно увеличилась, и фирма начала заниматься продажей компьютеров, в первую очередь, в сферу авиастроения. Мэри разработала программу для инвертирования матрицы 40 на 40 и должна была ехать в Италию для демонстрации работы этой программы, но не смогла, на тот момент она уже была беременна, но тут мы чуть забегаем вперёд.
Женщина вяжет за компьютером «Ferranti Mark I». Cнимок рекламный, женщина, скорее всего, – модель. Снимок иллюстрирует надёжность компьютера.
Незадолго до существенного роста фирмы, ещё даже до знакомства со своим будущим мужем, Мэри подняла самый настоящий бунт! Внутри фирмы она начала борьбу за права женщин и успешно в ней одержала победу. Во время работы оказалось, что мужчинам платят больше. На тот момент обсуждение заработка считалось категорически неприличным. После того как разная зарплата стала известна, Мэри обратилась напрямую к руководству фирмы. Ей сделать это было легче, в тот момент она снимала квартиру вместе с помощником руководителя по подбору персонала, у нее был прямой выход на начальство.
Бунт удался. В 1951–1952 годах, когда происходили описываемые события, фирма «Ферранти» установила равные зарплаты для молодых сотрудников вне зависимости от их пола. По мере роста мастерства и продвижения по службе они стали получать равные прибавки, выполняя одинаковую работу.
Однако, был у войны и второй эпизод. Когда «Ферранти» построила новый компьютер для университета, основную работу на нём выполняли университетские сотрудники, а фирма оставила за собой время с полуночи до восьми утра. Под влиянием одного конкретного персонажа мужского пола (который остался неназванным) отдел кадров принял гениальное решение: не допускать женщин на работу с полуночи до 8 утра. Пришлось повторно бунтовать и убирать эту «заботу».
❯ Любовь, семья, работа и фрилансерство
В 1952 году Мэри познакомилась со своим будущим мужем, причём знакомили их аж трижды, но сначала это были мимолётные рабочие встречи, и лишь когда их в третий раз познакомили, уже на праздничном ужине, они вдруг поняли, что раньше встречались. Мэри вспоминала забавную историю, когда она всю ночь работала за компьютером, а будущий муж звонил по телефону, но Мэри слышала всё, что он говорит, несмотря на работающие рядом очень громкие телетайпы. Позже был торжественный ужин, на котором их «познакомили», скоротечный роман, свадьба в 1954 и рождение Тима Бернерса-Ли в 1955 году.
Мэри Ли и Конвей Бернерс-Ли в 1954 году.
С рождением ребёнка (а потом ещё трёх штук) работать на фирме стало сложно, и Мэри придумала… удалённое программирование, фриланс, если хотите. Она могла, находясь у себя дома написать программу под конкретную задачу, а потом протестировать её уже в готовом виде. И такие заказы она активно получала.
Мэри была достаточно известна в своё время в весьма немногочисленной среде программистов, кроме того, её муж, Конвей, оставался на работе и мог помогать с заказчиками. В то время женщин-программистов и так было немного, а чтобы они ещё и на дому работали – вообще уникальная ситуация.
Мэри вспоминала, что ей очень хотелось на работу, она любила свою работу, но никогда не сомневалась, что сделала правильный выбор и стала мамой четверых детей. Она потом вспоминала, что семейное счастье и дети в самом прямом смысле ломают карьеру. Позже была создана F International – британская компания, которую основала другая женщина-программист Стефани Ширли. Эта копания работала именно с женщинами-программистами-фрилансерами. Это была первая подобная компания, и её, в широком смысле слова, политическое влияние имело не меньшее значением, нежели экономическое. Фирма активно привлекала внимание прессы к проблеме работы женщин-программистов. История этой фирмы, по хорошему, стоит отдельного текста.
Стефани Ширли, 1985
Однако для Бернерс-Ли работа в этой фирме не совсем подходила, у Мэри были свои заказчики, например, к ней обращалось Лондонское транспортное управление. Задача Мэри состояла в том, чтобы уменьшить задержки движения общественного транспорта. Группа специалистов рассчитывала, какие условия могут создавать автобусные пробки, а Мэри переводила это всё в работающую программу. Работ было множество, например, запуск метеозондов в военном городе, где нужно было быть крайне аккуратной с округлениями. Параллельно происходила компьютерная революция. Сначала для выполнения задачи Мэри пришлось выучить Mercury, потом Algol, сильно позже – Fortran, уже после возвращения на постоянную работу. Никакие лавры не позволяли отставать от прогресса.
Мэри работа «из дома», если это можно так назвать, до момента, пока младшему, четвёртом ребёнку в семье, не исполнилось 8 лет. Если вспомнить скорость развития информационных технологий, а также помнить, что дети Мэри родились не одновременно, то пропустила она просто невероятный для сферы программирования срок – 16 лет (!!). Вернуться в постоянно изменяющуюся сферу – почти фантастика. Но увлечённый человек может многое.
❯ Возвращение на работу и новый статус
После огромного перерыва Мэри вновь выходит на постоянную работу, но не в айти, а в школу. Не просто в школу, а в специализированную женскую гимназию. Это был серьёзный вызов для Мэри Ли. Она вспоминала: «Я обнаружила, что преподаю математику четырнадцатилетнему ребёнку, который не знает, как складывать числа до десяти, а я не знала, как его научить этому за те 40 минут, которые есть». Кроме того, сама Мэри очень медленно читала и её стиль работы в целом можно назвать «медленным». Преподавала она недолго, поняв, что это «не её» деятельность, несмотря на серьёзные знания математики. При этом, Мэри не «занимала чьё-то место», как может предположить современный читатель. Позже она вспомнит: «Одной из причин, почему я согласилась работать, было полное отсутствие у школы альтернатив. Лучше уж я, чем никого». Мэри часто советовалась со своим мужем и старшим сыном Тимом, получавшим на тот момент передовые знания в области математики, с которыми не была знакома сама Мэри Ли.
И вот тут она вернулась в программирование, научившись использовать фортран. Мэри стала работать в фирме, которая специализируется на PERT (Program Evaluation and Review Technique), методе оценивания и анализа проектов, которые используются при управлении огромными сложными проектами и оптимизации этих систем.
Во время работы Мэри отметила удивительную для себя вещь: молодёжь программирует намного быстрее, чем она, и никто не пишет инструкции и руководства. Её коллеги этого просто не умели, за это взялась сама Мэри.
Позже она со смехом вспоминала: «Теперь я знаю, почему все инструкции такие плохие». Мэри на собственном опыте столкнулась с тем, что писать их – сложный процесс. Просто собрать объём информации и комментариев совершенно недостаточно. После того как она проводила всю работу, делала инструкцию понятной и доступной… Менялась сама программа! Программа существенно меняется чертовски быстро. Да и написание инструкций требовало очень серьёзного анализа – что такое «очевидно»? что такое «все понятно»? Чему уделить много времени? Проработав несколько лет, Мэри поняла, что больше не вытягивает тот уровень и… просто ушла на пенсию в 1987 году в возрасте 62 лет, причём вместе со своим мужем, которому исполнилось 65.
Мэри Ли Бернерс-Ли на одном из последних интервью.
На пенсию Мэри отправила не только усталость от работы, от погони за современными технологиями, но и состояние здоровья. От постоянного стресса у неё стал ухудшаться слух, и она выбрала его сохранение вместо трудовой занятости. Проблемы со слухом на пенсии закончились. В одном из интервью Мэри вспоминала, что на пенсии хорошо. Можно спокойно работать по дому, пользоваться помощью людей, вообще не нервничать. При этом Мэри всегда поддерживали в её рабочих делах муж и семья. Она позже вспомнит, что именно семья помогла ей вернуться в программирование.
❯ Что самое главное в жизни?
У Мэри редко брали интервью, а когда брали, спрашивали в основном про старшего сына Тима Бернерса-Ли и интернет. При этом хоть сама Мэри и называет себя в шутку «бабушкой интернета», но не превозносит заслуги своего старшего сына.
Говоря о своих детях, она весело замечает, что почти всех направила на работу с компьютером: «Пит и Хелен тоже по работе связаны с информационными технологиями. Вся семья – отец, мать, трое детей – занимаются информационными технологиями, лишь один, самый младший, Майк – бунтарь, не пошёл по отеческим стопам!» Младший сын тоже ушёл в науку, он является одним из ведущих исследователей проблемы «углеродного следа». В настоящее время (2020-е гг.) Майк вместе с Тимом изучают влияние ИКТ на климат.
Мэри Ли Вудс и Конвей Бернерс-Ли в 2013 году.
На вопрос «Что в работе за компьютером кажется вам наиболее приятным?» Мэри отвечала: «Программирование на машинном коде, я не получала столько удовольствия от другой работы. Это очень весело, было столько возможностей, хоть это и отнимало чудовищно много времени. Это аккуратно и, в прямом смысле слова, красиво». Вполне вероятно, что и молодость, и хорошая компания повлияли на такие убеждения. Однако они проявились в детях. Мэри с самого детства максимально поощряла тягу к открытию нового и изобретательству у своих детей, что даёт им возможность на протяжении всей жизни оставаться в тонусе и следить за современными технологиями. Иногда она корила себя, что сама упустила прогресс в своё время, предприняла попытку его догнать и до конца не смогла. Возраст берёт своё, учиться становится сложнее…
Мэри Ли Вудс покинет этот мир на шестьдесят третьем году счастливого брака, в возрасте девяносто трёх лет, прожив яркую и насыщенную, а главное, с её собственных слов, счастливую жизнь. Мэри была, в некотором роде, идеалистом, идеалистом был и её муж, о котором стоит рассказывать отдельно. И вместе эти два человека, математики и программисты, что прошли путь от первых программ до современной повальной компьютеризации, воспитали четверых детей. К сожалению, помним мы их преимущественно из-за того, что их первенец, Тимоти Бернерс-Ли, создал интернет (который он на самом деле не создавал) и дал нам возможность познакомиться со своей замечательной матерью, пусть и заочно.
Сделал пост с этой же картинкой, т.к. не знал что ТС есть и на Пикабу.
@imctobitch, прошу прощения больше не повториться.
К картинке я добавил текст "И не только Гриша, И не только фронтэнд... И даже не только программисты..." потому что выдалось 5 минут на одну очень важную тему.
Причины, почему в 99,9 % случаев всё происходит через жопу.
Для почти всех разработчиков будет открытием, что помимо классической классификации софта есть ещё и производственно-эксплуатационная. Есть 4 крайне важные градации:
Штат специалистов
Крупная команда (> 7 человек)
Обычная команда ( 2 - 7 человек)
Один исполнитель
Масштабная:
Крупный проект
Мелкий проект
Разовая задача
Нагрузочная:
Очень много пользователей одновременно (> 10 тысяч)
Нормальная нагрузка (100 - 10к)
Незначительная нагрузка. (< 100)
Периодичность:
Постоянная работа
Работа периодами (например, в рабочее время)
Разовая задача
Так вот - все "как надо" в ИТ сфере обычно подразумевают крупную команду, крупный проект, нормальную нагрузку и постоянную работу.
При этих вводных все эти "чистые коды" работают и иногда даже хорошо...
!!! НО ТОЛЬКО В ЭТИХ УСЛОВИЯХ !!! Во всех остальных условиях следование этим принципам является идиотизмом. Правда этот идиотизм настолько врос в профессию, что многими он воспринимается как должное и естественное.
Пятница, писать лень, так что 3 примера:
Разовая задача. Эта задача которая по тем или иным причинам либо не возникнет снова, или ТЗ будет изменено настолько, что проще написать снова. Тут нужно говнокодить по страшному.
Пример - бывает, что госорганы для своих каких-то целей запрашивают данные. Эти данные могут быть довольно сложно структурированы в БД т.е. руками и простым запросом не решить. Такие запросы НИКОГДА не повторяются. Написали код, выполнили и забыли. Все проектирования классов, тесты и прочая шняга - это время потраченное абсолютно впустую.
Крупный хайлоад. Вы должны писать код так, чтобы он работал быстро. В коде 100 if подряд? если это конкретно здесь работает быстрее - делайте именно так. Потому что от качества работы приложения напрямую зависит количество серверов на котором это всё будет работать. Серверов стоимость которых зачастую примерно равна квартире в каком-нибудь региональном центре.
Менеджеры "от бизнеса" эти нюансы очень остро чувствуют. И 90 % неприязни к ИТ как раз и заключается в том, что у них есть понимание, что эта задача должна стоить Х и делаться за У времени, а по факту бюджеты и сроки перекрываются в разы. И в качестве ответа на вопрос "какого хера?" им рассказывают про SOLID, Agile и далее по списку.
Я не раз наблюдал, когда гендир спокойно подписывает увольнение сеньору, (да ещё и предварительно его спровоцировав на это самое увольнение), но умоляет остаться джуна.
Просто потому что конкретно этот джун понимает что не все задачи нужно делать "по канону".
Разработчики часто не видят ситуацию "в целом". У бизнеса совершенно другие ценности. Бизнесу нужно прежде всего решать свои задачи. И решать их экономически целесообразно.
И в 99 из 100 проектов "каноны" и "мастхэв" ИТ-индустрии для бизнеса это - полный пиздец, которым пользуются исключительно потому, что нет более подходящего предложения.
Могу проиллюстрировать простым примером. Есть "джуновская" булка хлеба, которая "здесь и сейчас" стоит 20 рублей. Купил-съел. Есть "мидловская" хлебопечка, которая делает хлеб получше, но дороже и 4 часа. А есть хлебзавод "сеньора", который хер знает когда построят, стоит дохера и может давать продукт только тоннами.
Так вот, если компания планирует продавать хлеб тоннами, то хлебзавод рулит.
Если компания хочет разок выебнуться, то хлебопечка рулит.
Если нужно просто пожрать, то просто покупается булка хлеба.
А когда "канон должен быть везде", то получается, что в 90 % случаев вы голодный приходите за хлебом, а с вами начинают согласовывать проект хлебзавода...
И менеджер понимает, что ему продают булку хлеба по цене хлебзавода. И самая главная проблема для него в том, что ВСЕ ДОСТУПНЫЕ КАНДИДАТЫ продают именно это. За специалистов, которые могут сопоставлять задачи и способы их решения грамотные HR войны ведут. Потому что найти 50 сеньоров проще, чем 1 такого.
И самое главное - это не уникальная для ИТ ситуация. В других отраслях всё абсолютно то же самое.
Компьютерное зрение (CV) появилось на горизонте где-то в 1960-х годах. Мало того, что это было время, когда компьютеры сами по себе были чем-то из области фантастики, но инженеры в этой области уже начали задумываться: "А что если мы научим эти машины видеть?"
Лоуренс Робертс, или просто Ларри, стал пионером в области CV. Закончив MIT, он в 1963 году защитил докторскую по использованию компьютеров для обработки изображений.
Но какой была его мечта? Научить машины "видеть".
В те времена ученые уже понимали, что компьютеры могут больше, чем просто считать. Робертс и его коллег вдохновляла идея, что машины могут анализировать визуальную информацию так же, как и люди. Они хотели автоматизировать задачи, которые до сих пор были подвластны только человеческому глазу.
Что ж, у них это получилось.
Робертс сосредоточился на преобразовании 2D-изображений в 3D-информацию. Это была сложная задача, но он разработал методы для определения границ объектов и их сопоставления с моделями.
Технически, методы Ларри были похожи на нынешние сверточные нейронки (CNN): доктор использовал техники для выделения границ объектов на изображениях. Этот процесс включал нахождение изменений яркости или контраста на изображении, чтобы определить, где один объект заканчивается, а другой начинается.
И это дало свои плоды — его первым достижением стала программа, способная распознавать простые формы: круги, треугольники, квадраты. Компьютер смог обработать изображение блок-схемы или чертежа с четкими линиями и углами. Это и стало тем самым “мостиком” от догадок к действиям – машины действительно могли анализировать визуальные данные.
Всем привет! Как насчет того чтоб перенять мой опыт?
Сегодня я хочу затронуть две темы, о одной из них мало информации в открытых источниках. Первое - это как я реализовал защиту в Telegram на REST API. Второе - это какие дыры есть в Mini App Telegram.
Вводные данные
Я разрабатываю Mini App в Telegram, это такая штука открывающаяся внутри бота и есть внутрение приложение Telegram.
Стояла задача разработать приложение с админкой, тратить время на развертывание сервера, налаживание и его защиту не было времени. Нужна оперативная работа.
Изучив возможные варианты, выбрал Strapi - это OpenSource проект написанный на Node.js. Развернуть можно как в облаке так и локально. Имеет поддержку русского языка.
Так выглядит админка Strapi
Если в общем, то мой стек используемых инструментов выглядит следующим образом:
Telegram App ( Библиотека )
Strapi ( Админ панель + REST API )
PostgreSQL ( База данных )
Next.js ( Само приложение )
Стек технологий
Решение с защитой что я предлагаю подойдет каждому. Главное понять его принцип.
Как я защищал REST API? Валидация данных
Когда пользователь открывает веб-приложение через Telegram, ваше приложение получает начальные данные от самого Telegram, такие как идентификатор пользователя и его имя. Чтобы убедиться, что эти данные подлинные и не были изменены, используется специальный процесс проверки.
Преобразование данных: Приложение преобразует начальные данные в удобный формат.
Создание строки для проверки: Из всех параметров (кроме специального hash) создается отсортированная строка.
Создание секретного ключа: С помощью токена вашего бота создается секретный ключ.
Создание цифровой подписи: Используя секретный ключ и строку параметров, создается цифровая подпись.
Сравнение подписей: Приложение сравнивает созданную подпись с полученной от Telegram. Если они совпадают, данные подлинные.
Этот процесс помогает убедиться, что данные, полученные от Telegram, не были изменены, обеспечивая безопасность вашего приложения и его пользователей.
После успешной валидации я генерировал JWT токен для пользователя и он становился полноценным пользователем в моей системе.
Далее можно с ним делать что угодно 😏 - ну допустим заблокировать его, дать права админа и т.д.
А сам пользователь имеет полный доступ к возможностям приложения. Но вне телеграма он ничего не сделает.
Какие дыры есть в приложениях и почему?
Не буду показывать на конкретном примере, но большинство разработчиков не умеют или не хотят защищать свои приложения, а чисто привязывают все к Telegram ID ( ID вашего аккаунта ) и так и живут.
Telegram ID состоит из цифр и перебрать его методом подбора не составит труда и получить доступ к аккаунту в Mini App.
Зачастую этим грешат новые приложения или не опытные разработчики, например в Telegram Apps Store ваше приложение проверяют на наличие этой защиты.
Кроме того нужно учесть что само приложение не должно никоем образом отображаться в поисковиках, если все взаимодействие выстроено на основе телегерама. Приложения же имеют свой адрес и могут индексироваться, не забывайте выключать!
Кроме всего этого можно запретить вне телеграма заходить в ваше приложение тем же способом что описан выше.
Как же защитить приложение и пользователей?
Не важно на каком языке вы пишите, телеграм уже сделал для вас подсказку, осталось ей воспользоваться.
Я надеюсь эта статья поможет тем кто хочет или уже занимается разработкой WebApp на Telegram. Если все еще осталось что-то не понятно, то пишите смело - будем вместе разбираться:)
Если у вас так же останутся вопросы или предложения или вы просто захотите поделиться своим приложением, то пишите! Всегда рад пообщаться с читателями 😁