Подход к созданию бота
Мне не понравилось, как выглядит расписание на официальном сайте -> посмотрел, какие запросы шлет браузер при запросе расписания. Оказывается, что исходит запрос к API университета, а в ответ приходит JSON. Это отлично, потому что это означает, что не придется скрейпить расписание из HTML.
Мы выяснили, что надо просто делать определенный запрос и передавать название группы, чтобы получить ее расписание на текущую неделю. Осталось только написать код (возможно, залью на гитхаб)
Мне не понравилось, как выглядит расписание на официальном сайте -> посмотрел, какие запросы шлет браузер при запросе расписания. Оказывается, что исходит запрос к API университета, а в ответ приходит JSON. Это отлично, потому что это означает, что не придется скрейпить расписание из HTML.
Мы выяснили, что надо просто делать определенный запрос и передавать название группы, чтобы получить ее расписание на текущую неделю. Осталось только написать код (возможно, залью на гитхаб)
🔥11👍2
Зачем Redis?
Представьте, у вас 5000 активных пользователей, они запрашивают расписание каждый день. То есть это 5000 запросов к API ежедневно.
Один запрос = 1 секунда. 5000 запросов = 5000 секунд = 83 минуты ожидания.
Но есть важный момент - у многих студентов совпадает группа. То есть для многих студентов идет одинаковый запрос расписания. Можно сделать запрос единожды, сохранить результат на нашем сервере и впредь обращаться к нему, а не к API.
Теперь, как сохранять результат?
Мы можем сохранить результат запроса в нашей базе данных. А можем в кэше. В чем разница? БД хранит данные на диске, а кэш - в оперативной памяти. Доступ к диску может занять 30 мс, а доступ к оперативке - 0.25 мс. То есть разница в десятки-сотни раз.
Redis - это одна из реализаций in-memory кэша, поэтому я ей воспользовался.
P.S. У меня не наберется 5000 активных пользователей. Вполне возможно, что я бы обошелся и без кэша, но я решил использовать его для получения опыта.
Представьте, у вас 5000 активных пользователей, они запрашивают расписание каждый день. То есть это 5000 запросов к API ежедневно.
Один запрос = 1 секунда. 5000 запросов = 5000 секунд = 83 минуты ожидания.
Но есть важный момент - у многих студентов совпадает группа. То есть для многих студентов идет одинаковый запрос расписания. Можно сделать запрос единожды, сохранить результат на нашем сервере и впредь обращаться к нему, а не к API.
Теперь, как сохранять результат?
Мы можем сохранить результат запроса в нашей базе данных. А можем в кэше. В чем разница? БД хранит данные на диске, а кэш - в оперативной памяти. Доступ к диску может занять 30 мс, а доступ к оперативке - 0.25 мс. То есть разница в десятки-сотни раз.
Redis - это одна из реализаций in-memory кэша, поэтому я ей воспользовался.
P.S. У меня не наберется 5000 активных пользователей. Вполне возможно, что я бы обошелся и без кэша, но я решил использовать его для получения опыта.
👍11🔥8
Вам никто не должен
Обращаюсь к разработчикам, которые еще не нашли свою первую работу. Представьте, что вы открыли компанию и вам нужно несколько программистов. Кого вы наймете:
- программиста, который отработал хотя бы год в другой фирме и умеет создавать продукт в команде с учетом требований бизнеса, с учетом тонкостей работы в команде, иерархии, таск-трекеров, тестирования, деплоймента, поддержки проекта на проде
- программиста, который прошел курсы и залил пару пет-проджектов на гитхаб
Конечно же первого. Вторых вы отфильтруете и даже не рассмотрите. Лично я сделал бы так. И вы обязательно согласитесь со мной, когда обретете немного коммерческого опыта. Взять кого-то из второй категории и вырастить его - это очень благородно, и я даже хочу однажды создать проект для такой инициативы, но сейчас речь идет про бизнес. Считайте бизнес алчной машиной, которая экономит каждую секунду и копейку.
К чему я это?
Я к тому, что надо оставить вопросы характера "почему меня не берут без опыта". Надо действовать. Никто не обещал, что войти в IT легко (кроме некоторых авторов курсов). Надо искать варианты:
- поступать на стажировки
- писать hr'ам в личку и просить поработать стажером
- найти команду и с помощью ментора работать над проектом, чтобы потом добавить этот опыт в резюме
Может быть, есть еще пути. Но жаловаться - точно не то.
Обращаюсь к разработчикам, которые еще не нашли свою первую работу. Представьте, что вы открыли компанию и вам нужно несколько программистов. Кого вы наймете:
- программиста, который отработал хотя бы год в другой фирме и умеет создавать продукт в команде с учетом требований бизнеса, с учетом тонкостей работы в команде, иерархии, таск-трекеров, тестирования, деплоймента, поддержки проекта на проде
- программиста, который прошел курсы и залил пару пет-проджектов на гитхаб
Конечно же первого. Вторых вы отфильтруете и даже не рассмотрите. Лично я сделал бы так. И вы обязательно согласитесь со мной, когда обретете немного коммерческого опыта. Взять кого-то из второй категории и вырастить его - это очень благородно, и я даже хочу однажды создать проект для такой инициативы, но сейчас речь идет про бизнес. Считайте бизнес алчной машиной, которая экономит каждую секунду и копейку.
К чему я это?
Я к тому, что надо оставить вопросы характера "почему меня не берут без опыта". Надо действовать. Никто не обещал, что войти в IT легко (кроме некоторых авторов курсов). Надо искать варианты:
- поступать на стажировки
- писать hr'ам в личку и просить поработать стажером
- найти команду и с помощью ментора работать над проектом, чтобы потом добавить этот опыт в резюме
Может быть, есть еще пути. Но жаловаться - точно не то.
👍16🔥10👾1
Отмена. Попробуем после рамадана, ин щаа Аллах.
👍10🔥3🤔1
Зашел на Linkedin и все по-прежнему:
- бизнес жалуется на жадных сотрудников
- сотрудники жалуются на жадный бизнес
- щедрые компании ищут разработчиков
- скромные разработчики ищут работу
Ощущение, что это одни и те же люди в разные периоды времени. Забавная "соцсеть"
- бизнес жалуется на жадных сотрудников
- сотрудники жалуются на жадный бизнес
- щедрые компании ищут разработчиков
- скромные разработчики ищут работу
Ощущение, что это одни и те же люди в разные периоды времени. Забавная "соцсеть"
😁14👍3🤔3
👍2🔥1
Планирование. Продуктивность.
Два привлекательных слова в последние годы. И многие пытались выстроить систему планирования, ведения записей, задач. Notion, Obsidian, Bullet Journal, Zettelkasten.
Сегодня разговаривали с братьями об этой теме, и я решил продублировать сюда свое сообщение:
Так что, мой совет - просто пользоваться стандартным приложением заметок. Если нужно записывать задачи - то скачать простое приложение (в комментариях приведу пример). А к более сложным системам вы уже придете сами, если в этом будет необходимость.
Два привлекательных слова в последние годы. И многие пытались выстроить систему планирования, ведения записей, задач. Notion, Obsidian, Bullet Journal, Zettelkasten.
Сегодня разговаривали с братьями об этой теме, и я решил продублировать сюда свое сообщение:
Я посмотрел кучу видео про ведение записей, задач итд, и выявил для себя систему - не создавать систему. Если я стану регулярно и часто вести записи, тогда я чуть-чуть начну создавать систему - создам папки. Если этого не будет хватать, добавлю что-то еще.
Rule of thumb (правило, выраженное в коротком предложении), короче - "don't force it" (пер. Не заставляй себя). Иначе все надоест, и ты перестанешь вести заметки вовсе, либо начнешь гуглить другие системы.
Я помню, однажды жестко организовал ноушн, а потом понял, что пора заполнять его и выполнять прописанные задачи. Оказалось, что я очень не хотел этого делать.
Для меня налаживание системы оказалось красочной прокрастинацией
Так что, мой совет - просто пользоваться стандартным приложением заметок. Если нужно записывать задачи - то скачать простое приложение (в комментариях приведу пример). А к более сложным системам вы уже придете сами, если в этом будет необходимость.
🔥14👍4
Амади и проекты
Планирование. Продуктивность. Два привлекательных слова в последние годы. И многие пытались выстроить систему планирования, ведения записей, задач. Notion, Obsidian, Bullet Journal, Zettelkasten. Сегодня разговаривали с братьями об этой теме, и я решил продублировать…
А главный совет насчет менеджеров тасок - выполнять задачи, которые вы записываете!
👍13🔥3
Какие привычки вы внедряете или уже внедрили в свою жизнь? Давайте поделимся идеями, необязательно связанными с программированием.
🔥7👍1
Совет разработчикам, которые недавно нашли первую работу и теперь не против заняться дополнительными проектами.
Не беритесь за все подряд. Даже за деньги. Возьмите максимум один проект. Вас не хватит на большее, я уже прошел через это.
Не беритесь за все подряд. Даже за деньги. Возьмите максимум один проект. Вас не хватит на большее, я уже прошел через это.
👍21🤔2🔥1
Forwarded from Ahmadum's notes📕 (Ahmad Umaev)
📕Грокнул тему JWT (JSON Web Token)
Тема из категории "такие вещи знать надо, ты че!"☹️ .
JWT состоит из 3 частей, разделенных точками:
1️⃣ head (заголовок) — сконвертированный в base64 JSON, содержащий тип токена и алгоритм подписи.
2️⃣ payload (полезные данные) — сконвертированный в base64 JSON, содержащий в себе данные, позволяющие однозначно идентифицировать пользователя, определить время жизни токена и т.д.
3️⃣ signature (подпись) — вычисляется с применением алгоритма подписи, указанного в заголовке, к строке 🤫 .
Выглядит эта штука примерно так:
Поиграться с генерацией JWT можно тут.
А еще, по приколу, написал свой генератор JWT.
Важно понимать, что данные, передаваемые в payload, не зашифрованы и любая Ева способна их прочесть(достаточно конвертнуть base64 снова в JSON), поэтому передавать в них приватные данные нельзя🤐 . Суть токена в том, что он подписан, и его нельзя подделать. То есть, не получится, перехватив чужой токен, подменить данные в payload и ходить по сервисам, как ни в чем не бывало😏 .
А теперь о крутости этой штуки😎 :
🚩Аутентификация, основанная на JWT, позволяет получать токен с одного сервиса и ходить с ним на любой другой сервис без надобности хранить где-то токены, достаточно раскидать секретные ключи по всем сервисам.
🚩Можно генерить различные типы JWT для одного и того же user-а, жонглируя🤹 payload-ом, например для того, чтобы ограничивать доступ к определенным ресурсам с определенного JWT.
🚩Можно создавать JWT с суперкоротким временем жизни, чтобы мстить фронтендерам👍 .
Ahmadum's notes
Тема из категории "такие вещи знать надо, ты че!"
JWT состоит из 3 частей, разделенных точками:
{
"alg": "HS256",
"typ": "JWT"
}{
"sub": "ahmadum01",
"iat": 1516239022
}f"{head}.{body}" с секретным ключомВыглядит эта штука примерно так:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhaG1hZHVtJ3Mgbm90ZXMifQ.4exaja18wwbmRt-u_v_cZO3sKgzJFNPJqpGVhk7HwQk
Поиграться с генерацией JWT можно тут.
А еще, по приколу, написал свой генератор JWT.
Важно понимать, что данные, передаваемые в payload, не зашифрованы и любая Ева способна их прочесть(достаточно конвертнуть base64 снова в JSON), поэтому передавать в них приватные данные нельзя
А теперь о крутости этой штуки
🚩Аутентификация, основанная на JWT, позволяет получать токен с одного сервиса и ходить с ним на любой другой сервис без надобности хранить где-то токены, достаточно раскидать секретные ключи по всем сервисам.
🚩Можно генерить различные типы JWT для одного и того же user-а, жонглируя
🚩Можно создавать JWT с суперкоротким временем жизни, чтобы мстить фронтендерам
Ahmadum's notes
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍3
GoLand_ReferenceCard.pdf
129.5 KB
Чем раньше вы освоите горячие клавиши в вашей IDE, тем скорее вы сможете этим хвастаться приятнее будет в ней работать
Прикрепил сочетания клавиш для JetBrains Goland
Прикрепил сочетания клавиш для JetBrains Goland
👍12🔥1
Есть у меня странный бзик - люблю блокноты. Покупать - тоже люблю, но особо не пишу в них, хоть и убеждаю себя, что буду использовать для работы. Кому-нибудь знакомо это?
👍13🔥5😁3
Залил исходники одного из своих ботов (@chetoru_bot) на гитхаб. Написан на Go. Может кому-то интересно, как выглядят простенькие телеграм-боты не на питоне.
https://github.com/azdaev/tg-chechen-dictionary
https://github.com/azdaev/tg-chechen-dictionary
GitHub
GitHub - azdaev/tg-chechen-dictionary: Telegram bot written in Go. Russian-Chechen dictionary with statistics collection
Telegram bot written in Go. Russian-Chechen dictionary with statistics collection - azdaev/tg-chechen-dictionary
🔥13👍5🤔1