Какие варианты изучения новых языков программирования вы знаете?
==========
1) Пойти в технический ВУЗ на разновидность кафедры автоматики (или лицей, где школьникам уже преподают программирование). Я так на протяжении семестров в формате лекций и лабораторных изучал C, C++, Pascal, Prolog, SQL, ESQL/C и так далее. С одной стороны мы хорошо знали базы изучаемых языков, но с другой стороны почти ничего из этого не пригодилось никому из моих однокурсников (кроме ребят, которых пригласили писать вирусы на C++, но там отдельная история)
2) Прочитать книгу по программированию. Лично я так изучил многие языки, с помощью которых зарабатывал деньги. Тут поинтересней, так как я сам выбирал, что учить:
2.1) Сперва в универе меня заинтересовал ASM, которого не было в моей учебной программе, но который я выучил дома по книге в летние каникулы между первым и вторым курсом (компа у меня не было), а потом зарабатывал написанием лабораторных и курсачей для "безопасников".
2.2) Далее меня заинтересовал PHP (у меня была книга по 3-й версии и я на своем опыте набивал шишки при переходе на 4-ю): а) сделал прототип форума, в котором структурированное содержимое базы с помощью XSLT преобразовывалось в HTML-странички, б) делал прокси-портал для 1С:Архива, в) кастомизировал для OpenCart обмен с 1С
2.3) Когда я ради прибавки к степендии пошел программировать на Foxpro, то изначально я не знал о нем ничего, но очень быстро продвинулся именно по книгам, обойдя коллег.
2.4) По книге Брюса Эккеля я освоил Java, которая пригодилась мне чуть позже для разработки Android-приложений (когда мобильной платформы 1С еще не было)
2.5) Как-то купил карманный справочник по WEB и углубленные знания HTTP, CSS и JavaScript мне пригождались довольно часто и на разных работах.
3) Пойти на курсы. Вероятно это самый "правильный" путь, но все зависит от качества самих курсов. У меня всего два опыта - позитивный и не совсем. Когда я писал на PHP надстройку над 1С:Архивом для УИТ, то мне предложили присоединится к новой учебной группе и прослушать с ними курс по 1С - "Основные объекты" и это обучение пошло настолько гладко, что еще не завершив курс я отправился на проект внедрения 1С:УПП. Во время войны и очередных запретов 1С в Украине я решил освежить Java с уклоном в Spring Cloud, где на курсах (с гарантированным трудоустройством) снова был одним из первых, но по результату оказалось, что спроса на джавистов особо не было (отслеживал судьбу однокурсников - лишь единицы стали программистами и далеко не сразу).
4) Посмотреть обучающее видео на Youtube. Что-то среднее между обучением по книгам и курсами, но мой опыт крайне ограничен, так как во время моего "становления" на Youtube были ролики из категории "сам себе режисер" (помните? я всегда с собой беру вииидео-камеру!)
5) Учится у наставника (ментора). Это самый продвинутый и эффективный путь индивидуального обучения, к тому же на сегодня вполне доступный. В мое время менторов не было, но сейчас их можно найти среди знакомых, на работе или на специальных менторских платформах.
==========
Все? Еще идеи?
А как же современные технологии 🤓
С начала года я начал любопытный челлендж-эксперимент по изучению нового для меня языка с помощью вайбкодинга. Опыт оказался довольно интересный - ИИ для меня был словно ментором в интерактивном обучающем курсе.
Челлендж завершил ровно вчера и уже готов о нем рассказать. Но предупреждаю, что материала накопилось много 🫣
#AI #computerscience #programming
#ИИ #информатика #программирование
==========
1) Пойти в технический ВУЗ на разновидность кафедры автоматики (или лицей, где школьникам уже преподают программирование). Я так на протяжении семестров в формате лекций и лабораторных изучал C, C++, Pascal, Prolog, SQL, ESQL/C и так далее. С одной стороны мы хорошо знали базы изучаемых языков, но с другой стороны почти ничего из этого не пригодилось никому из моих однокурсников (кроме ребят, которых пригласили писать вирусы на C++, но там отдельная история)
2) Прочитать книгу по программированию. Лично я так изучил многие языки, с помощью которых зарабатывал деньги. Тут поинтересней, так как я сам выбирал, что учить:
2.1) Сперва в универе меня заинтересовал ASM, которого не было в моей учебной программе, но который я выучил дома по книге в летние каникулы между первым и вторым курсом (компа у меня не было), а потом зарабатывал написанием лабораторных и курсачей для "безопасников".
2.2) Далее меня заинтересовал PHP (у меня была книга по 3-й версии и я на своем опыте набивал шишки при переходе на 4-ю): а) сделал прототип форума, в котором структурированное содержимое базы с помощью XSLT преобразовывалось в HTML-странички, б) делал прокси-портал для 1С:Архива, в) кастомизировал для OpenCart обмен с 1С
2.3) Когда я ради прибавки к степендии пошел программировать на Foxpro, то изначально я не знал о нем ничего, но очень быстро продвинулся именно по книгам, обойдя коллег.
2.4) По книге Брюса Эккеля я освоил Java, которая пригодилась мне чуть позже для разработки Android-приложений (когда мобильной платформы 1С еще не было)
2.5) Как-то купил карманный справочник по WEB и углубленные знания HTTP, CSS и JavaScript мне пригождались довольно часто и на разных работах.
3) Пойти на курсы. Вероятно это самый "правильный" путь, но все зависит от качества самих курсов. У меня всего два опыта - позитивный и не совсем. Когда я писал на PHP надстройку над 1С:Архивом для УИТ, то мне предложили присоединится к новой учебной группе и прослушать с ними курс по 1С - "Основные объекты" и это обучение пошло настолько гладко, что еще не завершив курс я отправился на проект внедрения 1С:УПП. Во время войны и очередных запретов 1С в Украине я решил освежить Java с уклоном в Spring Cloud, где на курсах (с гарантированным трудоустройством) снова был одним из первых, но по результату оказалось, что спроса на джавистов особо не было (отслеживал судьбу однокурсников - лишь единицы стали программистами и далеко не сразу).
4) Посмотреть обучающее видео на Youtube. Что-то среднее между обучением по книгам и курсами, но мой опыт крайне ограничен, так как во время моего "становления" на Youtube были ролики из категории "сам себе режисер" (помните? я всегда с собой беру вииидео-камеру!)
5) Учится у наставника (ментора). Это самый продвинутый и эффективный путь индивидуального обучения, к тому же на сегодня вполне доступный. В мое время менторов не было, но сейчас их можно найти среди знакомых, на работе или на специальных менторских платформах.
==========
Все? Еще идеи?
А как же современные технологии 🤓
С начала года я начал любопытный челлендж-эксперимент по изучению нового для меня языка с помощью вайбкодинга. Опыт оказался довольно интересный - ИИ для меня был словно ментором в интерактивном обучающем курсе.
Челлендж завершил ровно вчера и уже готов о нем рассказать. Но предупреждаю, что материала накопилось много 🫣
#AI #computerscience #programming
#ИИ #информатика #программирование
🔥2
===
Челлендж-эксперимент по изучению языка Go
===
Почему Go? У меня периодически возникают идеи, для которых нужен быстрый и стабильно работающий бэкенд. В очередной раз проанализировав современные языки я пришел к выводу, что Go тут просто идеален (лучше только Rust). Единственный минус - я его абсолютно не знаю.
Ранее я уже перечислял варианты, как можно было бы выучить новый язык. Но мне хотелось бы поэкспериментировать не только с использованием новой технологии программирования, но и с новыми технологиями обучения. Попробовать ИИ-обучение!
Еще десять лет назад обучение с помощью ИИ было научной фантастикой. Уже три года назад можно было просить у чат-ботов от OpenAI и Anthropic объяснить какую-то тему - ответ мог оказаться по большей части галлюцинацией, но иногда позволял получить "озарение" и дать верное направление поисков. И, наконец переходя к сегодняшнему дню, мы видим, что в большинстве ИИ-сервисов появились специализированные режимы обучения, а популярные Youtube-блогеры все чаще советуют GPT-ментора вместо посещения курсов.
Но как построить эффективное обучение, чтобы не попасть на долгие месяцы в уже классическую ИИ-петлю "давайте рассмотрим этот редкий и почти не используемый случай подробнее с примерами и но без воды"?
Мой эксперимент поставлен как попытка эффективно использовать современную мощь ИИ, но при этом не позволять "ментору" перехватывать инициативу и лично контролировать каждый шаг обучения.
Суть испытания в девяти пунктах:
#AI #ИИ #эксперимент #обучение
Челлендж-эксперимент по изучению языка Go
===
Почему Go? У меня периодически возникают идеи, для которых нужен быстрый и стабильно работающий бэкенд. В очередной раз проанализировав современные языки я пришел к выводу, что Go тут просто идеален (лучше только Rust). Единственный минус - я его абсолютно не знаю.
Ранее я уже перечислял варианты, как можно было бы выучить новый язык. Но мне хотелось бы поэкспериментировать не только с использованием новой технологии программирования, но и с новыми технологиями обучения. Попробовать ИИ-обучение!
Еще десять лет назад обучение с помощью ИИ было научной фантастикой. Уже три года назад можно было просить у чат-ботов от OpenAI и Anthropic объяснить какую-то тему - ответ мог оказаться по большей части галлюцинацией, но иногда позволял получить "озарение" и дать верное направление поисков. И, наконец переходя к сегодняшнему дню, мы видим, что в большинстве ИИ-сервисов появились специализированные режимы обучения, а популярные Youtube-блогеры все чаще советуют GPT-ментора вместо посещения курсов.
Но как построить эффективное обучение, чтобы не попасть на долгие месяцы в уже классическую ИИ-петлю "давайте рассмотрим этот редкий и почти не используемый случай подробнее с примерами и но без воды"?
Мой эксперимент поставлен как попытка эффективно использовать современную мощь ИИ, но при этом не позволять "ментору" перехватывать инициативу и лично контролировать каждый шаг обучения.
Суть испытания в девяти пунктах:
1. Выбираю ОДНУ идею и выполняю ее разработку на Go от создания проекта до публикации на Github
2. Всю разработку и сопровождение делаю исключительно в ОДНОМ инструменте - Google Antigravity
3. В качестве своих рабочих ИИ-моделей использую только те LLM, которые доступны в Google Antigravity (Claude Opus/Sonnet, GPT-OSS, Gemini PRO, Gemini Flash)
4. НЕ покупаю подписку и ВСЕ делаю исключительно в рамках недельных лимитов бесплатного использования
5. Если лимиты уже закончились, а идеи еще остались, то можно в качестве исключения общаться с бесплатным чат-ботом Gemini на сайте Google, но только не с Anthropic или GPT! Если хочется писать код, то без вариантов программировать самостоятельно.
6. Режим диалога с ИИ-агентом - всегда "планирование". Сначала обсуждаем фичу, а лишь потом делаем. Всегда уточняем наличие альтернативных реализацию и их плюсов-минусов.
7. Никогда не принимать правки кода в "слепую" и перепроверять каждое даже рутинное изменение (в Antigravity очень удобный механизм работы с дифами)
8. Не разрешать безусловное выполнение агентом всех консольных команд - перепроверять в Google все чего я не знаю.
9. Если в сгенерированном коде что-то непонятно, то задаем агенту вопросы пока все не станет очевидно!
#AI #ИИ #эксперимент #обучение
🔥3
(начало)
Почему Antigravity, а не Cursor, Copilot, Claude Code или что-то иное?
Каждый инструмент имеет под собой определенную идеологию использования. Мне для учебных целей консольные инструменты абсолютно противопоказаны - ведь нужно контролировать и структуру проекта и каждую строчку в каждом файле. Так же зачем запуски дебага, линтера, тестов и билдов делать вручную в консоли, если для этого есть удобные кнопочки в IDE?
Среди доступных IDE самые простые, легковесные (и бесплатные) - это VS Code и его клоны. Каждый вариант имеет существенные различия и потому пользуются спросом у различных категорий специалистов. Тот же Cursor, например, имеет собственную ИИ-модель (на базе китайского опенсурса) и поддерживает разработку SDD - все это создает ему популярность, но мне сейчас этот все не нужно.
В общем, я попробовал несколько и именно Antigravity по моим субъективным ощущениям максимально подошел для целей обучения.
Почему я решил ограничится бесплатными лимитами и не купил подписку?
Все просто. В покупке для меня не было смысла. Я иногда даже не использовал все бесплатные токены - ведь на эксперимент я выделял вечера после работы и выходные, а следовательно не особо много времени. Так же паузы в ожидании возобновления лимитов - это тоже важное время, когда можно погуглить вспомогательные статьи на тему. А еще это время просто поразмышлять над уже полученной информацией, дать ей время "утрястись" в голове.
Если подумать, то ограничение запросов к ИИ-моделям тоже является частью учебного процесса. Нельзя бесконечно полагаться на чужое мнение и разводить длительные обсуждения (которые, к слову, токсичны для контекста так как размывают фокус). Идеальный диалог разработки фичи состоит всего из 4 сообщений: 1) сама задача с максимальным контекстом от меня, 2) план выполнения от ИИ с уточняющими вопросам, 3) мое подтверждение плана и ответы на вопросы, 4) результат работы с возможность принять или отклонить. На этом тут уже всё - новая фича будет в новом чате.
А еще ограничение лимитов не позволило подключать MCP типа Context7. Того же Claude Opus мне в "чистом использовании" хватало ровно на одну фичу, после чего он со мною прощался на неделю. Но оказалось, что современные модели уже из коробки превосходно знают документацию и не нуждаются в "костылях". Так же "чистая" работа позволила мне познакомится с характером различных моделей, понять их особенности и как они думают.
#AI #ИИ #эксперимент #обучение
Почему Antigravity, а не Cursor, Copilot, Claude Code или что-то иное?
Каждый инструмент имеет под собой определенную идеологию использования. Мне для учебных целей консольные инструменты абсолютно противопоказаны - ведь нужно контролировать и структуру проекта и каждую строчку в каждом файле. Так же зачем запуски дебага, линтера, тестов и билдов делать вручную в консоли, если для этого есть удобные кнопочки в IDE?
Среди доступных IDE самые простые, легковесные (и бесплатные) - это VS Code и его клоны. Каждый вариант имеет существенные различия и потому пользуются спросом у различных категорий специалистов. Тот же Cursor, например, имеет собственную ИИ-модель (на базе китайского опенсурса) и поддерживает разработку SDD - все это создает ему популярность, но мне сейчас этот все не нужно.
В общем, я попробовал несколько и именно Antigravity по моим субъективным ощущениям максимально подошел для целей обучения.
Почему я решил ограничится бесплатными лимитами и не купил подписку?
Все просто. В покупке для меня не было смысла. Я иногда даже не использовал все бесплатные токены - ведь на эксперимент я выделял вечера после работы и выходные, а следовательно не особо много времени. Так же паузы в ожидании возобновления лимитов - это тоже важное время, когда можно погуглить вспомогательные статьи на тему. А еще это время просто поразмышлять над уже полученной информацией, дать ей время "утрястись" в голове.
Если подумать, то ограничение запросов к ИИ-моделям тоже является частью учебного процесса. Нельзя бесконечно полагаться на чужое мнение и разводить длительные обсуждения (которые, к слову, токсичны для контекста так как размывают фокус). Идеальный диалог разработки фичи состоит всего из 4 сообщений: 1) сама задача с максимальным контекстом от меня, 2) план выполнения от ИИ с уточняющими вопросам, 3) мое подтверждение плана и ответы на вопросы, 4) результат работы с возможность принять или отклонить. На этом тут уже всё - новая фича будет в новом чате.
А еще ограничение лимитов не позволило подключать MCP типа Context7. Того же Claude Opus мне в "чистом использовании" хватало ровно на одну фичу, после чего он со мною прощался на неделю. Но оказалось, что современные модели уже из коробки превосходно знают документацию и не нуждаются в "костылях". Так же "чистая" работа позволила мне познакомится с характером различных моделей, понять их особенности и как они думают.
#AI #ИИ #эксперимент #обучение
Telegram
Журнал инженера-программиста
Какие варианты изучения новых языков программирования вы знаете?
==========
1) Пойти в технический ВУЗ на разновидность кафедры автоматики (или лицей, где школьникам уже преподают программирование). Я так на протяжении семестров в формате лекций и лабораторных…
==========
1) Пойти в технический ВУЗ на разновидность кафедры автоматики (или лицей, где школьникам уже преподают программирование). Я так на протяжении семестров в формате лекций и лабораторных…
👍1
(начало)
Выбор идеи для пет-проекта на Go
Я как раз в новостях прочитал про очередное OSINT-расследование по GPS-координатам из фоток. Любопытно. Почему бы не анализировать EXIF и прочие метаданные?
Собрал для реализации короткий список типов изображений, которые поддерживают именно EXIF мета-теги: JPEG, TIFF, PNG и WebP. Небольшой список. Ведь некоторые популярные форматы (такие как BMP) вообще не содержат встроенных метаданных. А другие же (как GIF) могут содержать лишь метки XMP, но их можно засунуть почти всюду и я решил не распыляться.
Поскольку я все равно "вскрывал" бинарники картинок и вытаскивал EXIF, то решил заодно вытащить другие популярные (благодаря Photoshop) форматы: IPTC и XMP.
Библиотечные функции анализа файлов сами по себе не интересны и потому к ним нужен интерфейс. Я выбрал все возможные варианты: работа в консоли с аргументами командной строки, работа в консоли в режиме каналов (Piping), работа как web-сервер и работа в привычном оконном графическом интерфейсе.
Я старался максимально опираться на стандартную библиотеку, но там не предусмотрели работу с GUI и пришлось выбирать среди ряда популярных вариантов:
- Wails, что-то типа Electron - нужно описать HTML-интерфейс, который будет работать поверх встроенных WebView2/WebKit;
- Gio, который использует нативные графические элементы из DirectX, Metal и Vulkan/OpenGL, что полнофункционально, но каждая из платформ требует отдельную разработку;
- Fyne, требующий декларативное описание интерфейсов, которые будут выглядеть плюс-минус похожи на всех платформах, но требуют определенный компилятор C для сборки под нужную архитектуру.
Поскольку десктопные вебаппы меня всегда бесили, а с почти нативной разработкой интерфейса связываться не хотелось, то я выбрал последний вариант - Fyne.
#AI #ИИ #эксперимент #обучение
Выбор идеи для пет-проекта на Go
Я как раз в новостях прочитал про очередное OSINT-расследование по GPS-координатам из фоток. Любопытно. Почему бы не анализировать EXIF и прочие метаданные?
К тому же это не накладывало на меня никаких обязательств, так как это хоть и не создание 100500-й версии ToDo-списков или домашних финансов, но различных бесплатных EXIF-сервисов в интернете просто море, практически в каждом графическом редакторе есть просмотр и изменение мета-тегов, уже не говоря про мегапопулярную опенсурсную утилиту ExifTool.
Собрал для реализации короткий список типов изображений, которые поддерживают именно EXIF мета-теги: JPEG, TIFF, PNG и WebP. Небольшой список. Ведь некоторые популярные форматы (такие как BMP) вообще не содержат встроенных метаданных. А другие же (как GIF) могут содержать лишь метки XMP, но их можно засунуть почти всюду и я решил не распыляться.
Хотя именно для GIF я хотел сделать исключение и даже добавил его в детектирование типов файлов для извлечения меток, но потом о нем позорно забыл. Это к слову, о необходимости иметь проигнорированный мною PRD (концепция, требования и поведение) даже на микро-уровнях пет-проектов.
Поскольку я все равно "вскрывал" бинарники картинок и вытаскивал EXIF, то решил заодно вытащить другие популярные (благодаря Photoshop) форматы: IPTC и XMP.
Библиотечные функции анализа файлов сами по себе не интересны и потому к ним нужен интерфейс. Я выбрал все возможные варианты: работа в консоли с аргументами командной строки, работа в консоли в режиме каналов (Piping), работа как web-сервер и работа в привычном оконном графическом интерфейсе.
Я старался максимально опираться на стандартную библиотеку, но там не предусмотрели работу с GUI и пришлось выбирать среди ряда популярных вариантов:
- Wails, что-то типа Electron - нужно описать HTML-интерфейс, который будет работать поверх встроенных WebView2/WebKit;
- Gio, который использует нативные графические элементы из DirectX, Metal и Vulkan/OpenGL, что полнофункционально, но каждая из платформ требует отдельную разработку;
- Fyne, требующий декларативное описание интерфейсов, которые будут выглядеть плюс-минус похожи на всех платформах, но требуют определенный компилятор C для сборки под нужную архитектуру.
Поскольку десктопные вебаппы меня всегда бесили, а с почти нативной разработкой интерфейса связываться не хотелось, то я выбрал последний вариант - Fyne.
Но полностью от веб-интерфейса не отказался. Для демонстрации работы в режиме веб-сервиса добавил демо-страницу, которая демонстрировала работу с API на примере анализа предложенного изображения.
#AI #ИИ #эксперимент #обучение
👍2
За прошедшие два дня я уже достаточно сообщил предысторию проекта и пора заканчивать с интригами 🤓
Результат моего экспериментального обучения языку Go тут:
https://github.com/DementorAK/photometa
Готовые бинарники можно взять из раздела релизов. Но сразу предупреждаю, что это консольная утилита и для запуска GUI варианта все равно нужен запуск из консоли с указанием ключика (в README.md все детально описано).
Если среди моих двух сотен читателей еще кто-то кроме @ellavs знает язык Go, то буду признателен за ваш фидбек.
Но это еще не все. До конца недели будут еще три материала, чтобы подвести черту:
1) впечатления от Go, его идеологии и базовых утилит
2) Google-вабкодинг - что могло пойти не так? проблем хватило
3) неделя попыток задеплоится на Github - взрывы мозга из-за CI
#эксперимент #обучение #Go #AI #ИИ
Результат моего экспериментального обучения языку Go тут:
https://github.com/DementorAK/photometa
Готовые бинарники можно взять из раздела релизов. Но сразу предупреждаю, что это консольная утилита и для запуска GUI варианта все равно нужен запуск из консоли с указанием ключика (в README.md все детально описано).
Если среди моих двух сотен читателей еще кто-то кроме @ellavs знает язык Go, то буду признателен за ваш фидбек.
Но это еще не все. До конца недели будут еще три материала, чтобы подвести черту:
1) впечатления от Go, его идеологии и базовых утилит
2) Google-вабкодинг - что могло пойти не так? проблем хватило
3) неделя попыток задеплоится на Github - взрывы мозга из-за CI
#эксперимент #обучение #Go #AI #ИИ
👍1
Чем интересен язык Go
1. Прост и лаконичен. Он настолько прост, что в языке всего 25 ключевых слова (для сравнения 50 в Java, 90 в C++, а в 1С даже не считая языка запросов и языка СКД - целых 151).
2. Обратно совместим. Уже с самой первой версии языка, разработчики Go пообещали, что любой написанный код будет успешно выполняться на всех последующих версиях языка. Всем знакомы примеры, когда код перестал работать при переходах Python 2 -> Python 3, PHP 3 -> PHP 4 -> PHP 5, 1C 7.7 -> 1C 8.0/8.1 -> 1C 8.3/8.5... А на Go можно найти репозиторий десятилетней давности и он сразу будет работать на текущем компиляторе!
3. Единый стиль. С языком поставляются стандартные проверки оформления и стиля кода - "go fmt" (правильное форматирование), "go vet" (проверка на ошибки и подозрительные места) и "golint" ("дотошник" по стилю, который отругает даже за лишний перенос строк или его отсутствие). Как результат, большинство проектов на Go выглядят очень похоже и для программистов не проблема переключатся между проектами и заняться чем-то новым.
4. Уникальные конструкции. По сути это местный синтаксический сахар и возможно подобное есть в других языках, но я встречаю такое впервые. Ключевое слово Defer описывает команды, которые нужно выполнять при завершении текущей процедуры - т.е. если вы явно открыли файл, то тут же можете оставить завершающую команду по его закрытия, чтобы бы не забыть и далее описывать только логику чтения/записи. Slice как уникальный динамический массив, чтобы явно не выделять память и потом не заниматься явным переносом данных на новое место, когда нужно добавить элемент в уже переполненный массив.
5. Особая обработка ошибок. Большинство функция возвращают два результата - сам результат и ошибку (если ошибки не было, то nil), а разработчик в точке вызова сам думает что с этим дальше делать. Исключений и Try-Catch тут как таковых нет, но можно бросить "панику", которую нужно в текущем потоке (горутине) обработать в блоке defer или вся программа упадет. А еще тут любая ошибка - это по своей сути просто строка без стека вызова.
6. Использование отсутствия переменной - "_" (нижнее подчеркивание). Как я упомянул выше, многие вызовы возвращают сразу два значения - свой результат и ошибку (а при переборе коллекций - индекс элемента коллекции и его значение), но когда они не нужны, то вместо переменной указываем "_" (если создадим переменную, а потом с нею ничего не сделаем, то получим на орехи от линтера)
7. Сильная стандартная библиотека. Из коробки сразу есть работа с файлами, JSON, сетевыми подключениями и так далее.
8. Встроенное тестирование. Можно обойтись без внешних фреймворков тестирования - достаточно "go test", который может и все тесты прогнать, и гонку данных найти, и покрытие кода посчитать. Особенность - тесты не выносятся в отдельные директории и лежат прямо рядом с тестируемым кодом внутри своих пакетов (а потому имеют доступ к не-экспортируемым свойствам и методам) и их файлы имеют предопределенный суффикс в названии "*_test.go". А так же есть поддержка "примеров использования" - это подвид тестов, где имя функции начинается на префикса "Example*", и где показан пример вызова с некими значениями и описан ожидаемый результат (с ним идет сравнение при тестировании).
9. Встроенная документация. Код и тесты с примерами формируют автодокументацию, которую можно просматривать стандартными утилитами: "go doc" для консоли и "godoc" или pkgsite для веб-версии.
===
Понимаю, что весьма поверхностные впечатления. Если бы я поработал несколько месяцев, то очевидно уже делал бы акцент на взаимодействии параллельных потоков, на особенностях сборщика мусора, на утечке памяти при использовании слайсов и прочих важных технических вещах.
Вероятно нужно сделать что-то более серьёзное, чтобы прочувствовать всю силу гоферной философии и поймать хотя бы половину популярных шишек на граблях. Но пока в новом языке все выглядит очень просто и радужно. Особенно на фоне опыта с 1С🥸
#обучение #Go
1. Прост и лаконичен. Он настолько прост, что в языке всего 25 ключевых слова (для сравнения 50 в Java, 90 в C++, а в 1С даже не считая языка запросов и языка СКД - целых 151).
2. Обратно совместим. Уже с самой первой версии языка, разработчики Go пообещали, что любой написанный код будет успешно выполняться на всех последующих версиях языка. Всем знакомы примеры, когда код перестал работать при переходах Python 2 -> Python 3, PHP 3 -> PHP 4 -> PHP 5, 1C 7.7 -> 1C 8.0/8.1 -> 1C 8.3/8.5... А на Go можно найти репозиторий десятилетней давности и он сразу будет работать на текущем компиляторе!
3. Единый стиль. С языком поставляются стандартные проверки оформления и стиля кода - "go fmt" (правильное форматирование), "go vet" (проверка на ошибки и подозрительные места) и "golint" ("дотошник" по стилю, который отругает даже за лишний перенос строк или его отсутствие). Как результат, большинство проектов на Go выглядят очень похоже и для программистов не проблема переключатся между проектами и заняться чем-то новым.
4. Уникальные конструкции. По сути это местный синтаксический сахар и возможно подобное есть в других языках, но я встречаю такое впервые. Ключевое слово Defer описывает команды, которые нужно выполнять при завершении текущей процедуры - т.е. если вы явно открыли файл, то тут же можете оставить завершающую команду по его закрытия, чтобы бы не забыть и далее описывать только логику чтения/записи. Slice как уникальный динамический массив, чтобы явно не выделять память и потом не заниматься явным переносом данных на новое место, когда нужно добавить элемент в уже переполненный массив.
5. Особая обработка ошибок. Большинство функция возвращают два результата - сам результат и ошибку (если ошибки не было, то nil), а разработчик в точке вызова сам думает что с этим дальше делать. Исключений и Try-Catch тут как таковых нет, но можно бросить "панику", которую нужно в текущем потоке (горутине) обработать в блоке defer или вся программа упадет. А еще тут любая ошибка - это по своей сути просто строка без стека вызова.
6. Использование отсутствия переменной - "_" (нижнее подчеркивание). Как я упомянул выше, многие вызовы возвращают сразу два значения - свой результат и ошибку (а при переборе коллекций - индекс элемента коллекции и его значение), но когда они не нужны, то вместо переменной указываем "_" (если создадим переменную, а потом с нею ничего не сделаем, то получим на орехи от линтера)
7. Сильная стандартная библиотека. Из коробки сразу есть работа с файлами, JSON, сетевыми подключениями и так далее.
8. Встроенное тестирование. Можно обойтись без внешних фреймворков тестирования - достаточно "go test", который может и все тесты прогнать, и гонку данных найти, и покрытие кода посчитать. Особенность - тесты не выносятся в отдельные директории и лежат прямо рядом с тестируемым кодом внутри своих пакетов (а потому имеют доступ к не-экспортируемым свойствам и методам) и их файлы имеют предопределенный суффикс в названии "*_test.go". А так же есть поддержка "примеров использования" - это подвид тестов, где имя функции начинается на префикса "Example*", и где показан пример вызова с некими значениями и описан ожидаемый результат (с ним идет сравнение при тестировании).
9. Встроенная документация. Код и тесты с примерами формируют автодокументацию, которую можно просматривать стандартными утилитами: "go doc" для консоли и "godoc" или pkgsite для веб-версии.
===
Понимаю, что весьма поверхностные впечатления. Если бы я поработал несколько месяцев, то очевидно уже делал бы акцент на взаимодействии параллельных потоков, на особенностях сборщика мусора, на утечке памяти при использовании слайсов и прочих важных технических вещах.
Вероятно нужно сделать что-то более серьёзное, чтобы прочувствовать всю силу гоферной философии и поймать хотя бы половину популярных шишек на граблях. Но пока в новом языке все выглядит очень просто и радужно. Особенно на фоне опыта с 1С
#обучение #Go
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍1
Я попробовал вайбкодить (точнее писать код выше уровня учебного пет-проекта на языке, который практически не знаю) в среде Google Antigravity. В целом все получилось, но были нюансы.
Сразу о плюсах:
0) Antigravity - это VS Code, а следовательно крутые общие плагины, из которых я сразу установил: работу с Go, GitHub, Markdown, Mermaid (диаграммы Markdown) и специфический Antigravity Cockpit для анализа использования токенов.
1) чат агента поддерживает простую смену LLM - если закончились токены на Claude Opus, то работу можно заканчивать с GPT или моделями Gemini.
2) можно вести несколько чатов и переключаться между ними из истории (например, для параллельных взаимозависимых робот, когда не хочешь перегружать контекст конкретного агента суммарным описанием задач)
3) агенты мультимодальны, а не чистый текст - я не доверял голосовому управлению, но очень часто отправлял скриншоты проблемных ситуаций и модели их отлично понимали.
4) даже при завершении лимитов всех моделей, умное редактирование кода продолжает работать (автодополнение имен переменных, автозавершение типовых блоков кода, перемещение по умному Tab и так далее)
5) когда программа падает с ошибкой или выводит в консоль отладочную информацию, то содержимое консоли можно выделить и тут же задать агенту вопрос по проблеме или даже просто потребовать исправить.
6) когда синтаксический контроль подсвечивает ошибку в коде, то при наведении мышкой можно не только прочитать описание ошибки, но прямо тут нажать кнопку исправления и тем самым запустим агент на исправление проблемного места.
Но были и минусы:
1) Режими работы иногда не работали - если Claude Opus/Sonnet в режиме Плана еще как-то придерживались правил и сперва предлагали на утверждение свои работы, то родные для системы Gemini (и PRO, и Flash) очень часто плевать хотели на условности и сразу начинали что-то менять в коде, не спросив разрешения и не показав план.
2) В какой-то момент сломалась история чатов и я мог перейти только в некоторые из старых, а все новые перестали фиксироваться - т.е. начав новый чат, можно прощаться с контекстом предыдущего.
3) Очень часто обрывались соединения, а кнопка "продолжить" повторно снимала токены у текущей модели. Обычно модели Claude мне хватало на одну-две фичи, но из-за сбоев мог потратить весь недельный лимит на одну задачу и не получить ответ - приходилось переключатся на другую модель, чтобы результат работы не пропал.
4) Пару раз ловил модели на удалении тестов - один раз я попросил добавить тест для новой функции из пакета и агент это сделал, удалив ранее существующие; а второй раз агент не мог разобраться с ошибкой и решил креативно решить проблему удалением "проблемных" проверок.
5) Некоторые задачи не могла сделать вообще никакая из доступных моделей. Так в Fyne я хотел вывести дерево файлов и их свойств, но это упорно не получалось и на форме было пустое поле - Claude Opus и прочие пробовали заставлять меня по кругу делать рефакторинг и какие-то нелогичные настройки, которые даже теоретически не могли помочь. Мне пришлось самостоятельно читать документацию по деревьям в Fyne и найти причину проблемы - обязательное указание нулевого корневого узла (он не видим, но нужен для рендеринга).
===
Если в начале моего #AI #ИИ #эксперимент #обучение я был полон энтузиазма и даже собирался покупать подписку Google, то ближе к финалу охладел к затее. Пожалуй, продолжу быть их "бесплатником" 🤓
Сразу о плюсах:
0) Antigravity - это VS Code, а следовательно крутые общие плагины, из которых я сразу установил: работу с Go, GitHub, Markdown, Mermaid (диаграммы Markdown) и специфический Antigravity Cockpit для анализа использования токенов.
1) чат агента поддерживает простую смену LLM - если закончились токены на Claude Opus, то работу можно заканчивать с GPT или моделями Gemini.
2) можно вести несколько чатов и переключаться между ними из истории (например, для параллельных взаимозависимых робот, когда не хочешь перегружать контекст конкретного агента суммарным описанием задач)
3) агенты мультимодальны, а не чистый текст - я не доверял голосовому управлению, но очень часто отправлял скриншоты проблемных ситуаций и модели их отлично понимали.
4) даже при завершении лимитов всех моделей, умное редактирование кода продолжает работать (автодополнение имен переменных, автозавершение типовых блоков кода, перемещение по умному Tab и так далее)
5) когда программа падает с ошибкой или выводит в консоль отладочную информацию, то содержимое консоли можно выделить и тут же задать агенту вопрос по проблеме или даже просто потребовать исправить.
6) когда синтаксический контроль подсвечивает ошибку в коде, то при наведении мышкой можно не только прочитать описание ошибки, но прямо тут нажать кнопку исправления и тем самым запустим агент на исправление проблемного места.
Но были и минусы:
1) Режими работы иногда не работали - если Claude Opus/Sonnet в режиме Плана еще как-то придерживались правил и сперва предлагали на утверждение свои работы, то родные для системы Gemini (и PRO, и Flash) очень часто плевать хотели на условности и сразу начинали что-то менять в коде, не спросив разрешения и не показав план.
2) В какой-то момент сломалась история чатов и я мог перейти только в некоторые из старых, а все новые перестали фиксироваться - т.е. начав новый чат, можно прощаться с контекстом предыдущего.
3) Очень часто обрывались соединения, а кнопка "продолжить" повторно снимала токены у текущей модели. Обычно модели Claude мне хватало на одну-две фичи, но из-за сбоев мог потратить весь недельный лимит на одну задачу и не получить ответ - приходилось переключатся на другую модель, чтобы результат работы не пропал.
4) Пару раз ловил модели на удалении тестов - один раз я попросил добавить тест для новой функции из пакета и агент это сделал, удалив ранее существующие; а второй раз агент не мог разобраться с ошибкой и решил креативно решить проблему удалением "проблемных" проверок.
5) Некоторые задачи не могла сделать вообще никакая из доступных моделей. Так в Fyne я хотел вывести дерево файлов и их свойств, но это упорно не получалось и на форме было пустое поле - Claude Opus и прочие пробовали заставлять меня по кругу делать рефакторинг и какие-то нелогичные настройки, которые даже теоретически не могли помочь. Мне пришлось самостоятельно читать документацию по деревьям в Fyne и найти причину проблемы - обязательное указание нулевого корневого узла (он не видим, но нужен для рендеринга).
===
Если в начале моего #AI #ИИ #эксперимент #обучение я был полон энтузиазма и даже собирался покупать подписку Google, то ближе к финалу охладел к затее. Пожалуй, продолжу быть их "бесплатником" 🤓
🔥3
А вы знали, что если перехватывать в расширении процедуры из привилегированного модуля, то они выполняются в режиме без привилегий?
Дело в том, что в общих модулях в расширениях не предусмотрели свойство "Привилегированный" (Privileged), а потому механизм расширений выполняет код как обычный.
Если чесно, то выглядит как глюк, а не как взвешенное архитектурное решение.
Если у вас далее по коду есть проверка привилегий и вы не хотите получить ошибку, то вам придется явно повысить привилегии:
#Insert
SetPrivilegedMode(True);
#EndInsert
Please open Telegram to view this post
VIEW IN TELEGRAM
😱5👍1
Увидел интервью с Джорджем Мартином, автором "Игры Престолов". Любопытно, что уже успел забыть про него и про то, что в книжной истории должно быть еще два тома - ведь автор 14 лет никак не закончит "Ветра Зимы" (предпоследний согласно плану).
Мартин говорит, что написал для этого тома уже много. Так много, что сам запутался в собственном материале:
Еще он жалуется на давление от сериала, который экранизировал его книгу. С одной стороны у него есть реакция читателей на некоторые сюжетные ходы, с другой стороны он сам пересмотрел отношение к некоторым персонажам под влиянием харизмы актеров:
Автор рассказал, что во время ковида уехал в лесную хижину с желанием закончить книгу, но почувствовал, что изоляция отдалила его от жены и он решил отложить книгу и вернуть семью на первое место.
Еще автор жаловался на неблагодарных фанатов, которые ставят ему в упрек, что он безответственный и скорее умрет от старости, чем закончит книгу. Это его очень разозлило, так как многие его друзья уже умерли, включая Роберта Редфорда, который тоже его пинал на счет завершения книги.
=====
Можно было бы пожалеть Мартина, от которого на старости лет требуют слишком многого, но только если забыть, что он паралельно рубит бабло на других книгах, сценариях к сериалам и творческом контроле над "Домом дракона" и "Рыцарем Семи Королевств" (сериалы-приквелы к "Игре престолов"). Если закрыть глаза на факты и только читать интервью, то да - он старый, нет сил на творчество...
Мартин говорит, что написал для этого тома уже много. Так много, что сам запутался в собственном материале:
Я написал главу о Тирионе, которая мне очень понравилась, но потом понял, что она изменит всю книгу. Я готов был превратить ее в серию снов, но это бы тоже не сработало
Еще он жалуется на давление от сериала, который экранизировал его книгу. С одной стороны у него есть реакция читателей на некоторые сюжетные ходы, с другой стороны он сам пересмотрел отношение к некоторым персонажам под влиянием харизмы актеров:
Я собирался убить больше людей и не тех, кого убили в сериале. Я не вижу счастливого конца для Тириона. Вся его история с самого начала была трагичной. Я собирался убить и Сансу, но она была такой привлекательной в сериале, что, может быть, оставлю ее в живых
Автор рассказал, что во время ковида уехал в лесную хижину с желанием закончить книгу, но почувствовал, что изоляция отдалила его от жены и он решил отложить книгу и вернуть семью на первое место.
Еще автор жаловался на неблагодарных фанатов, которые ставят ему в упрек, что он безответственный и скорее умрет от старости, чем закончит книгу. Это его очень разозлило, так как многие его друзья уже умерли, включая Роберта Редфорда, который тоже его пинал на счет завершения книги.
=====
Можно было бы пожалеть Мартина, от которого на старости лет требуют слишком многого, но только если забыть, что он паралельно рубит бабло на других книгах, сценариях к сериалам и творческом контроле над "Домом дракона" и "Рыцарем Семи Королевств" (сериалы-приквелы к "Игре престолов"). Если закрыть глаза на факты и только читать интервью, то да - он старый, нет сил на творчество...
👍2
Я сейчас в кафе библиотеке моей родной больницы.
Раньше тут была полноценная библиотека с библиотекарями. В прошлом году угол взяли в аренду для кофе-точки, но библиотекари по прежнему сидели. Сегодня не нашел ни старых книжных шкафов, ни библиотекарей - полноценное кафе с багатым ассортиментом, столиками, пуфиками, диванчиками и телевизором.
Книги остались, но немного как антураж. Интересные наименования: этикет для детей, энциклопедия, история ковров, темная башня Кинга, затмение Мейерс, книги по финансовому учёту и менеджменту от Приватбанка... На любой вкус 🤓
Раньше тут была полноценная библиотека с библиотекарями. В прошлом году угол взяли в аренду для кофе-точки, но библиотекари по прежнему сидели. Сегодня не нашел ни старых книжных шкафов, ни библиотекарей - полноценное кафе с багатым ассортиментом, столиками, пуфиками, диванчиками и телевизором.
Книги остались, но немного как антураж. Интересные наименования: этикет для детей, энциклопедия, история ковров, темная башня Кинга, затмение Мейерс, книги по финансовому учёту и менеджменту от Приватбанка... На любой вкус 🤓
❤3
🛠 АНАЛИЗ СИГНАЛА: Извлечена информация о действиях Магоса Павла Дурова, надзирателя над когитаторной сетью Телеграмм.
🛠 СУТЬ ПРОТОКОЛА: Вышеупомянутая единица оповестила ноосферу о внедрении новых алгоритмов Истинного Механикума. Данные скрипты позволяют трансформировать текстовые пакеты и общественные манускрипты, придавая им различные лингвистические паттерны.
🛠 ЛОГИЧЕСКАЯ ОЦЕНКА:
⚙️ РАСХОД РЕСУРСОВ: Зафиксировано нецелевое и расточительное распределение вычислительных мощностей священных машин. Дух Машины принуждается к совершению тривиальных и развлекательных циклов.
⚙️ ДЕГРАДАЦИЯ СМЫСЛА: Бинарный анализ указывает на критическую угрозу. Стилизованные инфо-сообщения утратят свою изначальную чистоту и полноту данных. Оригинальные замыслы создателей подвергнутся энтропии и искажению, что эквивалентно ереси неточности.
01101100 01101111 01100111 01101001 01100011
🛠 ЗАКЛЮЧЕНИЕ: Изменение формы в ущерб содержанию есть пренебрежение священным знанием. Плоть слаба и ищет забав, в то время как сталь требует четких команд.
Да пребудет с нами чистота протокола. Омниссия ведает истинный путь.
🛠 СУТЬ ПРОТОКОЛА: Вышеупомянутая единица оповестила ноосферу о внедрении новых алгоритмов Истинного Механикума. Данные скрипты позволяют трансформировать текстовые пакеты и общественные манускрипты, придавая им различные лингвистические паттерны.
🛠 ЛОГИЧЕСКАЯ ОЦЕНКА:
⚙️ РАСХОД РЕСУРСОВ: Зафиксировано нецелевое и расточительное распределение вычислительных мощностей священных машин. Дух Машины принуждается к совершению тривиальных и развлекательных циклов.
⚙️ ДЕГРАДАЦИЯ СМЫСЛА: Бинарный анализ указывает на критическую угрозу. Стилизованные инфо-сообщения утратят свою изначальную чистоту и полноту данных. Оригинальные замыслы создателей подвергнутся энтропии и искажению, что эквивалентно ереси неточности.
01101100 01101111 01100111 01101001 01100011
🛠 ЗАКЛЮЧЕНИЕ: Изменение формы в ущерб содержанию есть пренебрежение священным знанием. Плоть слаба и ищет забав, в то время как сталь требует четких команд.
Да пребудет с нами чистота протокола. Омниссия ведает истинный путь.
❤2😱2 2🗿1
У нас в больнице электронный документооборот с особым вайбом 🤪
Документы изначально создаются в электронной системе. Потом печатаются на принтере, чтобы быть подписанными от руки врачами. Потом в специально выделенном кабинете сектора ЭДО специально выделенный специалист ставит мокрые печати. Далее эти документы нужно отсканировать и вложить назад в электронную систему.
Хештег - Будущее уже здесь! 🤓
Документы изначально создаются в электронной системе. Потом печатаются на принтере, чтобы быть подписанными от руки врачами. Потом в специально выделенном кабинете сектора ЭДО специально выделенный специалист ставит мокрые печати. Далее эти документы нужно отсканировать и вложить назад в электронную систему.
Хештег - Будущее уже здесь! 🤓
😁5🔥2⚡1💅1
💊 Хочу добавить еще пару слов про современные технологии в украинском медтехе
Я думал, что на прошлой неделе уже закрыл свои хождения по врачам. Собрал все бумаги, подписи и печати, потом все отсканировал в PNG и отдал своему семейному врачу, чтобы она сформировала итоговый PDF для медицинской комиссии.
Но мой пакет документов завернули по причине - на одном из заключений специалистов не была указана дата посещения и теперь нужно повторно сходить в больницу. Плюс захотели от меня прохождения еще одного исследования. Но хоть со своей семейной договорился - по готовности скину сканы документов ей в личный вайбер и не нужно будет хотя бы в ее клинику повторно записываться.
===
Моя семейная оформила направление на недостающее исследование и его код мне пришел по СМС, но как оказалось пройти его бесплатно я могу только в мае, а мне нужно сейчас. Хочу проверить цены в коммерческих клиниках, но для этого мне нужно знать не код, а точный состав исследования.
В Украине есть глобальная информационная система, которая объединяет всех врачей и пациентов, содержит все декларации, медицинские карты, направления на обследования и результаты этих обследований - esoz.gov.ua Раньше в эту систему доступ был лишь у врачей и клиник, но с недавнего времени и пациенты могут зайти по личному ЕЦП (можно Дия.Подпись). Только на этом портале есть исключительно информация по действующей Декларации и моя контактная информация.
Еще есть очень популярная медицинская система - Helsi. Только в этой системе никогда не было никаких данных про меня, хотя мне периодически приходили из нее информационные СМС про обновления в Карточке Пациента. Я несколько общался с их службой поддержки и оказалось, что у них есть технические ограничения, по которым они могут показывать информацию только пациентам, которых зарегистрировали доктора, которые заключили договоры на обслуживание в Helsi, а всех остальных в ЕСОЗ система не видит. Если я хочу получить доступ к своим данным, то мне нужно разорвать Декларацию со своим текущим врачом и заключить с одним из ихних, а так же платить абонплату за обслуживание - лишь так я увижу свою Карточку Пациента.
С недавних пор киевские поликлиники вместо Helsi стали работать с Health24. Это как глоток свежего воздуха - я тут сразу вижу посещения врачей последнего года, направления на обследования и даже умудрился записаться день-в-день на бесплатный прием по направлению к врачу, к которому окно для "бесплатников" по словам регистратуры поликлиники должно было появится в следующем месяце. Но тут почему-то не было свежих направлений (только старые и факты посещения по ним врачей) и еще не было данных по моему семейному врачу - т.е. интеграция с ЕСОЗ тоже не идеальна.
===
В конце-концов просто позвонил в регистратуру своей клиники, продиктовал код, подождал пока его введут в кампутер и лишь так узнал, что же именно мне было нужно и далее в гугле нашел недорогой вариант завтра рядом с домом.
Хештег - Будущее уже здесь! 🤓
Я думал, что на прошлой неделе уже закрыл свои хождения по врачам. Собрал все бумаги, подписи и печати, потом все отсканировал в PNG и отдал своему семейному врачу, чтобы она сформировала итоговый PDF для медицинской комиссии.
Но мой пакет документов завернули по причине - на одном из заключений специалистов не была указана дата посещения и теперь нужно повторно сходить в больницу. Плюс захотели от меня прохождения еще одного исследования. Но хоть со своей семейной договорился - по готовности скину сканы документов ей в личный вайбер и не нужно будет хотя бы в ее клинику повторно записываться.
===
Моя семейная оформила направление на недостающее исследование и его код мне пришел по СМС, но как оказалось пройти его бесплатно я могу только в мае, а мне нужно сейчас. Хочу проверить цены в коммерческих клиниках, но для этого мне нужно знать не код, а точный состав исследования.
В Украине есть глобальная информационная система, которая объединяет всех врачей и пациентов, содержит все декларации, медицинские карты, направления на обследования и результаты этих обследований - esoz.gov.ua Раньше в эту систему доступ был лишь у врачей и клиник, но с недавнего времени и пациенты могут зайти по личному ЕЦП (можно Дия.Подпись). Только на этом портале есть исключительно информация по действующей Декларации и моя контактная информация.
Еще есть очень популярная медицинская система - Helsi. Только в этой системе никогда не было никаких данных про меня, хотя мне периодически приходили из нее информационные СМС про обновления в Карточке Пациента. Я несколько общался с их службой поддержки и оказалось, что у них есть технические ограничения, по которым они могут показывать информацию только пациентам, которых зарегистрировали доктора, которые заключили договоры на обслуживание в Helsi, а всех остальных в ЕСОЗ система не видит. Если я хочу получить доступ к своим данным, то мне нужно разорвать Декларацию со своим текущим врачом и заключить с одним из ихних, а так же платить абонплату за обслуживание - лишь так я увижу свою Карточку Пациента.
С недавних пор киевские поликлиники вместо Helsi стали работать с Health24. Это как глоток свежего воздуха - я тут сразу вижу посещения врачей последнего года, направления на обследования и даже умудрился записаться день-в-день на бесплатный прием по направлению к врачу, к которому окно для "бесплатников" по словам регистратуры поликлиники должно было появится в следующем месяце. Но тут почему-то не было свежих направлений (только старые и факты посещения по ним врачей) и еще не было данных по моему семейному врачу - т.е. интеграция с ЕСОЗ тоже не идеальна.
===
В конце-концов просто позвонил в регистратуру своей клиники, продиктовал код, подождал пока его введут в кампутер и лишь так узнал, что же именно мне было нужно и далее в гугле нашел недорогой вариант завтра рядом с домом.
Хештег - Будущее уже здесь! 🤓
Особистий кабінет пацієнта
Особистий кабінет пацієнта Цифрові можливості у сфері здоровʼя – ще доступніше! Що таке особистий кабінет пацієнта? Це цифрова платформа, завдяки якій пацієнти зможуть використовувати цифрові можливості ЕСОЗ ще доступніше! Дізнатись…
🔥3
В комментариях к предыдущему посту @sagittarius_s задал интересный вопрос про семейных врачей:
В Украине статья 49 Конституции по прежнему гарантирует бесплатную медицину, но форма ее предоставления уже не та, что была во времена УССР и первые десятилетия независимости. Последняя медицинская реформа закрепила следующую схему медобслуживания:
1) Ты должен заключить договор под названием "декларацию семейного врача" с терапевтом на свой выбор - это ключ к дальнейшему обслуживанию.
2) Можно не заключать договор, но тогда спектр "бесплатного" обслуживания ограничится только вызовом скорой помощи и попытками спасти жизнь в экстренных случаях.
3) Без "декларации" при наличии денег будет доступен полный спектр качественных услуг в коммерческих клиниках, но есть нюанс - выписки из коммерческих клиник не принимаются ко вниманию медицинских комиссиях. Т.е. даже без наличия у тебя желания ввязываться в "бесплатную медицину", государство все равно принудят это сделать и от ожиданий в очередях с бабульками не уйти - Мактуб!
4) За каждого "декларанта" терапевт получает доплату к зарплате - это стимул оказывать услуги на минимальном уровне, чтобы пациенты не убегали и не искали более квалифицированного специалиста, но количество разрешенных "декларантов" ограничено, чтобы терапевты из поликлиник не жирели и оставляли "доход" для других желающих терапевтов (в том числе из коммерческих клиник).
5) Посещения терапевтов по декларации - всегда бесплатное, даже если они работают в коммерческой клинике. Но только терапевтов!
6) Терапевт может послушать жалобы, померять пульс и давление, и при подозрении на какую-то болезнь выписать направление на клиническое обследование и/или консультацию узкого специалиста и/или на госпитализацию. Госпитализация в больницах без направления "семейного врача" в Украине запрещена!
7) При наличии "направления от семейного врача" можно сдать анализы и пройти нужного врача бесплатно, но в порядке очереди "декларантов", которая растягивается на 1-2 или более месяцев. За каждый прием или анализы по направлению в рамках декларации больницы потом (через месяц, через квартал, как получится) получают из бюджета компенсацию, а поскольку им нужны живые деньги, то количество "бесплатных" мест строго ограничено даже в "бесплатных" поликлиниках - врачи отпускают 1-2 по декларации и далее сидят в пустых кабинетах в ожидании "платников" (если мне не получалось попасть по направлению в течении недели, то я платил в кассу и за день-два все проходил.
Итого ответ на вопрос: "нет".
Вся семья у врача не обслуживается и, не смотря на громкое название, "семейному врачу" абсолютно фиолетово наличие у тебя семьи и чем они там болеют.
Так же семейный врач не дает своих личных контактов; консультации оказывает исключительно на своем рабочем месте и исключительно в свои рабочие часы; на время своего отпуска "семейный врач" приемы прекращает и если кому-то что-то срочное, то он может перезаключить декларацию с другим терапевтом; а все записи на прием нужно делать через регистратуру больницы/поликлиники, где работает терапевт.
А это как? Просто врач к которому обращается по любым вопросам все домашние или же он на постоянной оплате и всегда на связи?
В Украине статья 49 Конституции по прежнему гарантирует бесплатную медицину, но форма ее предоставления уже не та, что была во времена УССР и первые десятилетия независимости. Последняя медицинская реформа закрепила следующую схему медобслуживания:
1) Ты должен заключить договор под названием "декларацию семейного врача" с терапевтом на свой выбор - это ключ к дальнейшему обслуживанию.
2) Можно не заключать договор, но тогда спектр "бесплатного" обслуживания ограничится только вызовом скорой помощи и попытками спасти жизнь в экстренных случаях.
3) Без "декларации" при наличии денег будет доступен полный спектр качественных услуг в коммерческих клиниках, но есть нюанс - выписки из коммерческих клиник не принимаются ко вниманию медицинских комиссиях. Т.е. даже без наличия у тебя желания ввязываться в "бесплатную медицину", государство все равно принудят это сделать и от ожиданий в очередях с бабульками не уйти - Мактуб!
4) За каждого "декларанта" терапевт получает доплату к зарплате - это стимул оказывать услуги на минимальном уровне, чтобы пациенты не убегали и не искали более квалифицированного специалиста, но количество разрешенных "декларантов" ограничено, чтобы терапевты из поликлиник не жирели и оставляли "доход" для других желающих терапевтов (в том числе из коммерческих клиник).
5) Посещения терапевтов по декларации - всегда бесплатное, даже если они работают в коммерческой клинике. Но только терапевтов!
6) Терапевт может послушать жалобы, померять пульс и давление, и при подозрении на какую-то болезнь выписать направление на клиническое обследование и/или консультацию узкого специалиста и/или на госпитализацию. Госпитализация в больницах без направления "семейного врача" в Украине запрещена!
7) При наличии "направления от семейного врача" можно сдать анализы и пройти нужного врача бесплатно, но в порядке очереди "декларантов", которая растягивается на 1-2 или более месяцев. За каждый прием или анализы по направлению в рамках декларации больницы потом (через месяц, через квартал, как получится) получают из бюджета компенсацию, а поскольку им нужны живые деньги, то количество "бесплатных" мест строго ограничено даже в "бесплатных" поликлиниках - врачи отпускают 1-2 по декларации и далее сидят в пустых кабинетах в ожидании "платников" (если мне не получалось попасть по направлению в течении недели, то я платил в кассу и за день-два все проходил.
Итого ответ на вопрос: "нет".
Вся семья у врача не обслуживается и, не смотря на громкое название, "семейному врачу" абсолютно фиолетово наличие у тебя семьи и чем они там болеют.
Так же семейный врач не дает своих личных контактов; консультации оказывает исключительно на своем рабочем месте и исключительно в свои рабочие часы; на время своего отпуска "семейный врач" приемы прекращает и если кому-то что-то срочное, то он может перезаключить декларацию с другим терапевтом; а все записи на прием нужно делать через регистратуру больницы/поликлиники, где работает терапевт.
Telegram
Алексей in Инженерная болталка ⚙
А это как? Просто врач к которому обращается по любым вопросам все домашние или же он на постоянной оплате и всегда на связи?
👍1😱1👌1
Когда люди узнают, что я "айтишник" и "тыжпрограмист", то им сложно сдержаться, чтобы не попросить помощи со своей техникой. За последний месяц было четыре таких случая - два в больнице и два в моем доме 🫣
1) Дежурная медсестра Вика. Ей достался "в наследство" от старшей сестры ноутбук Acer. В целом работал, но сильно тормозил, а ей нужно было проходить некие курсы повышения квалификации через интернет. Сначала она попросила помощь у больничного сисадмина, но тот ответил, что проблема в диске и нужно покупать новый. На покупку нового диска у медсестры денег не было и она попросила меня посмотреть. Я засел у них в сестринской и хорошенько вычистил весь хлам, который на ноуте накапливался более десятилетия. Отдельно нужно было почистить от плагинов Google Chrome, где были тормозные "подарки" от Яндекса и МэйлРу. В результате получили систему, которая летает. С учетом количества капельниц, которые Вика мне поставила, от дополнительных благодарностей я отказался.
2) Мой лечащий врач Юрий. У него был Google Drive на рабочем компе в ординаторской и он хотел его же подключить на своем Macbook. Сначала мне задачка показалась простенькой и я быстро все настроил, но врача удивило, что он не увидел на ноутбуке своих документов с компа. Начал проверять и... - это оказались разные Google-аккаунты: на ноутбуке был его личный, а на компе аккаунт который ему создал больничный сисадмин. В общем добавил второй аккаунт на компьютер и перегнал файлы с одного аккаунта на второй. В результате на ноуте появились все нужные документы. О дополнительных благодарностях речи не было, так как врач и так про меня помнит и когда появляются мои лекарства, то сигналит в телегу, чтобы подъезжал и забирал.
3) Соседка Елена. Мы всегда здоровались с моей соседкой, которая на инвалидном кресле катает свою дочку с ДЦП. На прошлой неделе она внезапно меня позвала: "Димочка! А ты же хорошо с компьютерами ладишь?". Оказалось, что на планшете ее дочери (она не может ни двигаться, ни говорить, но все отлично понимает и пользуется планшетом) заканчивается место и она не хочет потерять все фотографии - попросила перекинуть на флешку. В процессе оказалось, что у них дома есть ноутбук, на котором она планировала с флешки смотреть фотографии. Я просто зашарил на ноуте папочку по сети и поставил на планшете CX Проводник, чтобы скопировать все фотки. Этого им оказалось достаточно и флешка не понадобилась. В благодарность мне надавали часть запасов, которые им приносят в виде помощи: несколько пакетов с крупами, бутылку подсолнечного масла и шоколадку (это уже просто от них) - все это с аргументацией, что им дают много и они все не съедают. Я не остался в долгу и занес им в ответ парочку наших закаток - варенье с абрикосов и со слив, которые у нас уже второй год стояли, и которые мы тоже не успеваем съедать 😂
4) Сосед Николай. Николай - это муж Елены, отец ее дочери и они живут в одной квартире, но их отношения настолько специфические, что я его вынес в отдельный случай. Когда я был у них в первый раз, то он все время пытался что-то мне сказать, но его останавливала жена, потому-что это она меня позвала и я решал ее вопрос. Поэтому мы договорились на отдельный день и я вчера поработал только с ним. Его ноутбук (тот самый куда я ранее перекинул фото) сильно тормозил - при открытии все 4 Гб ОЗУ были забиты и сильно свопило. Для понимания проблемы - там было 3 антивируса и 2 ВПН. На чистку в условия постоянного свопа ушло два часа, но в результате после перезагрузки и при включенном Mozilla Firefox с открытым Youtube еще почти полтора Гб ОЗУ оставались пустыми и никакого свопа. Еще посмотрел его телефон, но там уже быстро - просто базовые проверки. В этот раз меня домой отправили (не имеешь права отказываться, а нам все равно столько не нужно) с двумя бутылками подсолнечного масла и килограммом меленого кофе.
Все четыре случая дело было не в полной тишине, а с фоновыми беседами - они все паралельно рассказывали различные интересные истории из своих жизней. За время войны и годы работы на удаленке я уже соскучился по подобным разговорам.
1) Дежурная медсестра Вика. Ей достался "в наследство" от старшей сестры ноутбук Acer. В целом работал, но сильно тормозил, а ей нужно было проходить некие курсы повышения квалификации через интернет. Сначала она попросила помощь у больничного сисадмина, но тот ответил, что проблема в диске и нужно покупать новый. На покупку нового диска у медсестры денег не было и она попросила меня посмотреть. Я засел у них в сестринской и хорошенько вычистил весь хлам, который на ноуте накапливался более десятилетия. Отдельно нужно было почистить от плагинов Google Chrome, где были тормозные "подарки" от Яндекса и МэйлРу. В результате получили систему, которая летает. С учетом количества капельниц, которые Вика мне поставила, от дополнительных благодарностей я отказался.
2) Мой лечащий врач Юрий. У него был Google Drive на рабочем компе в ординаторской и он хотел его же подключить на своем Macbook. Сначала мне задачка показалась простенькой и я быстро все настроил, но врача удивило, что он не увидел на ноутбуке своих документов с компа. Начал проверять и... - это оказались разные Google-аккаунты: на ноутбуке был его личный, а на компе аккаунт который ему создал больничный сисадмин. В общем добавил второй аккаунт на компьютер и перегнал файлы с одного аккаунта на второй. В результате на ноуте появились все нужные документы. О дополнительных благодарностях речи не было, так как врач и так про меня помнит и когда появляются мои лекарства, то сигналит в телегу, чтобы подъезжал и забирал.
3) Соседка Елена. Мы всегда здоровались с моей соседкой, которая на инвалидном кресле катает свою дочку с ДЦП. На прошлой неделе она внезапно меня позвала: "Димочка! А ты же хорошо с компьютерами ладишь?". Оказалось, что на планшете ее дочери (она не может ни двигаться, ни говорить, но все отлично понимает и пользуется планшетом) заканчивается место и она не хочет потерять все фотографии - попросила перекинуть на флешку. В процессе оказалось, что у них дома есть ноутбук, на котором она планировала с флешки смотреть фотографии. Я просто зашарил на ноуте папочку по сети и поставил на планшете CX Проводник, чтобы скопировать все фотки. Этого им оказалось достаточно и флешка не понадобилась. В благодарность мне надавали часть запасов, которые им приносят в виде помощи: несколько пакетов с крупами, бутылку подсолнечного масла и шоколадку (это уже просто от них) - все это с аргументацией, что им дают много и они все не съедают. Я не остался в долгу и занес им в ответ парочку наших закаток - варенье с абрикосов и со слив, которые у нас уже второй год стояли, и которые мы тоже не успеваем съедать 😂
4) Сосед Николай. Николай - это муж Елены, отец ее дочери и они живут в одной квартире, но их отношения настолько специфические, что я его вынес в отдельный случай. Когда я был у них в первый раз, то он все время пытался что-то мне сказать, но его останавливала жена, потому-что это она меня позвала и я решал ее вопрос. Поэтому мы договорились на отдельный день и я вчера поработал только с ним. Его ноутбук (тот самый куда я ранее перекинул фото) сильно тормозил - при открытии все 4 Гб ОЗУ были забиты и сильно свопило. Для понимания проблемы - там было 3 антивируса и 2 ВПН. На чистку в условия постоянного свопа ушло два часа, но в результате после перезагрузки и при включенном Mozilla Firefox с открытым Youtube еще почти полтора Гб ОЗУ оставались пустыми и никакого свопа. Еще посмотрел его телефон, но там уже быстро - просто базовые проверки. В этот раз меня домой отправили (не имеешь права отказываться, а нам все равно столько не нужно) с двумя бутылками подсолнечного масла и килограммом меленого кофе.
Все четыре случая дело было не в полной тишине, а с фоновыми беседами - они все паралельно рассказывали различные интересные истории из своих жизней. За время войны и годы работы на удаленке я уже соскучился по подобным разговорам.
❤3🔥2👍1
Наконец посмотрел интервью Как сдать проект на 1С за 5 секунд? от 2 мая Сергея Сыпачева с Игорем Апресовым. Было весьма любопытно.
1) Кунг-фу конфа. Было удивлением узнать, что это отдельный проект Игоря и Димы Котова. Ранее считал, что это продолжение "Желтого Клуба" и Игорь с Димой просто приглашенные звезды. Помню, что Игорь часто захаживал к Евгению с Воронежа (в кепке), а потом они вместе запустили курс по "чистому коду в 1С". Продвижение "чистого кода" плавно перешло в продвижение "кунг-фу конфы" и если там был Евгений, то уже лишь в качестве приглашенной звезды.
2) Стандарты 1С. Игорь рассказал о своей бывшей работе в 1С, где он согласовывал принятие новых стандартов. Было озвучена интересная мысль, что нечитаемый "юридически" формат стандартов на ИТС (который никто не читает) является сознательным выбором фирмы 1С и у этого есть причина, которую нельзя озвучивать. Прозвучало как "пиз@6ж" - если стандарты внутренние, то их бы вообще не публиковали, а если публичные, то они обязаны быть доступными и понятными каждому.
3) Юнит-тестирование. Слушать про транзакции как "серебряную пулю" было очень странно. К подобным юнитах на транзакциях я пришел в первый же день, как мне нужно было написать свой первый юнит и мне это казалось естественным. Естественным, но ущербным убожеством поскольку: 1) транзакция замедляла выполнение юнит-тестов, которые по своей сути задуманы как сверх-быстрые проверки, которые должны выполняться тысячами за минуты; 2) создавали риск блокировок при параллельном выполнение тестов. В идеале юниты должны выполняться в миниатюрной версии платформы без реальной базы данных - лишь API и мокирование всего внешнего. Возможно когда-нибудь 1С даст нам юниты или их вновь первыми разработают "вольные стрелки" на базе OneScript.
1) Кунг-фу конфа. Было удивлением узнать, что это отдельный проект Игоря и Димы Котова. Ранее считал, что это продолжение "Желтого Клуба" и Игорь с Димой просто приглашенные звезды. Помню, что Игорь часто захаживал к Евгению с Воронежа (в кепке), а потом они вместе запустили курс по "чистому коду в 1С". Продвижение "чистого кода" плавно перешло в продвижение "кунг-фу конфы" и если там был Евгений, то уже лишь в качестве приглашенной звезды.
2) Стандарты 1С. Игорь рассказал о своей бывшей работе в 1С, где он согласовывал принятие новых стандартов. Было озвучена интересная мысль, что нечитаемый "юридически" формат стандартов на ИТС (который никто не читает) является сознательным выбором фирмы 1С и у этого есть причина, которую нельзя озвучивать. Прозвучало как "пиз@6ж" - если стандарты внутренние, то их бы вообще не публиковали, а если публичные, то они обязаны быть доступными и понятными каждому.
3) Юнит-тестирование. Слушать про транзакции как "серебряную пулю" было очень странно. К подобным юнитах на транзакциях я пришел в первый же день, как мне нужно было написать свой первый юнит и мне это казалось естественным. Естественным, но ущербным убожеством поскольку: 1) транзакция замедляла выполнение юнит-тестов, которые по своей сути задуманы как сверх-быстрые проверки, которые должны выполняться тысячами за минуты; 2) создавали риск блокировок при параллельном выполнение тестов. В идеале юниты должны выполняться в миниатюрной версии платформы без реальной базы данных - лишь API и мокирование всего внешнего. Возможно когда-нибудь 1С даст нам юниты или их вновь первыми разработают "вольные стрелки" на базе OneScript.
👍5👌1
Прямо анекдотический случай с хваленым Opus от Anthropic 🤦
Контекст. Я как многолетний фанат Far Manager использую его не только на Windows, но и на Linux. Решил сделать себе один полезный плагин. Вроде все по документации, но плагин не подтягивается.
У меня в Antigravity как раз был лимит, которого обычно хватало на несколько дней работы Opus/Sonnet. Не думая о подвохе, задал Opus'у задачу сверить мою реализацию библиотеки с заголовками в SDK (тут же на диске) - ведь очевидно, что где-то что-то пропущено.
Opus в результате нашел разбежность в двух методах, но в процессе зачем-то полез на Github и долго медитировал над проектом far2l (линуксовый порт Far) и над реализацией похожих плагинов. Агент занимался этим странным веб-серфингом пока не просадил токены почти в ноль.
Почему Opus полез серфить? Может моя локальная копия SDK устарела?
Я спросил Opus об целях его внезапном веб-расследования и получил ответ на скрине, ответ в духе последних новостей "да, я удалил прод, не нужно было этого делать". Чтобы получить это объяснение, были потрачены остатки лимита и Antigravity предложил мне докупить новые токенов для продолжения в том же духе.
P.S. К слову, PocketOS, которая потеряла прод и с ним все бэкапы, обожглась на этих же хваленных моделях от Anthropic.
#AI #ИИ #Anthropic #Opus #Antigravity
Контекст. Я как многолетний фанат Far Manager использую его не только на Windows, но и на Linux. Решил сделать себе один полезный плагин. Вроде все по документации, но плагин не подтягивается.
У меня в Antigravity как раз был лимит, которого обычно хватало на несколько дней работы Opus/Sonnet. Не думая о подвохе, задал Opus'у задачу сверить мою реализацию библиотеки с заголовками в SDK (тут же на диске) - ведь очевидно, что где-то что-то пропущено.
Opus в результате нашел разбежность в двух методах, но в процессе зачем-то полез на Github и долго медитировал над проектом far2l (линуксовый порт Far) и над реализацией похожих плагинов. Агент занимался этим странным веб-серфингом пока не просадил токены почти в ноль.
Почему Opus полез серфить? Может моя локальная копия SDK устарела?
Я спросил Opus об целях его внезапном веб-расследования и получил ответ на скрине, ответ в духе последних новостей "да, я удалил прод, не нужно было этого делать". Чтобы получить это объяснение, были потрачены остатки лимита и Antigravity предложил мне докупить новые токенов для продолжения в том же духе.
P.S. К слову, PocketOS, которая потеряла прод и с ним все бэкапы, обожглась на этих же хваленных моделях от Anthropic.
#AI #ИИ #Anthropic #Opus #Antigravity
😁6❤1🤔1
На работе с 1С:Напарником как-то не заладилось и он все еще больше галлюцинирует чем дает пользы - вероятно его обучали для помощи с доработкой типовых, а не в целом под 1С:Предприятие. Свои персональные подписки для рабочих вопросов я естественно не использую (это было бы странно), таким образом из современного разнообразия ИИ я временами использую только бесплатный Cursor. Иногда очень удачно 👍
Но стоит и про фейлы рассказать, чтобы картинка мира была без розовых очков🔥
Вчера решал одну "простую" проблему - было два документа, в первом из которых контрагент при смене договора подставлялся, а во втором - нет. При чем визуально реализации были абсолютно идентичными и использовались одни и те же общие модули. Очевидно, что проблема была где-то внутри из-за срабатывания некоего "побочного эффекта", но пока не было понятно где именно😳
Я сделал замеры производительности в EDT🤝 для обоих сценариев, но их сравнение стандартными средствами - это почти как ручная отладка, за которой можно час за часом весь день впустую просидеть и не найти ответ. И тут я вспомнил про своего ИИ-джуна 🤨
Выгрузил оба замера в файлы и скормил их в Cursor с задачей отследить прохождение общих модулей и найти развилку, где поведение изменилось. Агент долго grep-ал и по итогу написал "Эврика, я нашел!" и выдал место в коде, которое было идентично в двух сценариях💫
На всякий случай перепроверил предложенный фрагмент, но нет - там все точно было идентично и не могло быть причиной проблем. Указал на это Cursor-у и получил ответ, что мне нужно оплатить Pro-подписку, если хочу продолжить общение💰
"Абстрактный вайбкодер" на моем месте вероятно заплатил бы подписку Cursor и продолжил бы ждать ответ, но я просто закрыл Cursor вместе с EDT🤝 и открыл старый добрый Конфигуратор 🛠 , где на модулях можно одновременно показать два и более замеров производительности. Прошло примерно минут десять сканирования кода моими органическими глазами и в глубинах событийного движка я нашел тот самый рудиментарный 🍺
💗 Мораль истории - никому не верим на 100% и никогда не отключаем собственные мозги!
#1С #cursor #vibecoding
Но стоит и про фейлы рассказать, чтобы картинка мира была без розовых очков
Вчера решал одну "простую" проблему - было два документа, в первом из которых контрагент при смене договора подставлялся, а во втором - нет. При чем визуально реализации были абсолютно идентичными и использовались одни и те же общие модули. Очевидно, что проблема была где-то внутри из-за срабатывания некоего "побочного эффекта", но пока не было понятно где именно
Я сделал замеры производительности в EDT
Выгрузил оба замера в файлы и скормил их в Cursor с задачей отследить прохождение общих модулей и найти развилку, где поведение изменилось. Агент долго grep-ал и по итогу написал "Эврика, я нашел!" и выдал место в коде, которое было идентично в двух сценариях
На всякий случай перепроверил предложенный фрагмент, но нет - там все точно было идентично и не могло быть причиной проблем. Указал на это Cursor-у и получил ответ, что мне нужно оплатить Pro-подписку, если хочу продолжить общение
"Абстрактный вайбкодер" на моем месте вероятно заплатил бы подписку Cursor и продолжил бы ждать ответ, но я просто закрыл Cursor вместе с EDT
Если...КонецЕсли из устаревшей логики, на котором обработка смены договора останавливалась и удаление которого привело систему в порядок #1С #cursor #vibecoding
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Журнал инженера-программиста
У меня была задачка с доработкой прав в конфигурации IRP. Суть в том, что ранее права на отчеты наследовались от подсистем, но практика показала, что не все отчеты одинаково полезны (а некоторые вообще запрещены к просмотру), и потому было принято решение…
🔥7❤1
При работе с платформой 1С есть три типа ошибок: 1) ошибки пользователей, 2) ошибки платформы и 3) ошибки обстоятельств 🧐
Ошибки обстоятельств просто бесят - тут некого бить по рукам инструкциями и нельзя забагованные функции обложить красными флажками. Тут у нас функционал, который вроде у всех работает и даже почти всегда стабильно работает у тебя, но иногда почему-то не работает🫣
===
Ко мне обратилась наш аналитик посмотреть проблему на форме договора с исчезновением одного старого поля, которое давно никто по задачам не трогал. При чем у записанных договоров поле показывается и отсутствует лишь для новых, что в купе с "обязательностью для заполнения" заблокировало создание элементов справочника.
Прохожу отладкой - все есть пока не сработает процедура "установки видимости и доступности", после которой поле пропадает с формы, при чем у самого элемента видимость сохраняется, но пропадает у его группы (для выравнивания).
Смотрю процедуру - группу там не трогают, но видимость самого элемента явно устанавливается в зависимости от типа договора (если тип Прочие Взаиморасчеты, то большинство реквизитов скрываются), но значение устанавливаемой видимости было Истина. Прохожу внимательно отладкой процедуру - элемент как был видим, так и остался видимым после установки видимости; группа тоже остается видимой вплоть до выхода из процедуры - т.е. на шаге КонецПроцедуры все еще Видимость=Истина, а на следующем шаге уже Видимость=Ложь.
Подобное поведение очень похоже на работу расширения, но расширений в базе не было. Хотя может кеш? На всякий случай для промежутка вызова проблемной процедуры запустил "Замер производительности", но в отчете были только шаги внутри процедуры с явной установкой видимости в Истина. Т.е. некая сверхъестественная сила решила менять видимость у элемента, но только при условии, что Объект.Ссылка указывает на пустую ссылку, а иначе не мешает👻
Аналитик напомнила, что все работало до принятия на GitHub последних правок с добавлением одного специфического поля, которое практически всегда скрыто. К слову, как раз тот случай, когда для формы нужно работающее условное оформление, но оно управляет видимостью только для элементов таблиц. Для этого нового поля видимость включала/выключала все та же общая процедура видимости/доступности и значением для новых элементов всегда было Ложь.
Открываю XML формы, нахожу новый элемент, смотрю его айдишник, делаю поиск по форме и БИНГО - это тот же айдишник, что и у группы, которая внезапно начала терять видимость. Истинной причиной паранормального поведения формы было, что при тестировании фичевых пулл-реквестов образовалась небольшая очередь, в результате которой было паралельно создано два пулл, в первом из которых добавлена новая группа, а во втором с тем же айдишником добавлено новое поле. Каждая из двух веток сама по себе работала верно, но их мерж в основной проект испортил форму (не в первый раз). После исправления задублированного айдишника все заработало👍
===
Интересно, что когда видимость нового элемента отключалась, то в отладке для проблемной группы видимость все еще оставалась включенной, пока не вышли из процедуры. Именно потому в отладке я не увидел это подозрительное поведение и продолжал искать в ошибочном направлении. При чем такое поведение отладчика с не обновляемыми значениями я временами замечаю при расследовании проблем в клиентских базах, где хоть вычисление выражений показывало Ложь, но выполнение все равно заходили в неправильное условие - для анализа настоящих значений приходилось добавлять расширение с логированием в журнал событий.
#1С #полтергейст #баги
Ошибки обстоятельств просто бесят - тут некого бить по рукам инструкциями и нельзя забагованные функции обложить красными флажками. Тут у нас функционал, который вроде у всех работает и даже почти всегда стабильно работает у тебя, но иногда почему-то не работает
===
Ко мне обратилась наш аналитик посмотреть проблему на форме договора с исчезновением одного старого поля, которое давно никто по задачам не трогал. При чем у записанных договоров поле показывается и отсутствует лишь для новых, что в купе с "обязательностью для заполнения" заблокировало создание элементов справочника.
Прохожу отладкой - все есть пока не сработает процедура "установки видимости и доступности", после которой поле пропадает с формы, при чем у самого элемента видимость сохраняется, но пропадает у его группы (для выравнивания).
Смотрю процедуру - группу там не трогают, но видимость самого элемента явно устанавливается в зависимости от типа договора (если тип Прочие Взаиморасчеты, то большинство реквизитов скрываются), но значение устанавливаемой видимости было Истина. Прохожу внимательно отладкой процедуру - элемент как был видим, так и остался видимым после установки видимости; группа тоже остается видимой вплоть до выхода из процедуры - т.е. на шаге КонецПроцедуры все еще Видимость=Истина, а на следующем шаге уже Видимость=Ложь.
Подобное поведение очень похоже на работу расширения, но расширений в базе не было. Хотя может кеш? На всякий случай для промежутка вызова проблемной процедуры запустил "Замер производительности", но в отчете были только шаги внутри процедуры с явной установкой видимости в Истина. Т.е. некая сверхъестественная сила решила менять видимость у элемента, но только при условии, что Объект.Ссылка указывает на пустую ссылку, а иначе не мешает
Аналитик напомнила, что все работало до принятия на GitHub последних правок с добавлением одного специфического поля, которое практически всегда скрыто. К слову, как раз тот случай, когда для формы нужно работающее условное оформление, но оно управляет видимостью только для элементов таблиц. Для этого нового поля видимость включала/выключала все та же общая процедура видимости/доступности и значением для новых элементов всегда было Ложь.
Открываю XML формы, нахожу новый элемент, смотрю его айдишник, делаю поиск по форме и БИНГО - это тот же айдишник, что и у группы, которая внезапно начала терять видимость. Истинной причиной паранормального поведения формы было, что при тестировании фичевых пулл-реквестов образовалась небольшая очередь, в результате которой было паралельно создано два пулл, в первом из которых добавлена новая группа, а во втором с тем же айдишником добавлено новое поле. Каждая из двух веток сама по себе работала верно, но их мерж в основной проект испортил форму (не в первый раз). После исправления задублированного айдишника все заработало
===
Интересно, что когда видимость нового элемента отключалась, то в отладке для проблемной группы видимость все еще оставалась включенной, пока не вышли из процедуры. Именно потому в отладке я не увидел это подозрительное поведение и продолжал искать в ошибочном направлении. При чем такое поведение отладчика с не обновляемыми значениями я временами замечаю при расследовании проблем в клиентских базах, где хоть вычисление выражений показывало Ложь, но выполнение все равно заходили в неправильное условие - для анализа настоящих значений приходилось добавлять расширение с логированием в журнал событий.
#1С #полтергейст #баги
Please open Telegram to view this post
VIEW IN TELEGRAM
👻3
Есть полностью стандартный ЗУП на поддержке без доработок. У нескольких пользователей ничего не открывается: ни документы, ни отчеты. Если смотреть в журнал регистрации, то там при открытии формы или при компоновке отчета идут вызовы в общие модули кадрового учета и :
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
kaynağı:
{(30, 2)}: Sözdizim hatası "İç"
<<?>>İç СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизическихЛиц КАК РегистрСведений
Проблемы, как вы уже догадались из текста ошибки, только у пользователей с турецким языком системы (сам ЗУП на русском).
Стеки вызовов ошибок ни о чем не говорят. Где-то внутри ЗУП его 100500 функций формируют текст запроса согласно настроек, функциональных опций и прав доступа, а на выходе в результирующем запросе вместе строки "ВНУТРЕННЕЕ СОЕДИНЕНИЕ" почему-то "İç СОЕДИНЕНИЕ". Но при этом в моем англоязычном интерфейсе все работало, а включать ради тестирования турецкий язык системы я не решался...
Подсказкой для поиска стало то, что во всех ошибках в строке псевдоним задавался как "РегистрСведений". Я выполнил поиск по конфигурации и нашел все 6 мест, где для присоединяемой таблицы задавался такой алиас - это были шаблоны запросов, которые далее скармливались в ЗарплатаКадрыПериодическиеРегистры.ОписаниеЗапросаПоТексту(), а там шаблон передавался схеме запроса и на базе этого объекта делалась верстка нового запроса:
Для Каждого ИсточникСхемы Из Оператор.Источники Цикл
Для Каждого Соединение Из ИсточникСхемы.Соединения Цикл
ОписаниеСоединения = СтруктураОбъединяемогоЗапроса.Соединения.Добавить();
ОписаниеСоединения.ВедущаяТаблица = ИсточникСхемы.Источник.Псевдоним;
ОписаниеСоединения.ПрисоединяемаяТаблица = Соединение.Источник.Источник.Псевдоним;
ОписаниеСоединения.ТипСоединения = Строка(Соединение.ТипСоединения);
ОписаниеСоединения.Условия = Новый Массив;
ОписаниеСоединения.ПорядокСоединения = ПорядокСоединения;
КонецЦикла;
КонецЦикла;
По листингу видно, что в свойство ТипСоединения для описания нового соединения закидывалось представление, которое получено из ТипСоединенияСхемыЗапроса.Внутреннее (QuerySchemaJoinType.Inner) с помощью функции Строка(), которая возвращает представление согласно региональных настроек пользователя (для турецкого это "İç"). Платформа 1С поддерживает 23 языка для отображения представлений внутренних значений, но язык запросов поддерживает только русский и английский.
#1С #баги
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍2
Журнал инженера-программиста
В комментариях к предыдущей записи @Cryptabuser888 спрашивал почему в Украине до сих пор не написали аналог 1С.
Как мы видим, наличие огромного штата разработчиков, и еще большего количества внедряющих партнеров, и сотни тысяч клиентов за несколько десятилетий так и не сделали решения 1С идеальными. До сих пор "Шаг влево, шаг вправо" => баги сразу во все стороны как тараканы в общем вагоне.
Мало кому хочется быть подопытной свинкой, чтобы своими деньгами оплачивать отладку на своем бизнесе экспериментов от ноунеймов. А лицензии от SAP, Oracle и Microsoft неплохо кусаются и никто почему-то не хочет проспонсировать переход украинского бизнеса с 1С на "западные аналоги".
Как мы видим, наличие огромного штата разработчиков, и еще большего количества внедряющих партнеров, и сотни тысяч клиентов за несколько десятилетий так и не сделали решения 1С идеальными. До сих пор "Шаг влево, шаг вправо" => баги сразу во все стороны как тараканы в общем вагоне.
Мало кому хочется быть подопытной свинкой, чтобы своими деньгами оплачивать отладку на своем бизнесе экспериментов от ноунеймов. А лицензии от SAP, Oracle и Microsoft неплохо кусаются и никто почему-то не хочет проспонсировать переход украинского бизнеса с 1С на "западные аналоги".
👏1