Путь Fullstack
Короче... Хз зачем но я опять всю ночь делал какую-то херню. На этот раз любители Arknights Endfield оценят. Вашему вниманию: Первый русскоязычный сайт для отслеживания круток в Arknights Endfield «endfieldpass.site» А теперь реклама: Переведён на множество…
Подготовил очень мощное обновление, залью в течении 30-50 минут
Все. Залил. Жду оценок в комментариях (если они вообще будут). Пофиксил кучу багов. Доделал, улучшил пулл круток. Добавил импорт ОРУЖЕЙКИ (первый в сообществе, и я этим горжусь😁). Очень сильно улучшил визуал. Вообще соска получилась
https://endfieldpass.site/
https://endfieldpass.site/
🔥1
Хз. Мб из архива историй обновлений превратить этот канал в чуть-чуть большее. Попробую новую рубрику. Гайды
🧨 Почему
Многие пишут так:
И думают: *«кайф, код не упадёт»*.
Ага. Не упадёт. Он тихо сломает смысл, и ты узнаешь об этом уже в проде, по крикам пользователей.
---
🤔 Что делает
- значение, если ключ есть
-
То есть вместо нормального сигнала “данных нет” ты получаешь валидное значение (
---
🐞 Пример скрытого бага
Если
>
И это даже не ошибка. Это просто позор.
А если дальше ожидается строка:
Получишь:
>
И самое мерзкое: упадёт не там, где причина, а там, где уже поздно и больно.
---
❗️Почему это опасно
1️⃣ Логика ломается молча
2️⃣ Тесты могут не поймать, потому что
3️⃣ Появляются фантомные состояния (“пользователь без имени”, хотя такого быть не должно)
4️⃣ Баг превращается в лотерею: то работает, то нет
---
✅ Как правильно?
🔹 Если ключ обязателен, пусть падает сразу
🔹 Если ключ необязателен, укажи осознанный default
🔹 Если `None` может быть реальным значением, `get()` подставит тебя
Нужно различать “нет ключа” и “значение None”:
---
📌 Итог
- обязательное поле →
- необязательное →
- важно отличать “нет ключа” от
dict.get() иногда хуже, чем KeyErroruser.get("name") как тихий убийца логикиМногие пишут так:
name = user.get("name")И думают: *«кайф, код не упадёт»*.
Ага. Не упадёт. Он тихо сломает смысл, и ты узнаешь об этом уже в проде, по крикам пользователей.
---
🤔 Что делает
get()?dict.get(key) возвращает:- значение, если ключ есть
-
None, если ключа нет (или твой default)То есть вместо нормального сигнала “данных нет” ты получаешь валидное значение (
None), которое дальше спокойно течёт по коду.---
🐞 Пример скрытого бага
def greet(user):
name = user.get("name")
return f"Привет, {name}!"
Если
"name" отсутствует, получаем:>
Привет, None!И это даже не ошибка. Это просто позор.
А если дальше ожидается строка:
name = user.get("name")
print(name.strip().title())Получишь:
>
AttributeError: 'NoneType' object has no attribute 'strip'И самое мерзкое: упадёт не там, где причина, а там, где уже поздно и больно.
---
❗️Почему это опасно
1️⃣ Логика ломается молча
2️⃣ Тесты могут не поймать, потому что
None иногда “прокатывает”3️⃣ Появляются фантомные состояния (“пользователь без имени”, хотя такого быть не должно)
4️⃣ Баг превращается в лотерею: то работает, то нет
---
✅ Как правильно?
🔹 Если ключ обязателен, пусть падает сразу
name = user["name"] # KeyError = быстро и честно
🔹 Если ключ необязателен, укажи осознанный default
name = user.get("name", "Unknown")🔹 Если `None` может быть реальным значением, `get()` подставит тебя
Нужно различать “нет ключа” и “значение None”:
_sentinel = object()
name = user.get("name", _sentinel)
if name is _sentinel:
raise KeyError("Missing 'name'")
---
📌 Итог
get() это не “безопасность”. Это отложенная ошибка.- обязательное поле →
user["key"]- необязательное →
get(..., default)- важно отличать “нет ключа” от
None → sentinelБлять ну че за уебки сидят в яндекс. Просто конченные твари.
Пытался прикрутить яндекс диск. Сначала все было нормально, потом перестала работать синхронизация с диском (2 скрин). Потом они затребовали подтвердить акк через гос услуги. И вроде бы ничего сложного. Только блять нихера у них не работает. С гос услуг вылетает хз какая ошибка. А с сервиса что невалидный токен (он бл правильный).
Я пишу в поддержку. А они мне "Ситуация сложная, подожди 3 часа". И конечно же всем похуй прошло уже 14 часов, всем похуй.
И вот как бл тут нормально с диском коннектиться. Я уже и у gpt спросил и что только не делал. Ничего не получается, а мне даже не говорят почему.
Крч мораль такова: Яндекс - контора пидорасов, минус реп
Пытался прикрутить яндекс диск. Сначала все было нормально, потом перестала работать синхронизация с диском (2 скрин). Потом они затребовали подтвердить акк через гос услуги. И вроде бы ничего сложного. Только блять нихера у них не работает. С гос услуг вылетает хз какая ошибка. А с сервиса что невалидный токен (он бл правильный).
Я пишу в поддержку. А они мне "Ситуация сложная, подожди 3 часа". И конечно же всем похуй прошло уже 14 часов, всем похуй.
И вот как бл тут нормально с диском коннектиться. Я уже и у gpt спросил и что только не делал. Ничего не получается, а мне даже не говорят почему.
Крч мораль такова: Яндекс - контора пидорасов, минус реп
Все крч залито по красоте. Таймер истечет ровно в 4 утра, тогда все само откроется. А я спать пошел
В общем сейчас я буду занят полноценно CyberDeck, сдача уже скоро так что нужно поторопиться.
Что касаемо EndfieldPass. Скорее всего он закроется, т.к времени на разработку нет, есть достаточно много сильных конкурентов, и нет рекламы. Он до конца оплаты хостинга просуществует, но дико сомневаюсь что буду продлевать. Оплачен до 09.03.2026, так что пока есть можете пользоваться если кому то нужен (очень сомневаюсь)
Что касаемо EndfieldPass. Скорее всего он закроется, т.к времени на разработку нет, есть достаточно много сильных конкурентов, и нет рекламы. Он до конца оплаты хостинга просуществует, но дико сомневаюсь что буду продлевать. Оплачен до 09.03.2026, так что пока есть можете пользоваться если кому то нужен (очень сомневаюсь)
🔥1
Путь Fullstack
В общем сейчас я буду занят полноценно CyberDeck, сдача уже скоро так что нужно поторопиться. Что касаемо EndfieldPass. Скорее всего он закроется, т.к времени на разработку нет, есть достаточно много сильных конкурентов, и нет рекламы. Он до конца оплаты…
Сегодня ночью крупное обновление!
А так же выйдет еще один новый крутой проект (делал уже давно, только заканчиваю)
А так же выйдет еще один новый крутой проект (делал уже давно, только заканчиваю)
Ура. Я сделал новый проект. И это статистика репозиториев на гитхабе. Ранее я уже делал гайд на статистику профиля и другую херню, но они к сожалению оба закрылись. Но сейчас я написал оригинальную проверку репозиториев.
https://github.com/Overl1te/Repo-Inspector
Что он делает? Сканирует репозиторий и проверяет соотвествует ли он стандартам качества github, и на основании этого выносит обьективную оценку. Помимо этого он так же выдает простую статистику языков, звезд, форков и тд. Я приложил скрины, можете с ними ознакомиться.
И самое главное, конечно же это динамичные svg доступные по api. Я повзаимствовал технологию у github-readme-stats.
Кстати, я добавил к нему генератор этих svg, они получились очень гибкими.
Описывать весь его функционал можно очень долго, лучше сами ознакомьтесь https://github.com/Overl1te/Repo-Inspector.
Немного о технической части. Сайт хостится на github pages и имеет встроенную проверку и генератор: https://overl1te.github.io/Repo-Inspector/
А api я повесил на vercel (кстати очень просто, удобно и быстро): https://repo-inspector.vercel.app/ (выдает 404, т.к это чисто бэк)
Все это грамотно связал и добавил github actions.
Сейчас буду форсить эту шнягу на хабре (ну пытаться). И жду ваших оценок)
Фоточки:
https://github.com/Overl1te/Repo-Inspector
Что он делает? Сканирует репозиторий и проверяет соотвествует ли он стандартам качества github, и на основании этого выносит обьективную оценку. Помимо этого он так же выдает простую статистику языков, звезд, форков и тд. Я приложил скрины, можете с ними ознакомиться.
И самое главное, конечно же это динамичные svg доступные по api. Я повзаимствовал технологию у github-readme-stats.
Кстати, я добавил к нему генератор этих svg, они получились очень гибкими.
Описывать весь его функционал можно очень долго, лучше сами ознакомьтесь https://github.com/Overl1te/Repo-Inspector.
Немного о технической части. Сайт хостится на github pages и имеет встроенную проверку и генератор: https://overl1te.github.io/Repo-Inspector/
А api я повесил на vercel (кстати очень просто, удобно и быстро): https://repo-inspector.vercel.app/ (выдает 404, т.к это чисто бэк)
Все это грамотно связал и добавил github actions.
Сейчас буду форсить эту шнягу на хабре (ну пытаться). И жду ваших оценок)
Фоточки:
5🔥1