Вы не вошли.
[левел-ап][айти]
Продолжаю работать над задачами в стартапе, когда выдаётся время.
Сделал вкладки, сделал так, чтобы можно было переключаться между ними и видеть контент.
Работал над компонентом, который делает запрос к БЭ и выводит список объектов. Долго не мог понять, почему получаю 400 в респонсе, всё правильно же. После дебага понял, что вставил в запрос не тот токен
aws-иблиотека очень удобно даёт доступ к сессии, откуда можно вытащить токены юзера: auth, access и refresh. У каждого своё применение, я экспериментировал с ними, и как-то не обращал внимания на ту строчку кода, что возвращала не тот токен. Зато теперь работает, можно залогиниться и увидеть список объектов.
Наш дизайнер сделала практически уже финальную версию продукта, и я начал работать над стилями. Тут хватает своих трудностей начиная от попыток сделать максимально похоже на то, что в фигме и заканчивая тем, как всё отображается в разных браузерах.
Использую Tailwind, мне он кажется удобным и быстрым в плане создания всего с нуля.
Вечером заканчивал работу, как раз намучался с фоном - чтобы он постепенно выцветал, чтобы выцветал белым, в нужном направлении, но чтобы в самом начале был ярким. Остался почти доволен. Пошёл пройтись. Любовался темнеющим небом с последними красками заката.
Пришёл обратно, открыл ноутбук - фона нет
Я не знаю, почему он прекратил отображаться.
Но всё равно закоммитил свой прогресс. Буду разбираться завтра.
[дыбр][off-road]
На позапрошлых выходных ездили на курс использования лебёдки на внедорожниках и вытаскивания застрявших.
Курс отличный: подробно объяснили физику процесса, использование блоков, расчёт нагрузки и геометрические конфигурации, когда пытаешься вытащить другую машину. Показали много разного оборудования и объяснили, как выбирать, как и когда использовать, безопасность.
Много разных способов застрять и что может пойти не так при вытаскивании. Не надо позволять тросу лебёдки скользить в руках, когда сматываешь. Стальной трос может иметь волокно, которое порвалось и торчит. Ещё трос может подобрать в себя колючку от кактуса, всё это может проткнуть перчатки. Электрический кабель от лебёдки надо привязывать на бампер, когда не используешь, иначе он может упасть вниз - в грязь, пыль, и придётся выковыривать всякую фигню оттуда, застрявшую между маленькими штырьками.
"Знаете, откуда мы это знаем?" - То и дело справшивал инструктор.
Потом была практика - поехали на тренировочную площадку, и инструкторы конструировали сценарии, когда кто-то застрял. Сначала было просто - встать прямо и сзади и вытащить тросом.
А потом - машина застряла на подъёме, впереди неё дорога расходится по сторонам, буквой Т, а за верхней перекладиной - обрыв. И вот тут пришлось подумать, рассчитать нагрузку, как использовать блоки и под какими углами встать.
Рассчитали. Потянули.
Застрявшая машина проехала три фута, а дальше никак
Не хватает мощности. Подумали, попробовали другую конфигурацию. Снова сначала немного, а потом никак, и одна из вытаскивающих машин уже начала двигаться. Надо бы другой угол, а места нет, сзади лава "скалы". В общем, время вышло, и инструктор показал конфигурацию - оказалось, мы не там прицепили блок.
Встретили пару из Германии (они уже давно живут здесь), которая приехала на микроавтобусе, типа Спринтер, оборудованном для того, чтобы путешествовать. Жена сама сделала классную мебель, а муж - электричество и воду (для готовки и пр).
Автобус очень удобный внутри, но неудобный как внедорожник - низкий, длинная база, высокий и узкий. Но и для автобусов хватает красивых и [относительно] диких мест.
Так что всё было очень классно, много полезного, понравилось. Но также очень жарко, и я приуныл под конец, хоть был в шляпе и много пил.
анон-левел-апер
На позапрошлых выходных ездили на курс использования лебёдки на внедорожниках и вытаскивания застрявших.
Вау и интересно и очень полезно. Как здорово, анончик.
Вау и интересно и очень полезно. Как здорово, анончик.
Ещё как! Спасибо))
[левел-ап][айти]
Остался почти доволен. Пошёл пройтись. Любовался темнеющим небом с последними красками заката.
Пришёл обратно, открыл ноутбук - фона нет![]()
Я не знаю, почему он прекратил отображаться.
Но всё равно закоммитил свой прогресс. Буду разбираться завтра.
Исправлено! Я просто случайно убрал запятую в строке со стилем
Для своего приложения сделал два новых компонента: форма добавления класса с возможностью также добавить ему расписание и форма добавления нового студента.
Едва я закончил и протестировал их, довольный собой, как сразу же понял: мне нужны компоненты для управления всеми классами и всеми студентами.
Должен быть список существующих с возможностью отредактировать, удалить, добавить новых. А мои компоненты для создания должны быть модалами(окошками), которые открываются по нажатию кнопки.
Задался вопросом, как лучше задизайнить модалы, где должна быть функция, отправляющая запрос на БЭ, учитывая, что список классов и студентов должен обновляться сразу после создания.
Работаю.
анон-левел-апер
[левел-ап][айти]
В своём приложении сделал форму, где можно увидеть расписание класса по дням недели. Сделал кнопку для удаления - кликаешь на слот со временем, и слот удаляется.
Думал, что сделаю быстро и легко. Но что-то пошло не так.
У меня было отличное состояние потока в начале и середины недели, меня несло, я был счастлив и очень вдохновлён, и сделал много запланированного для этого приложения. А в пятницу я понял, что устал
И решил просто сделать удаление. Чтобы ты в открытом окне (модале) нажал на удаление слота, и слот бы удалился из базы и из UI, прямо из открытого окошка бы исчез.
Сделал, как я думал.
Нажимаю на кнопку, fetch запрос на удаление успешен.
А в UI слот так и висит, а должен исчезнуть.
Ну приехали.
Начал дебажить.
Вижу, что какая-то фигня в функции, которая обновляет переменную состояния для расписания - якобы нет в ней такого ключа.
Голова еле соображала, хотелось спать. Быть может, надо было кодить чуть менее интенсивно на этой неделе и больше отдыхать лел.
В пятницу понять причину не смог и вечером уехал фехтовать.
Рано утром сегодня дебажил снова.
Дебажил-дебажил.
А потом меня осенило.
Что вместо одного ключа я передаю в переменную состояния, хэш-таблицу, другой. Вместо номера дня передаю айди класса
Почему-то в пятницу мой уставший мозг решил, что в переменной состояния у меня абсолютно все расписания, сгруппированные по классам.
А у меня там расписание для одного конкретного класса, сгруппированное по дням.
Фикс занял пару строчек. Дебаг - несколько часов.
Мораль: не дизайнить и не писать новые фичи, когда чувствуешь, что устал и плохо соображаешь.
Ваш Кэп.
анон-левел-апер
[левел-ап][айти][нытьё]
Делаю компонент для расписания классов - там можно посмотреть их, добавить, удалить.
В выборе нового дня сделал выпадающий список с именами дней, на которые класс не поставлен.
Всё было хорошо, но появилась проблема.
Кнопка ОК, общая для всего компонента, которая его закрывает окошко с ним, находится поверх этого выпадающего списка.
Я промучался половину дня со стилями, пытаясь поместить её под список. Слои, манипуляции тем, в каких отношениях компоненты между собой, родительские компоненты.
В итоге я вдруг понял, что можно просто показывать эту кнопку только когда списка нет, conditional rendering
И это заработало!
Правда, была проблема с тем, что общее вью прыгало вверх-вниз при открытии и закрытии списка, но это потому, что меньшее вью кнопки появлялось и исчезало. Я тогда оставил вью кнопки на месте, а саму кнопку сделал невидимой. Скачки прекратились.
Но появилась другая проблема: некоторые кнопки списка заблокированы для нажатия невидимым вью - я сначала не смог нажать их, чтобы выбрать день. Открыл Inspect в тулах разработчика в браузере, ну и там оно.
Я тогда сделал так: по нажатию кнопки, что открывает список с днями, это вью сохраняет свою высоту, а ширина становится минимальной.
Теперь всё работает, как я хочу.
Но у меня разболелась голова.
Наверное, со стилями лучше работать уже после логики, особенно если они не так просты.
[фехтование]
Маэстра начала постепенно учить и другому оружию - шпаге и сабле, не только рапире. И это здорово, потому что сплошная рапира месяц за месяцем - это скучно. Да, постоянно приходят и уходят новички, надо начинать сначала, в группе люди разного уровня, а маэстра одна. Но наконец!
Это забавно, когда первый-второй урок по той же шпаге, и ты думаешь, что вдруг сейчас будет что-то сложное, что ты пока не знаешь, и тебе нервно, а маэстра показывает что-то начальное, вроде укола в локоть или запястье.
Ок, это не самая простая вещь, но многие уроки именно шпаги начинаются с этого, когда подразумевается, что студент уже освоил основы фехтования с рапирой.
Ты повторяешь упражнение три-пять раз, как делал уже много раз, потом ротация, а остальные студенты хорошо если попадут в локоть маэстре один раз, остальные - далеко мимо. При этом не все новички в фехтовании, но они, видимо, работали исключительно с рапирой.
И потом они подходят и спрашивают, сколько лет я уже в фехтовании, на что я отвечаю, что где-то парочку, а со шпагой по идее меньше года. Кто-то явно расстроенный, и я говорю, что ничего страшного, это же первый раз, со временем и практикой всё получится.
Также маэстра таки снова втянула меня в обучение преподаванию!
Ок, у неё были только опытные студенты, и нас было чётное число, так что она сказала, что мы попробуем более продвинутые вещи и будем меняться ролями. Это было неплохо, и мне было даже интересно, потому что надо было сообразить, как координировать свои действия как учитель, как спровоцировать студента на нужную реакцию в нужное время. Так что унывать и бомбиться было не из-за чего, и это хорошо. Жаль, этот урок был на рапирах.
Я хочу больше моей любимой шпаги
[дыбр]
На выходных сходили в классное заведение с японским барбекю.
Приглушённый свет, столики отделены друг от друга стенами чуть ниже человеческого роста, в середине каждого столика - газовая горелка, накрытая решёткой.
Заказываешь несколько позиций из меню - мясо, овощи, морепродукты - тебе их приносят сырыми в маринаде, зажигают горелку, и ты сам их готовишь до той степени, что нравится. Но официанты рекомендуют оптимальное время.
Мы заказали несколько видов говядины - форма, толщина, количество жира (откуда эти куски), креветок, овощи и грибы.
Мясо только что с газа огня было очень вкусным
Потом зашли в соседнюю кафешку, и я взял молочный чай с жасмином. Что здорово - можно выбрать количество сахара или вообще от него отказаться.
анон-левел-апер
Отредактировано (2025-08-27 02:43:16)
[левел-ап][айти]
Когда появилось время, сделал для стартапа
1) стартовую страницу - добавил фон и логотип к форме логина
2) заголовок с названиями таб, кнопкой для просмотра аккаунта и разлогинивания (в выпадающем списке), переключение между табами, и это всё юзер видит после логина.
На самой первой, дефолтной, табе список объектов с бэка, который получается по запросу с токенами залогинившегося юзера.
Самым сложным было приблизить расположение объектов и их дизайн к тому, что дизайнер сделала в Фигме.
Но я сделал очень близко и узнал много нового.
Про настройки (контраст, например), который можно применять к картинке в Tailwind. Про градиент и прочее.
Попрактиковал React, который обычный, просто для web.
Ещё сложным было кастомизировать форму логина aws amplify - добавить тень, убрать границы, сдвинуть надпись, поменять надпись на кнопке восстановления пароля. Я так и не смог пока кастомизировать так, как задумано, значок с глазом для показа пароля.
У aws amplify в доках написано - а вот вы юзайти объект темы и там задавайте стили через токены компонентов!
Я сделал, а стилей не видно.
Нуууу, стили не для всех компонентов ещё поддерживаются. Почему? Ну пока вот так. Но вот вам список всех токенов для компонентов. Какие из них работают для стилей, а какие нет? Угадайте сами!
Исхитрился и некоторые вещи сделал через старый добрый CSS файл. Но всё равно некоторые вещи не получается сделать, хоть убейся
Как же я люблю open-source
Но другой настолько же удобной библиотеке у нас для вас нет
Ну ок.
Подозреваю, что придётся отказаться от компонента формы логина и сделать свой компонент. Это всё ещё можно сделать с использованием встроенного функционала для управления сессией юзера и всем прочим, ради чего я и выбрал эту библиотеку.
Будет любопытно попробовать и посмотреть, получится ли воспроизвести Фигму на 100% или хотя бы 99%.
[дыбр]
Внезапно заметил, что где-то в 8 уже темно. Так почти прошло календарное лето
У нас оно в этом году было не особо жарким, и я не жалуюсь, разве что иногда утра бывали серыми и унылыми, а по вечерам дул противный ветер, от которого ёжишься.
Зато не было жарищи, хоть она у нас и сухая.
Впереди ещё как минимум целый месяц летней погоды, просто темнеет всё раньше.
анон-левел-апер
[левел-ап][айти][стартап]
Показала стартовую страницу с логотипом и логином. Всем понравилась Сказала, что попробую ещё другой подход, чтобы полностью кастомизировать пару полей, на том и порешили.
Столкнулась ещё с таким: логинюсь на красивой стартовой странице, открывается дефолтная вкладка со списком объектов с бэка, а фон стартовой страницы так и висит.
Логично, потому что он сделан фоном. Форма логина исчезает после того, как юзер войдёт, и появляется другой контент, а изменение фона не было прописано.
Что с этим делать?
Решила пока не возиться с навигацией - я не очень уверена, что она нужна в Single Page Application, но опыта у знаний у меня пока мало, может, я и не права.
Попробовала применить идею, что после логина стартовый экран закрывается другим фоном. Он всё ещё существует, просто самым нижним слоем, новый фон его закрывает.
В принципе, у меня на стартовом экране очень мало нод, таким образом использование памяти и нагрузка на производительность не должны быть большими, так что как первое решение сойдёт.
Можно попробовать conditional rendering для фона: если юзер залогинен, то единственным слоем один фон, иначе другой. Попробую, пожалуй.
И внезапно чувак из стартапа, который занимается бэком, принимает основные решения и, как я понимаю, занимается и организационными вопросами, написал и спросил, смогу ли я поговорить сегодня вечером, у нас внезапные изменения.
анон-левел-апер
[айти][стартап]
Как я и ожидал, изменения были не совсем к лучшему.
Они оформляются официально, наняли юриста, а юрист им сказал, что по закону штата они не могут иметь сотрудников, которым не платят зарплату.
Не вдаваясь в детали, скажу что это новый закон для защиты работников.
Денег на этой ранней стадии ещё нет, так что платить зарплату нечем.
А это значит, что мы больше не вместе.
Штош.
Чувак сказал, что расставаться со мной не хочется, что они довольны, и что сейчас трудно найти фронтендщика. Сказал, что как появятся деньги (инвесторы, клиенты), они бы с радостью наняли меня официально.
Жаль, конечно. Мне нравилось и было интересно.
Из плюсов - я получила немало новых знаний и опыта, а заодно связей и уверенности в себе
И свободного времени теперь будет чуть больше.
[дыбр]
В этот же день, уже вечером, но ещё до звонка выбрались с подругой поесть пиццы и погулять.
Пицца была ничего так, кофе ещё лучше.
Сидели на улице, в зелёном дворике, смотрели, как всё больше людей после работы тоже идут ужинать.
Потом взяли кофе с собой и просто гуляли по тихому району с красивыми домами, огромными деревьями и пышными цветочными клумбами, в золотом вечернем свете.
Это было очень здорово и умиротворяюще, так что вечер никоим образом не был испорчен.
анон-левел-апер
[нытьё][историческая реконструкция]
Кто дебил? Я дебил.
Перепутал даты реконского выезда (это был бы мой первый реальный выезд), заметил только когда уже бронировал отель - полез в почту проверять, на всякий случай, и понял, что бронирую не на те даты.
А на "те" даты мы с мужем уезжаем в путешествие.
Так что на этот выезд я не еду.
Написал письмо с извинениями - мы с другими реконсами уже столько успели напланировать с моим участием((
Стыдно, неловко, досадно и обидно, очень.
А ещё хотел с утра, пока прохладно и солнце не слишком злое, сходить на фермерский рынок, купить вкусного ржаного хлеба, да пока всем этим занимался, стало слишком поздно, всё к этому времени уже обычно раскупают.
Ну вот что такое, а
анон-левел-апер