12 факторов надёжного приложения
📹 youtu.be/uKyyIWkKDW8
Часто бывает так, что работа с кодовой базой проекта приносит боль в самых разных аспектах: от внесения изменений и добавления новых фич до развертывания на стенде. Может показаться, что какие-то проблемы являются данностью, и с этим принципиально сложно что-то сделать. К счастью, это относится не ко всему.
Адам Виггинс и другие сотрудники компании Heroku однажды решили составить документ, который помог бы решить многие проблемы с разработкой и эксплуатацией информационных систем. Этот документ называется “The Twelve-Factor App” или «12-факторное приложение». В ролике я разбираю каждый пункт документа.
С сегодняшнего дня ролик в общем доступе. Всем, кто подписался на Бусти/Патреоне/Телеграме и посмотрел там, вам большое спасибо за поддержку ❤️
❤ • ютуб • бусти • патреон • платный канал
Часто бывает так, что работа с кодовой базой проекта приносит боль в самых разных аспектах: от внесения изменений и добавления новых фич до развертывания на стенде. Может показаться, что какие-то проблемы являются данностью, и с этим принципиально сложно что-то сделать. К счастью, это относится не ко всему.
Адам Виггинс и другие сотрудники компании Heroku однажды решили составить документ, который помог бы решить многие проблемы с разработкой и эксплуатацией информационных систем. Этот документ называется “The Twelve-Factor App” или «12-факторное приложение». В ролике я разбираю каждый пункт документа.
С сегодняшнего дня ролик в общем доступе. Всем, кто подписался на Бусти/Патреоне/Телеграме и посмотрел там, вам большое спасибо за поддержку ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23❤🔥5❤3🔥2🤡2
Периодически мне пишут с вопросом про ролик про новостного бота. Суть вопроса чаще всего следующая:
> Если я не хочу/не могу использовать OpenAI API или хочу для сравнения попрыгать по разным моделям без особых усилий, что мне делать?
Обратите внимание на проект LangChain for Go. По сути это порт одноимённого проекта для Питона, позволяющего вам взаимодействовать с разными LLM (и кажется не только) через единый интерфейс. Через LangChain можно ходить в OpenAI API или обращаться к моделям, которые вы запускаете сами у себя на машине. Ну и да, если какой-то модели нет, всегда можно просто заимплементить нужный интерфейс.
Сразу скажу, что лучше OpenAI тупо ничего нет — команда Альтмана на невероятном отрыве от остальных. Поэтому если ваша цель найти что-то лучше, можно остановиться прямо здесь. Я вижу только две адекватные причины не использовать GPT-4 или использовать не только её:
- Недопустимо, чтобы данные покидали ваш контур
- Вы хотите иметь фоллбэк-модели на случай, если OpenAI сляжет
❤ • ютуб • бусти • патреон • платный канал
> Если я не хочу/не могу использовать OpenAI API или хочу для сравнения попрыгать по разным моделям без особых усилий, что мне делать?
Обратите внимание на проект LangChain for Go. По сути это порт одноимённого проекта для Питона, позволяющего вам взаимодействовать с разными LLM (и кажется не только) через единый интерфейс. Через LangChain можно ходить в OpenAI API или обращаться к моделям, которые вы запускаете сами у себя на машине. Ну и да, если какой-то модели нет, всегда можно просто заимплементить нужный интерфейс.
Сразу скажу, что лучше OpenAI тупо ничего нет — команда Альтмана на невероятном отрыве от остальных. Поэтому если ваша цель найти что-то лучше, можно остановиться прямо здесь. Я вижу только две адекватные причины не использовать GPT-4 или использовать не только её:
- Недопустимо, чтобы данные покидали ваш контур
- Вы хотите иметь фоллбэк-модели на случай, если OpenAI сляжет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
С 1 марта (это уже завтра, напомню) сайтам в России будет запрещено рассказывать о VPN и других средствах обхода блокировок. С одной стороны у каждого, кто не хочет жить исключительно под пропагандой и ходить только на подментованные сайты, давно есть свои способы обхода. С другой стороны, конкретные VPN-сервисы и не только периодически попадают под бан. Доходит даже до смешного: в бан попадают даже сервисы типа Steam Community, которые вообще не связаны с обходом блокировок или политикой.
На фоне всего этого хочу рассказать про сервис FRKN, цель которого — построить VPN с фокусом на обход блокировок именно Роскомпозора. Нет, это не реклама в привычном смысле. Я пишу об этом проекте, чтобы поддержать ребят. Проект некоммерческий. FRKN поддерживает два протокола: XRay и WireGuard. Сервера на WireGuard бесплатные полностью, а на XRay дают бесплатный месяц, а также скидку для НКО, студентов, правозащитников и т.д.
Подробнее о VPN и о том, как его получить, можно почитать в посте канала проекта.
Если у вас уже есть VPN, настройте его маме, брату, деду (не тому), younameit.
На фоне всего этого хочу рассказать про сервис FRKN, цель которого — построить VPN с фокусом на обход блокировок именно Роскомпозора. Нет, это не реклама в привычном смысле. Я пишу об этом проекте, чтобы поддержать ребят. Проект некоммерческий. FRKN поддерживает два протокола: XRay и WireGuard. Сервера на WireGuard бесплатные полностью, а на XRay дают бесплатный месяц, а также скидку для НКО, студентов, правозащитников и т.д.
Подробнее о VPN и о том, как его получить, можно почитать в посте канала проекта.
Если у вас уже есть VPN, настройте его маме, брату, деду (не тому), younameit.
Telegram
FRKN Privacy Company
Итак мы начинаем.
Ну вы в курсе всего, про блокировки, и тд, не буду повторяться, сразу к делу -- месяц безлимитного випиэна. Протокол XRay, две локации - Британия и Нидерланды. Тариф пока что один -- стоимость 300 рублей. Оплата криптой или на карту. Для…
Ну вы в курсе всего, про блокировки, и тд, не буду повторяться, сразу к делу -- месяц безлимитного випиэна. Протокол XRay, две локации - Британия и Нидерланды. Тариф пока что один -- стоимость 300 рублей. Оплата криптой или на карту. Для…
👍20👎11🤡10❤3🖕3
В последние годы редакторы кода расплодились, как фронтенд-фреймворки. И иногда среди этого потока обнаруживаются такие бриллианты, как Zed. Это редактор, который делают разработчики легендарного Atom. Так а в чём прикол? Давайте разберёмся.
Во-первых, скорость. Он не просто быстрый — он адски быстрый. Ощущения от отзывчивости и скорости примерно как от Саблайма. Не знаю как вы, но на своей скорости печати (не самой высокой, но выше среднего) я отчетливо ощущаю разницу в задержке между нажатием клавиш и результатом на экране. Это включает в себя не только непосредственно ввод текста, но вообще всё в Zed, в том числе время старта.
Во-вторых, простота. Я немного устал за последние годы, что от VSCode, что от GoLand. И тот, и другой — крутые и очень мощные инструменты. Но когда на тебя кроме кода смотрит армия иконок, а каждые пять минут всплывает уведомление, рука постепенно начинает тянуться к кобуре. В Zed занесли только то, что реально нужно. Да, я понимаю, что IDE и легковесные редакторы — это немного разные категории. Но среди именно простых редакторов не хватало чего-то помощнее, как бы это странно ни звучало. Тут из коробки поддерживается Language Server Protocol и все связанные фичи, GitHub Copilot (либо собственный ассистент от Zed с вашим OpenAI-ключом) и... всё? Ну понятно, подсветка синтаксиса и прочее, без чего редактор кода был бы просто текстовым редактором.
В-третьих, совместное редактирование — ещё одна фича, про которую я не упомянул в предыдущем абзаце. Прямо в редакторе вы можете подсоединиться к другу/коллеге и пописать вместе код, как если бы это был гуглдок. Очень крутая история, особенно актуальная при менторстве и парном программировании с джуниором. Причём можно насоздавать каналов, где каждая группка сидит и пилит что-то своё. Этакий виртуальный офис.
Минусы тоже есть: пока что слабая поддержка расширений и пока только для мака. Но назвать это супер-минусами сложно, тем более что согласно роадмапу ребята собираются исправить их.
❤ • ютуб • бусти • патреон • платный канал
Во-первых, скорость. Он не просто быстрый — он адски быстрый. Ощущения от отзывчивости и скорости примерно как от Саблайма. Не знаю как вы, но на своей скорости печати (не самой высокой, но выше среднего) я отчетливо ощущаю разницу в задержке между нажатием клавиш и результатом на экране. Это включает в себя не только непосредственно ввод текста, но вообще всё в Zed, в том числе время старта.
Во-вторых, простота. Я немного устал за последние годы, что от VSCode, что от GoLand. И тот, и другой — крутые и очень мощные инструменты. Но когда на тебя кроме кода смотрит армия иконок, а каждые пять минут всплывает уведомление, рука постепенно начинает тянуться к кобуре. В Zed занесли только то, что реально нужно. Да, я понимаю, что IDE и легковесные редакторы — это немного разные категории. Но среди именно простых редакторов не хватало чего-то помощнее, как бы это странно ни звучало. Тут из коробки поддерживается Language Server Protocol и все связанные фичи, GitHub Copilot (либо собственный ассистент от Zed с вашим OpenAI-ключом) и... всё? Ну понятно, подсветка синтаксиса и прочее, без чего редактор кода был бы просто текстовым редактором.
В-третьих, совместное редактирование — ещё одна фича, про которую я не упомянул в предыдущем абзаце. Прямо в редакторе вы можете подсоединиться к другу/коллеге и пописать вместе код, как если бы это был гуглдок. Очень крутая история, особенно актуальная при менторстве и парном программировании с джуниором. Причём можно насоздавать каналов, где каждая группка сидит и пилит что-то своё. Этакий виртуальный офис.
Минусы тоже есть: пока что слабая поддержка расширений и пока только для мака. Но назвать это супер-минусами сложно, тем более что согласно роадмапу ребята собираются исправить их.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍6🍓6🤡5❤3
Discord
Join the defer panic Discord Server!
Check out the defer panic community on Discord - hang out with 94 other members and enjoy free voice and text chat.
Думаю, далеко не все в курсе, что у нас есть ещё и дискорд-сервер. На нём уже около 100 человек, но при этом мало что происходит. Раз там нас уже так много, то чего зря добру пропадать?
Я переделал канал помощи новичкам в полноценный форум, где можно создавать отдельные треды и в них общаться. Сейчас там, понятное дело, пусто. Но если у вас есть какая-то проблема с Go или вообще с разработкой, можете открыть там тему, а я постараюсь помочь. Надеюсь, в будущем другие ребята тоже подтянутся.
А вообще расскажите, какие форматы взаимодействия/активности вы бы хотели видеть в дискорде? Может, какие-то онлайн-ивенты или что-то подобное? Для начала я решил возродить привычку постить классные ссылки в специальный канал.
Ещё была идея собирать там дайджесты гошных и бэкендерских вакансий, но руки пока у меня не дошли.
Я переделал канал помощи новичкам в полноценный форум, где можно создавать отдельные треды и в них общаться. Сейчас там, понятное дело, пусто. Но если у вас есть какая-то проблема с Go или вообще с разработкой, можете открыть там тему, а я постараюсь помочь. Надеюсь, в будущем другие ребята тоже подтянутся.
А вообще расскажите, какие форматы взаимодействия/активности вы бы хотели видеть в дискорде? Может, какие-то онлайн-ивенты или что-то подобное? Для начала я решил возродить привычку постить классные ссылки в специальный канал.
👍15❤3🤮3😭1 1
Сейчас идёт подготовка к новому сезону Podlodka Go Crew, и я снова принимаю участие в работе программного комитета. Прямо сейчас мы собираем фидбэк о том, какие темы вам интересно было бы послушать на конференции.
Просьба проголосовать за интересующие вас темы через гугл-форму.
Среди всех, кто проголосует в форме до 21 марта 17:00 МСК, будет разыгран билет на конференцию.
Просьба проголосовать за интересующие вас темы через гугл-форму.
Среди всех, кто проголосует в форме до 21 марта 17:00 МСК, будет разыгран билет на конференцию.
Google Docs
Podlodka Go Crew #3: выбираем тему сезона
Всем привет
Go Crew - это онлайн-конференция от Podlodka Crew, третий сезон которой пройдет с 13 по 17 мая. Предыдущий сезон мы посвятили обсуждению хайлоада.
Мы уже пятый год создаем крутейшие конфы с активным сообществом. Одно из отличий наших конференций…
Go Crew - это онлайн-конференция от Podlodka Crew, третий сезон которой пройдет с 13 по 17 мая. Предыдущий сезон мы посвятили обсуждению хайлоада.
Мы уже пятый год создаем крутейшие конфы с активным сообществом. Одно из отличий наших конференций…
🤝10❤🔥4🔥3❤2🤮2
Добавил новый пункт в awesome-go-interview, мой список ресурсов для подготовки к техническим интервью.
trainer — это приложение для терминала, через которое можно тренироваться в решении лайвкодинг-задач. Написано, кстати, на любимом мною фреймворке bubbletea.
❤ • ютуб • бусти • патреон • платный канал
trainer — это приложение для терминала, через которое можно тренироваться в решении лайвкодинг-задач. Написано, кстати, на любимом мною фреймворке bubbletea.
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - defer-panic/awesome-go-interview: Collection of resources for preparation to technical interview in Go
Collection of resources for preparation to technical interview in Go - defer-panic/awesome-go-interview
🔥19❤5 3🤮1
JetBrains сделали плагин для прохождения Tour of Go прямо в их IDE: https://blog.jetbrains.com/education/2023/12/18/learn-go-community-course/
Доступно не только в GoLand, но и в бесплатной IDEA
Доступно не только в GoLand, но и в бесплатной IDEA
🔥25❤5 3👍2🥴1
Во-первых, в Go мне не хватает выразительности. Это очень бедный на синтаксис язык, и каким бы гениальным разработчиком вы не были, вся красота и глубина вашей мысли будет утоплена в абсолютно дубовом и прямолинейном синтаксисе Go. Когда же я пишу на Расте, а потом читаю получившийся код, мои глаза отдыхают.
Во-вторых, Rust в отличие от Go ⚡️ молниеносно быстрый 🚀. Если бы мне надо было написать прошивку для аппарата, который запускают на Луну, я бы написал её на 🚀 Расте. Если мне нужно будет написать самый быстрый и эффективный сервис на свете, какой бы сложной внутри логика не была, я напишу его на ⚡️ Расте. Если мне нужно будет написать движок для своего блога, я напишу его на ⚡️ Расте 🚀. Если мне нужен будет скрипт для CI/CD-пайплайна, я напишу его на 💻 Расте 💀.
В-третьих, сборщик мусора — это прошлый век. Я не могу придумать более уродливую и неказистую конструкцию в программировании, чем сборщик мусора. Это не просто костыль, это король костылей. Тратить впустую cpu time, создавать лишнюю задержку в ответах бэкенд-сервисов, сжигать драгоценную энергию... Извините, но это не про меня.
В-четвертых, как же я устал от механизма обработки ошибок в Go! После каждого чиха разворачивать результат функции и проверять наличие ошибки — это какая-то дичь. Хорошо, что в Расте по-другому!
Я могу назвать ещё много причин для перехода с Go на Rust — хватило бы на объём всей трилогии Лю Цысиня «Память о прошлом Земли». Но идею, думаю, вы поняли. С этого момента все посты и ролики на ютуб-канале будут посвящены либо только Расту, либо сравнениям Go с Rust в синтетических тестах.
⚡️🚀 Viva La Rust!
Please open Telegram to view this post
VIEW IN TELEGRAM
😁82👏13👍12🤯4❤3
В GoLand и другие IDE от JetBrains завезли две важные (или просто интересные) фичи.
1. Data Flow Analysis (DFA). Статический анализ кода, позволяющий вычислять возможные значения переменных и обнаруживать потенциальные ошибки, такие как nil pointer dereference, бесконечные циклы и прочее. По сути IDE прикидывает данные, на которых программа поведёт себя некорректно.
2. Full Line Code Completion. Теперь GoLand может дополнять ваш код не «точка за точкой», а сразу всю строку. Это делается с помощью AI, но полностью локально. По сути JetBrains вытащили часть функциональности своего AI-ассистента и поместили прямо в IDE.
❤ • ютуб • бусти • патреон • платный канал
1. Data Flow Analysis (DFA). Статический анализ кода, позволяющий вычислять возможные значения переменных и обнаруживать потенциальные ошибки, такие как nil pointer dereference, бесконечные циклы и прочее. По сути IDE прикидывает данные, на которых программа поведёт себя некорректно.
2. Full Line Code Completion. Теперь GoLand может дополнять ваш код не «точка за точкой», а сразу всю строку. Это делается с помощью AI, но полностью локально. По сути JetBrains вытащили часть функциональности своего AI-ассистента и поместили прямо в IDE.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18😱12❤3🔥3🌚3
Потихоньку возвращаюсь с перерыва с хорошими новостями. На следующей неделе стартует Podlodka Go Crew 3, в которой я снова принимаю участие как член программного комитета. Podlodka Crew — это формат онлайн-конференций, который проходят в течение недели (одна сессия утром, еще одна вечером). Тема этого сезона — «Работа с базами данных». Что будет в сезоне:
⭐️ Научимся сравнивать библиотеки и ORM вместе с Арсеном Абдусаламовым из Авито. Познакомимся с решениями как можно подключаться к базам данных и узнаем про «Go way» способ.
⭐️ Попрактикуемся обращаться с распределённым MySQL с помощью Vitess вместе с Ильёй Ушаковым. Ведь одного инстанса MySQL в какой-то момент может начать не хватать. Что же делать, если переходить на NoSQL совсем неохота? Vitess — ответ на этот вопрос, золотая середина между NoSQL distributed базами данных и проверенным опытом MySQL.
⭐️ Узнаем всё о продвинутых структурах данных в Redis вместе с Олегом Арутюновым из Контура. Углубимся в преимущества и недостатки подхода, разберёмся с миграциями данных и оптимизацией базы.
⭐️ Мокать или предзаполнять базы данных? На этот вопрос ответят спикеры из Ozon Fintech. И это будет не просто доклад, а баттл: не на жизнь, а на смерть. Разберёмся, когда какой подход выбрать и стоит ли ограничиваться только одним.
🎁 Бонус: публичный собес по работе с PostgreSQL. И это, естественно, не все сессии сезона.
Залетай за билетом, чтобы не пропустить специализированную конференцию для Golang-разработчиков
Для моих подписчиков есть промокод на скидку 500 ₽ —
#партнерскийпост
Залетай за билетом, чтобы не пропустить специализированную конференцию для Golang-разработчиков
Для моих подписчиков есть промокод на скидку 500 ₽ —
go_crew_3_deferpanic#партнерскийпост
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥6⚡2🥴2🍓2❤1
У меня есть несколько сценариев для роликов разной степени готовности. Но хотелось бы узнать у вас, на какую тему вы бы хотели увидеть ролик от меня? С одной стороны не очень хочется записывать видео, которое просто пересказывает документацию. С другой стороны я вижу, что скринкасты с написанием какого-то сервиса/программы за 1.5-2 часа неплохо зашли. Хоть скринкасты сильно проще монтировать (буквально запустить auto-editor и пройтись да поправить автоматику), предварительной работы там всё ещё много. Возможно, вам интересен не только Go, но и какие-то другие языки/технологии/дисциплины?
В общем, делитесь в комментариях, какие темы вас интересуют, но еще не были никем освещены, по крайней мере на русском языке.
P.S. Ролик о планировщике Go не предлагать — на эту тему Николай Тузов уже готовит нетленку.
В общем, делитесь в комментариях, какие темы вас интересуют, но еще не были никем освещены, по крайней мере на русском языке.
👍10😁5⚡2💊1
Вопросы?
Периодически к постам приходят люди в комменты и задают там вопросы, которые не относятся к теме поста, но в целом в тему канала. Я подумал и решил: а почему бы не сделать рубрику с ответами на вопросы? Не в виде AMA-треда, а скорее еженедельного формата, где я отвечаю на один или несколько присланных вопросов. Такой формат вы могли видеть у Фёдора Борщева или Senior Software Vlogger.
Давайте так: вы отправляете любой интересующий вас вопрос через форму, а я каждую среду на какой-то (или какие-то?) из них отвечаю. На вопросы, не получившие ответа в этот раз, возможно отвечу в следующий.
Ссылка на форму: dfrp.cc/questions
Периодически к постам приходят люди в комменты и задают там вопросы, которые не относятся к теме поста, но в целом в тему канала. Я подумал и решил: а почему бы не сделать рубрику с ответами на вопросы? Не в виде AMA-треда, а скорее еженедельного формата, где я отвечаю на один или несколько присланных вопросов. Такой формат вы могли видеть у Фёдора Борщева или Senior Software Vlogger.
Давайте так: вы отправляете любой интересующий вас вопрос через форму, а я каждую среду на какой-то (или какие-то?) из них отвечаю. На вопросы, не получившие ответа в этот раз, возможно отвечу в следующий.
Ссылка на форму: dfrp.cc/questions
👍4💅1💊1 1
Расскажу, как у меня сейчас обстоят дела.
Во-первых, не так давно мы с вами пробили 5000 подписчиков на ютубе — спасибо вам большое!
Во-вторых, я недавно спрашивал у вас, про что вам было бы интересно посмотреть видос. Вы предложили много разных тем. По большинству из них уже есть вполне неплохие ролики и записи докладов с конференций. Поэтому такие темы я отодвинул в бэклог. Но были и топики, про которые никто толком еще не говорил. Среди них — реализация своего интерпретатора для (скриптового?) языка. И я решил заняться роликом именно на эту тему. Да, это не пригодится вам на собеседовании напрямую. Да, это вообще ни разу не хайповая тема. Но реализация подобного проекта — это в любом случае неплохое упражнение для мозгов, да и вообще просто весело и интересно.
Начал я пилить свой маленький язык за здравие, но пока что сильно замедлился из-за переезда. Надеюсь поскорее разобраться со всеми делами и снова взяться за ролик!
❤ • ютуб • бусти • патреон • платный канал
Во-первых, не так давно мы с вами пробили 5000 подписчиков на ютубе — спасибо вам большое!
Во-вторых, я недавно спрашивал у вас, про что вам было бы интересно посмотреть видос. Вы предложили много разных тем. По большинству из них уже есть вполне неплохие ролики и записи докладов с конференций. Поэтому такие темы я отодвинул в бэклог. Но были и топики, про которые никто толком еще не говорил. Среди них — реализация своего интерпретатора для (скриптового?) языка. И я решил заняться роликом именно на эту тему. Да, это не пригодится вам на собеседовании напрямую. Да, это вообще ни разу не хайповая тема. Но реализация подобного проекта — это в любом случае неплохое упражнение для мозгов, да и вообще просто весело и интересно.
Начал я пилить свой маленький язык за здравие, но пока что сильно замедлился из-за переезда. Надеюсь поскорее разобраться со всеми делами и снова взяться за ролик!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥9❤4🎉1🤝1
Что за язык будем реализовывать в ролике?
Можно было бы взять существующие простые языки типа Луа или вообще пойти в сторону языков не для программирования, а для данных типа JSON/TOML/YAML и т.д. Разница, к слову, только в объёме работы. Но в качестве примера для ролика я посчитал даже Луа слишком большим языком, а парсить форматы данных не так интересно. Поэтому будем пилить свой собственный скриптовый язык программирования(однажды программист не изобрёл велосипед, и больше его никто не видел) . Сразу скажу, что то, что я сейчас буду рассказывать — моё видение в данный момент. К моменту выхода ролика всё может поменяться ещё 100 раз.
Язык будет предельно минималистичный. Простой настолько, насколько это возможно. Это относится как к синтаксису, так и к фичам. Давайте сначала разберёмся с синтаксисом. Например, есть языки со значимыми отступами типа Питона:
Решение сделать синтаксис именно таким понятно — такой код кажется менее шумным по сравнению с классическим си-лайк синтаксисом:
Я же хочу пойти в сторону ещё большей лаконичности:
Тут сразу две идеи. Первая — использовать значимые отступы вместо фигурных скобок или иных способов обозначения границ блока кода. Вторая — там, где можно однозначно распарсить выражение без скобок и прочих символов, позволять не использовать эти символы. Естественно, тут сразу всплывает множество эдж-кейсов. Например, что если я захочу передать в вызов функции вызов другой функции? Тогда такое выражение заключается в скобки для избежания неоднозначности прочтения:
В идеале хочется получить синтаксис, где небуквенные символы не используются вообще. Ну либо оставить их в тех местах, где с ними реально проще и удобнее.
Всякие операторы логических выражений тоже пишутся словами:
Единственное исключение — знаки равенства и неравенства:
А, да, ещё оператора
Фич в языке тоже по-минимуму:
- Типы
-- Простые типы данных: числа, целые числа, строки и логический тип
-- Составные типы данных: список, мапа
-- Сущности (entities) — как структуры, только поля могут быть уложены в памяти разреженно
-- Енамы (такого даже в Go нет!)
- Функции
- Конструкции для управления логикой
-- Условия (только if)
-- switch-case
-- Циклы
--- со счётчиком
--- с условием
--- по коллекции
Типы динамические, указывать их явно не нужно (и не факт, что можно будет). Для полей сущностей типы определяются через значения по умолчанию:
Импортов и вообще системы управления модулями не будет — всё-таки язык встраиваемый. По этой же причине стандартная библиотека предельно аскетичная — немного математики и хэлперы для работы со встроенными типами.
Рабочее название — Lisi. Изначально я хотел сделать что-то похожее на Лисп, поэтому нашел созвучный топоним, соответствующий одному из озёр в Тбилиси. Как вы понимаете, название потеряло былой смысл, но я решил ничего не менять.
Можно было бы взять существующие простые языки типа Луа или вообще пойти в сторону языков не для программирования, а для данных типа JSON/TOML/YAML и т.д. Разница, к слову, только в объёме работы. Но в качестве примера для ролика я посчитал даже Луа слишком большим языком, а парсить форматы данных не так интересно. Поэтому будем пилить свой собственный скриптовый язык программирования
Язык будет предельно минималистичный. Простой настолько, насколько это возможно. Это относится как к синтаксису, так и к фичам. Давайте сначала разберёмся с синтаксисом. Например, есть языки со значимыми отступами типа Питона:
def greet(name):
print("Hello,", name)
Решение сделать синтаксис именно таким понятно — такой код кажется менее шумным по сравнению с классическим си-лайк синтаксисом:
#include <iostream>
void main(string name) {
std::cout << "Hello, " << name << std::endl;
}
Я же хочу пойти в сторону ещё большей лаконичности:
fun greet name
print "Hello, " name
Тут сразу две идеи. Первая — использовать значимые отступы вместо фигурных скобок или иных способов обозначения границ блока кода. Вторая — там, где можно однозначно распарсить выражение без скобок и прочих символов, позволять не использовать эти символы. Естественно, тут сразу всплывает множество эдж-кейсов. Например, что если я захочу передать в вызов функции вызов другой функции? Тогда такое выражение заключается в скобки для избежания неоднозначности прочтения:
print "Hello, " (getNameByUserID 42)
В идеале хочется получить синтаксис, где небуквенные символы не используются вообще. Ну либо оставить их в тех местах, где с ними реально проще и удобнее.
Всякие операторы логических выражений тоже пишутся словами:
&& → and
|| → or
! → not
Единственное исключение — знаки равенства и неравенства:
!= == < > <= >=
А, да, ещё оператора
else не будет. Вообще. Я тут посмотрел, и понял, что я не использовал этот оператор прям очень давно. Обычно когда руки почему-то на автомате набирают else, я сразу выношу блок с условиями в отдельную функцию, а там уже всё решается ретёрнами. Для кейса, когда нужно рассмотреть много разных вариантов скорее всего сделаем что-то типа switch-case.Фич в языке тоже по-минимуму:
- Типы
-- Простые типы данных: числа, целые числа, строки и логический тип
-- Составные типы данных: список, мапа
-- Сущности (entities) — как структуры, только поля могут быть уложены в памяти разреженно
-- Енамы (такого даже в Go нет!)
- Функции
- Конструкции для управления логикой
-- Условия (только if)
-- switch-case
-- Циклы
--- со счётчиком
--- с условием
--- по коллекции
Типы динамические, указывать их явно не нужно (и не факт, что можно будет). Для полей сущностей типы определяются через значения по умолчанию:
entity Player
name = ""
x = 0.0
y = 0.0
hp = 100
Импортов и вообще системы управления модулями не будет — всё-таки язык встраиваемый. По этой же причине стандартная библиотека предельно аскетичная — немного математики и хэлперы для работы со встроенными типами.
Рабочее название — Lisi. Изначально я хотел сделать что-то похожее на Лисп, поэтому нашел созвучный топоним, соответствующий одному из озёр в Тбилиси. Как вы понимаете, название потеряло былой смысл, но я решил ничего не менять.
🔥22🤯4💅4👍3💊2
Нейронки добрались до мемов. Пока не сказать, что я прям валяюсь под столом, но некоторый уровень остроумия уже присутствует.
😁22🔥6👍5💊2❤1
Мои друзья разрабатывают инструмент для удобного и быстрого поиска работы. Чтобы сделать этот инструмент лучше, им нужна статистика о том, как люди разных IT-профессий в разных локациях подходят к этому вопросу. Информация, которой вы поделитесь, очень им поможет. А если сможете поделиться ссылкой на форму со своими друзьями и коллегами, поможете стократно. Даже если прямо сейчас не ищете работу, будет круто, если поделитесь прошлым опытом.
Заполнение формы не займёт больше 5-10 минут.
Ссылка на форму 👉 https://airtable.com/appq2bpZuurGX5TwL/pagNtE1vZJtRILBpd/form
Форма анонимная, но при желании вы можете оставить свои контактные данные.
Заполнение формы не займёт больше 5-10 минут.
Ссылка на форму 👉 https://airtable.com/appq2bpZuurGX5TwL/pagNtE1vZJtRILBpd/form
Airtable
Airtable | Everyone's app platform
Airtable is a low-code platform for building collaborative apps. Customize your workflow, collaborate, and achieve ambitious outcomes. Get started for free.
💊10👍3❤2✍1🔥1
Неделя с Zed
Когда я писал про Zed в первый раз, я запускал его пару раз, но полноценно работать в нём не пробовал. На прошлой неделе решил попробовать в качестве основного и в идеале единственного редактора.
Сразу скажу, что поиграться с главной фичей я так пока и не смог. Речь про возможность подключиться к коллеге/другу и работать над одной кодовой базой вместе так, как если бы это был гугл-док. Попробую обязательно эту штуку на каком-нибудь пет-проекте. Кроме этой фичи в остальном у Zed все те же плюсы и минусы, что у других «простых» редакторов типа Саблайма и Вима.
Zed не отвлекает по пустякам. Когда я открываю редактор, скорее всего я это делаю, чтобы что-то редактировать. Вместо этого почти все редакторы начинают меня засыпать хламом в стиле «Смотри, что у нас нового — куча фичей, которые ты никогда не будешь использовать» и «У плагина X появилась новая версия». Я никогда не понимал, почему я должен принудительно видеть все эти уведомления. Хуже только, когда их показывают не при старте, а просто внезапно поверх кода, когда я на нём сфокусирован. Это одна часть. А вторая часть — нагромождение тулбаров и иконок, каждая из которых мне пригождается в лучшем случае один раз за день. При том, что есть Command Palette, через который я всегда могу найти всё то же самое. Более того, обычно я так и делаю, даже если иконка у меня перед лицом. Так вот, в Zed этого всего слава богу пока нет, по крайней мере в таких масштабах.
Zed очень быстрый. Я имею в виду, очень быстрый. Это может быть не так заметно, когда пользуешься им непосредственно. Но когда возвращаешься в VS Code или IDEA, сразу чувствуешь, что потерял.
Но за скорость приходится платить: у Zed нет внутри продвинутого анализа кода, как у IDEA — по крайней мере для Go. Поэтому уровень понимания кода будет, как у любого другого редактора, который поддерживает LSP и интегрируется с Go через gopls. Мне такого уровня в большинстве случаев хватает, но как и в Виме с VS Code, gopls иногда сходит с ума и засыпает меня ошибками, которые не имеют никакого отношения к реальности. Обычно помогает принудительный рестарт gopls. Возможно, с другими языками всё получше. Но опять же, это скорее проблема gopls, а не Zed.
Я запускал Goland только когда мне нужно было запрыгнуть в дебаггер или сделать какой-то нетривиальный рефакторинг. Для этих задач лучше Goland ничего пока нет.
В общем, поживу в Zed ещё неделю, пока скорее нравится.
❤ • ютуб • бусти • патреон • платный канал
Когда я писал про Zed в первый раз, я запускал его пару раз, но полноценно работать в нём не пробовал. На прошлой неделе решил попробовать в качестве основного и в идеале единственного редактора.
Сразу скажу, что поиграться с главной фичей я так пока и не смог. Речь про возможность подключиться к коллеге/другу и работать над одной кодовой базой вместе так, как если бы это был гугл-док. Попробую обязательно эту штуку на каком-нибудь пет-проекте. Кроме этой фичи в остальном у Zed все те же плюсы и минусы, что у других «простых» редакторов типа Саблайма и Вима.
Zed не отвлекает по пустякам. Когда я открываю редактор, скорее всего я это делаю, чтобы что-то редактировать. Вместо этого почти все редакторы начинают меня засыпать хламом в стиле «Смотри, что у нас нового — куча фичей, которые ты никогда не будешь использовать» и «У плагина X появилась новая версия». Я никогда не понимал, почему я должен принудительно видеть все эти уведомления. Хуже только, когда их показывают не при старте, а просто внезапно поверх кода, когда я на нём сфокусирован. Это одна часть. А вторая часть — нагромождение тулбаров и иконок, каждая из которых мне пригождается в лучшем случае один раз за день. При том, что есть Command Palette, через который я всегда могу найти всё то же самое. Более того, обычно я так и делаю, даже если иконка у меня перед лицом. Так вот, в Zed этого всего слава богу пока нет, по крайней мере в таких масштабах.
Zed очень быстрый. Я имею в виду, очень быстрый. Это может быть не так заметно, когда пользуешься им непосредственно. Но когда возвращаешься в VS Code или IDEA, сразу чувствуешь, что потерял.
Но за скорость приходится платить: у Zed нет внутри продвинутого анализа кода, как у IDEA — по крайней мере для Go. Поэтому уровень понимания кода будет, как у любого другого редактора, который поддерживает LSP и интегрируется с Go через gopls. Мне такого уровня в большинстве случаев хватает, но как и в Виме с VS Code, gopls иногда сходит с ума и засыпает меня ошибками, которые не имеют никакого отношения к реальности. Обычно помогает принудительный рестарт gopls. Возможно, с другими языками всё получше. Но опять же, это скорее проблема gopls, а не Zed.
Я запускал Goland только когда мне нужно было запрыгнуть в дебаггер или сделать какой-то нетривиальный рефакторинг. Для этих задач лучше Goland ничего пока нет.
В общем, поживу в Zed ещё неделю, пока скорее нравится.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍6👀3💊3🤔2
Подписываюсь под каждым словом Николая.
От себя добавлю про деньги. Возможно, вы удивитесь, но ролики появляются на Ютубе в основном потому что Ютуб делится прибылью с рекламы с авторами роликов, на которых эта реклама прокручивается. Если площадка не платит денег и там нет рекламодателей, то какой смысл туда выкладывать ролики? Я не про альтруистов и странных людей типа меня, у которых какие-то другие цели и задачи, а про людей с роликами на бытовые темы и лайфстайл-влогами.
Можно возразить, что рекламодатели сейчас придут, и всё станет супер. Но не станет.
Во-первых, рынок «Россия» и рынок «весь мир» сравнивать просто глупо. За пределами России живёт ещё огромное количество людей, которые говорят по-русски (даже до 24 февраля 2022) — это десятки миллионов людей. Кто-то не говорит по-русски, но готов смотреть контент на русском с субтитрами (как минимум на моём канале такое бывает). И многие из них смотрят контент, сделанный в России. Станут ли они ради этого переходить на российские видеохостинги, когда весь остальной контент для них живёт на Ютубе? Не факт.
Т.е. с точки зрения аудитории мы имеем дело с меньшим рынком, на котором меньше конкуренции среди рекламодателей. Можно было бы дублировать контент с Ютуба на рутубы с вк видео, как это делают уже давно многие. Но я этого делать принципиально не хочу — это лишняя работа в пользу площадок, которые противоречат моим принципам.
Во-вторых, если мы посмотрим на соседнюю индустрию — музыкальные стриминговые площадки — то увидим, что та же ВК Музыка платит какие-то совсем смешные крохи даже по сравнению с копейками, которые платят остальные. Будет ли другая ситуация с ВК Видео? Я что-то сомневаюсь.
А если говорить даже не про деньги, то ВК Видео и Рутуб — просто говно. Попробуйте залить хоть что-то на Рутуб. И да, мы почему-то вообще свыклись с тем, что блокировка ключевых ресурсов — это ок. Это не ок нигде и никогда.
В общем, мой канал с Ютуба точно не перейдёт на другие площадки — ни на российские, ни на французские, ни на зимбабвийские, ни на какие-либо ещё. Я был бы очень рад, если бы у Ютуба был достойный конкурент. Но таких пока нет, к сожалению.
Я недолюбливаю Гугл, но как минимум две классные штуки он сделал — это Ютуб и Голанг.
От себя добавлю про деньги. Возможно, вы удивитесь, но ролики появляются на Ютубе в основном потому что Ютуб делится прибылью с рекламы с авторами роликов, на которых эта реклама прокручивается. Если площадка не платит денег и там нет рекламодателей, то какой смысл туда выкладывать ролики? Я не про альтруистов и странных людей типа меня, у которых какие-то другие цели и задачи, а про людей с роликами на бытовые темы и лайфстайл-влогами.
Можно возразить, что рекламодатели сейчас придут, и всё станет супер. Но не станет.
Во-первых, рынок «Россия» и рынок «весь мир» сравнивать просто глупо. За пределами России живёт ещё огромное количество людей, которые говорят по-русски (даже до 24 февраля 2022) — это десятки миллионов людей. Кто-то не говорит по-русски, но готов смотреть контент на русском с субтитрами (как минимум на моём канале такое бывает). И многие из них смотрят контент, сделанный в России. Станут ли они ради этого переходить на российские видеохостинги, когда весь остальной контент для них живёт на Ютубе? Не факт.
Т.е. с точки зрения аудитории мы имеем дело с меньшим рынком, на котором меньше конкуренции среди рекламодателей. Можно было бы дублировать контент с Ютуба на рутубы с вк видео, как это делают уже давно многие. Но я этого делать принципиально не хочу — это лишняя работа в пользу площадок, которые противоречат моим принципам.
Во-вторых, если мы посмотрим на соседнюю индустрию — музыкальные стриминговые площадки — то увидим, что та же ВК Музыка платит какие-то совсем смешные крохи даже по сравнению с копейками, которые платят остальные. Будет ли другая ситуация с ВК Видео? Я что-то сомневаюсь.
А если говорить даже не про деньги, то ВК Видео и Рутуб — просто говно. Попробуйте залить хоть что-то на Рутуб. И да, мы почему-то вообще свыклись с тем, что блокировка ключевых ресурсов — это ок. Это не ок нигде и никогда.
В общем, мой канал с Ютуба точно не перейдёт на другие площадки — ни на российские, ни на французские, ни на зимбабвийские, ни на какие-либо ещё. Я был бы очень рад, если бы у Ютуба был достойный конкурент. Но таких пока нет, к сожалению.
Telegram
Николай Тузов
Я надеюсь, уж мне то не нужно переживать о блокировке ютуба, разберётесь с VPN, не маленькие? 💪
В любом случае, я никуда с этой плащадки не уйду. Как и у большинства русскоязычных блогеров, у меня примерно 60% зрителей из РФ, и вот для оставшихся 40% я в…
В любом случае, я никуда с этой плащадки не уйду. Как и у большинства русскоязычных блогеров, у меня примерно 60% зрителей из РФ, и вот для оставшихся 40% я в…
3❤40👍8🔥5❤🔥2💯2
Пока я был в отпуске, вышел Go 1.23.
▪️Самое главное изменение — итераторы. Теперь можно делать
▪️Новый пакет unique позволяет проще и эффективнее сравнивать значения, например, для дедупликации. Думаю, эту штуку тоже стоит разобрать отдельно.
▪️Таймеры больше не утекают, если их не закрыть.
▪️И как всегда, много минорных изменений в стандартной библиотеке.
Про какую из новых фичей вы бы хотели узнать больше?
❤ • ютуб • бусти • патреон • платный канал
▪️Самое главное изменение — итераторы. Теперь можно делать
for-range по кастомным структурам данных. Думаю разобрать итераторы подробно в отдельном посте.▪️Новый пакет unique позволяет проще и эффективнее сравнивать значения, например, для дедупликации. Думаю, эту штуку тоже стоит разобрать отдельно.
▪️Таймеры больше не утекают, если их не закрыть.
▪️И как всегда, много минорных изменений в стандартной библиотеке.
Про какую из новых фичей вы бы хотели узнать больше?
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍12❤7🔥7 2💊1
А в Телеграм за время моего отпуска завезли реакции-звёздочки. Это платные реакции (100 звёздочек ~= $1.69), с помощью которых можно поддержать автора. Если у вас по какой-то причине возникло желание поддержать меня, потратив на это несущественную сумму, то звёздочки — отличный способ. Покупаются они кстати через того же бота, что и подписка на телеграмный премиум.
32 14❤1🔥1💊1