• Предметно-орієнтоване проєктування (DDD): у чому користь підходу і хто його використовує

    Я би сказав, що справжні ідеї DDD розкриває CMDD в Fractal.
    Він данні розглядає як RAW ака любий ієрархічний обьєкт в json, анемічний, який не має ніяких властивостей, типів, тощо: github.com/...​/Document/0000000001.json

    Далі він наділяє анемічну модель властивостями. Security, Pagination, Sync, Sort, Validation тощо.
    Робить це в паралельних Dimensions. github.com/...​bases/SocialNetwork/Users

    На виході в нас анемічна модель User, навколо якої сформовано N layers, для того, щоб будь які операції з основним RAW документом приводили до виконування бізнесс логіки в N layers.

    Чому цей підхід з Dimensions який будеє N layers навколо анемічного обєкта над потужний.
    1. Код дуже добре читається. Різні прошарки бізнесс логіки не змішуються між собою, а існують, як би в паралельних вимірах (dimensions).
    2. Він дуже добре розширюється. Ви починаєте з анемічної моделі, але згодом вона наділяється складною бізнес логікою, де моделі стають rich, без переписування (!) коду.
    3. Пайплайн доменної моделі який побудований з Dimensions дуже швидко працює

    Таким чином Fractal поєднує в собі гнучкість і простоту використання anemic моделей, які гармонічно еволюціонують в прогресивному стилі до rich доменних моделей.

    В практичному плані це означає, що ви пишете в десятки раз меньше коду, зберігаючи гнучкість архітектури. Як цікаво, є купа прикладів де цілі соціальні мережі з нуля написані в 300-400 рядків коду (це фактично сценарії над доменними обєктами, що зберігаються в субд).

  • Методи масштабування реляційних баз даних: переваги, недоліки та кейси використання

    Ти якщо берешся за мою освіту (не знаю навіщо), роби це хоча б системно, а не на від**сь :) Механізми покращення durability в сучасних СУБД мають приблизно ніяке відношення до власне моделі даних (чим посгресовський WAL концептуально відрізняється від журналювання монги чи комітлогу кассандри, наприклад?). Чи ти маєш на увазі не апаратні збої, а баги на стороні апки (отже не «D» а «A» та/або «C»?)

    Там все має значення. RDBMS з її ACID заточена щоб уникати як логічних так і апаратних помилок. Апаратні фіксяться за рахунок журналів, локів, ізоляції транзакцій. Логічні — за рахунок нормалізації в реляційній моделі данних. Тож, якщо ти перейдеш на Монго, Касандра або інший NoSQL, консистентність ти можеш втратити вже на рівні проектування бази данних. Наприклад будеш ссилатися в різних документах референцом на одну ж ту саму сутність, але на рівні ядра СУБД валідність цього референса ніяк не буде перевірятися.

  • Методи масштабування реляційних баз даних: переваги, недоліки та кейси використання

    Умовна система обліку підходить в якості прикладу набагато краще, бо подвійний (в ідеальному світі ще й імутабельний) запис — отже будь-яка бізнес-операція завжди транслюється в 2+ бухгалтерських транзакцій (проводок), і втрата якоїсь з них розвалює баланс.

    ACID це не тільки про транзакції, а перш за все про те, як гарантувати цілістність СУБД при сбоях. Фінансові проводки в СУБД можуть бути, а можут і не бути, а ось FKs та інші Constraints в RDBMS є завжди.

  • Методи масштабування реляційних баз даних: переваги, недоліки та кейси використання

    Так мене переконувати не треба. Мені просто стало цікаво, чому як аргумент на користь ACID часто наводяться платіжні системи, які якраз історично є контр-аргументом — бо навіть в такій відповідній сфері як фінанси, виявляється цілком можливо побудувати надійну розподілену систему з елементів, які не забезпечують атомарності операцій як такої.

    Все трошки складніше.
    ACID забезпечує надійність вузла обчислень. Але не забезпечує надійність в рамках розподіленої системи (CAP теорема).
    Але якщо ви відмовитесь від ACID на вузлах, ви фактично будете мати не один, а вже два рівні з проблемами. На рівні вузлу та на рівні синхронізації хостів.

  • Чи може початківець написати мобільний додаток використовуючи ChatGPT?

    Це сумно.
    Я доречі код ще підрефакторив, він фактично зараз 5-7 рядочків коду,
    або роботи на 3 хвилини

    github.com/...​x1/Sandbox1Application.cs

    Підтримав: Andrii Andrii
  • Чи може початківець написати мобільний додаток використовуючи ChatGPT?

    А ви пропонуєте купу іншого всього повстановлювати та зробити сайт, це ж зовсім інше, ясно що воно може бути й простішим по коду,

    Сайт краще, оскільки ви його можете відкрити як на любому телефоні (андроід, епл) так і на компьютері.

    Підтримав: K Vadym
  • Чи може початківець написати мобільний додаток використовуючи ChatGPT?

    на відміну від мого друга chat-gpt.

    Ну він просто не ефективний. Генерить забагато коду та допускає безліч помилок. Для прикладу, якщо 100 рядків коду він генерить на якусь криву свистілку, то на нормальних технологіях на 300-400 рядків коду можна вже розраховувати на якусь соц мережу.
    Для GPT то планка просто недосяжна.

    а ваш код я навіть не знаю куди вставити, ide мені помилку видає,

    Тому що цей код на С#, а не на Пайтоні.
    Запустити та задеплоїти його дуже просто

    1. Установити Visual Studio Community. visualstudio.microsoft.com/vs/community
    2. Установити .NET Core 3.1. dotnet.microsoft.com/...​en-us/download/dotnet/3.1
    3. Клонувати репозиторій
    github.com/...​rnFractal/FractalPlatform
    4. Запустити FractalPlatform.Deployment проєкт на виконання. Він миттєво задеплоїть усі необхідні файли з Sandbox-проєкту в інфраструктуру Fractal і відкриє в браузері задеплоєний проєкт з потрібним url.

    Доречі, код вашого додатка я ще більше спростив. Зараз він виглядає зовсім просто
    github.com/...​x1/Sandbox1Application.cs

  • Чи може початківець написати мобільний додаток використовуючи ChatGPT?

    коли вивів найкращий, то з іншими програмами має бути швидше

    Не буде швидше, тому що складність програм росте експоненціально.
    З простим прикладом вам потрібно було вивести цілу систему щоб він не налажав,
    а з трохи складнішим прикладом він просто не справиться і все розламає остаточно.

    то треба перед тим ще довго вивчати мову програмування, чи не так?

    Не треба. Зайшли на доу, написали мінімальне ТЗ, вам дали ссилку на задеплоєний сайт.
    Якщо він простий, звісно.

  • Чи може початківець написати мобільний додаток використовуючи ChatGPT?

    У вас в коді вже введений список без можливості редагування

    Там є кнопки Add та Del. Додати та видалити продукт.
    Подвійний клік на рядку, редагувати продукт. Кнопка Calculate порахувати загальний кошторис.

    та і текст саме про те щоб не знаючи взагалі цієї мови програмування зробити програму

    То не программа. То один функціональний вираз, який пишеться і деплоїться як повноцінний сайт за 5 хвилин. На ЧатЖПТ скільки часу пішло?
    Десь пару днів його розважали промптами щоб йому не було скучно?

  • Чи може початківець написати мобільний додаток використовуючи ChatGPT?

    ChatGPT
    Python
    всього 92 рядки коду

    Навіщо все так складно.
    Додаток неймовірно простий, використовуйте правильні технології.
    15-20 рядків коду та 5 хвилин часу.

    fraplat.com/jupiter/Sandbox1

     private class Product 
            {
                public string Name { get; set; }
                public int Quantity { get; set; }
                public decimal Price { get; set; }
            }
    
            public override void OnStart()
            {
                new { Products = new[] 
                        { new Product { Name = "Хліб", Quantity = 1, Price = 1 }, 
                          new Product { Name = "Молоко", Quantity = 2, Price = 5 } } }
                .ToCollection(Constants.FIRST_DOC_ID)
                .SetUIDimension("{'Style':'Save:Calculate;Cancel:false'}")
                .OpenForm(result => {
                    var price = result.Collection.GetFirstDoc().Select<Product>("{'Products':[!$]}")
                                                                                      .Sum(x => x.Quantity * x.Price);
                    MessageBox($"Рахунок: {price} грн.");
                });
            }
    
    Підтримав: Oleksandr Tishyn
  • Порівнюємо код pet-проєктів, що перевіряють наявність світла

    Це зовсім простий кейс використання. Для нього підійде в розетку любе радіо, тв, або просто ввімкнути світло в кімнаті.
    Як зявиться світло — розбудить.
    Вище додатки покривають складніший кейс використання, умовно ти сидиш десь в сусідів, чи в офісі, чи просто гуляєш по вулиці, та хочеш дізнатися коли слід повертатися додому, ліфт працює і тд.

  • Порівнюємо код pet-проєктів, що перевіряють наявність світла

    Це настільки круто, що я не полінився витратити 10 хвилин свого часу, та створити і задеплоїти ще одну веб апку, щоб ви змогли додати свої результати до загальної таблички результатів пет проєктів:

    fraplat.com/jupiter/Sandbox5

    Код самої веб апки

    Client.SetDefaultCollection("ElectricityScore")
              .GetFirstDoc()
              .OpenForm(result => {
                          Client.SetDefaultCollection("NewElectricityScore")
                                .WantCreateNewDocumentForArray("ElectricityScore", "{'Apps':[$]}")
                                .OpenForm(result => OnStart());
              });
    
  • Порівнюємо код pet-проєктів, що перевіряють наявність світла

    А як щодо Django? Воно на Пітоні, і створювалось як раз для швидкої розробки сайтів з адмінкою та базою django-book-new.readthedocs.io/en/latest/chapter01.html

    Код ToDo list на Django в студію.
    Бажано який було написано з нуля за 2 хвилини.
    І ще за 2 хвилини задеплоєно в світ.

    Підтримав: Denys Poltorak
  • Порівнюємо код pet-проєктів, що перевіряють наявність світла

    Ок, наприклад я студент.
    Хочу написати hello world для веба, тобто ToDo list.
    Відкриваю цю класну документацію, та читаю щось типу:

    word[:2] # character from the beginning to position 2 (excluded)
    ’Py’
    word[4:] # characters from position 4 (included) to the end
    ’on’
    word[-2:] # characters from the second-last (included) to the end
    ’on’

    Це якось мене наблизило до мети? Ну чесно, сумніваюсь.
    При цьому, я йду на Fractal, дивлюся відео довжиною 2 хв та 45 секунд.

    Бачу код бази данних в джисоні

    {
      "Title": "My Todo List",
      "Location": "Home",
      "ToDos": [
        {
          "Completed": false,
          "Task": "Buy food"
        },
        {
          "Completed": false,
          "Task": "Clean room"
        }
      ]
    }
    

    Та код в шарпі, прочитати джисон, показати на його основі форму

    Client.SetDefaultCollection("ToDoList")
             .GetFirstDoc()
             .WantModifyExistingDocuments()
             .OpenForm();
    

    Та отримую свій ToDo лист за 2 хвилини.
    Код просто фантастично простий.

    Це просто дуже різні інструменти.
    Фрактал просто не морочить голову низькорівневим програмуванням як Пайтон, та дає змогу писати в х10-100 разів меньше коду.

    Я розумію, що ви бачите магію, нічого не зрозумієте.
    Але потрібно цю магію вчити, бо вона проста, та дає змогу збирати бекенд для сайтів за 3-5 доби. Не якусь лямду на авс що пінгує хост, а сайти ось такого рівня з купою скрінів та адмінкою:
    fraplat.com/...​843a4982f73510b50179d.jpg

    Фрактал фактично з бекендом робить те, що Figma зробила з дизайном сайтів. Фігма просто лишила без роботи всіх любітелів набирати html в блокноті. І абсолютно всеодно, як добре документація по html була описана до того в інтернеті, бо дизайн систем пришвидчився в х10 разів, а рівень того дизайну, як і дизайн бекенду на Фрактал, просто улетів в космос.

    Всі хто зараз вивчає Пайтон, то потенційні робітники за 5 долл на годину. Саме така продуктивність праці. А Фрактал, та всі хто зміг вивчити що таке Json та Dimensions то потенційні робітники з ставкою в 100-200 долл на годину.
    Just business, nothing personal.

  • Порівнюємо код pet-проєктів, що перевіряють наявність світла

    Базові речі вчаться навіть швидше чим за вечір. От як конвертувати будь-який json в повноцінний CRUD веб сайт.
    fraplat.com/jupiter/JsonToWebApp

    А це код цього нескладного апп.
    github.com/...​sonToWebAppApplication.cs

    Тепер уяви, в тебе є бд з схемою табличок і тобі потрібно просто круд зробити на Пайтоні ...

    А Фрактал робить це просто отримуючи на вхід джисон. Підправив джисон і фактично добавив філди в базу, контроли на юай. Ніде не помилився.

    Приклад дуже простий, але він показує що вхідний квиток хочаб для таких простих крудів, майже нульовий.

  • Порівнюємо код pet-проєктів, що перевіряють наявність світла

    Частково згоден. Але як на мене найкраща документація в brainfuck, взагалі не лишилось не описаних чи не зрозумілих аспектів роботи інтерпретатора =)

    Що насправді важливо розуміти, якщо різниця в х10 разів в ефективності, то вже пайтон відіграє роль brainfuck. Тому що навіть на одному проєкті це економія, умовно 1 вечір з вивченням на Фрактал, проти 5 вечорів на Пайтоні який добре знаєш.
    А на наступному проєкті то вже 1 вечір буде проти 10 вечорів.

  • Порівнюємо код pet-проєктів, що перевіряють наявність світла

    Дякую, мабуть треба буде зробити міграцію на новішу версію.

  • Порівнюємо код pet-проєктів, що перевіряють наявність світла

    Ця стаття більше не про код, а про технології, як писати набагато меньше коду.
    Якщо в ентерпрайз суцільний консерватизм, то для пет проєкту можна вибрати щось більш зручне, що дасть змогу написати весь код за один вечір (100 рядків коду, не тисяча).

  • Порівнюємо код pet-проєктів, що перевіряють наявність світла

    Бо в С нема магії.

    На Сі повно магії. А ось на Brainfuck вже зовсім все просто.
    З однієї сторінки вікі можна повністю вивчити мову, яка складається лише з кількох операторів.
    uk.wikipedia.org/wiki/Brainfuck

    Тому, краще писати на брейнфак, бо краще написати

    навіть в 10 разів більше рядків коду, ніж вчити нову магію.

    =)

    А якщо серйозно, гарний інструмент має економити час, навіть якщо спочатку дещо є просадка на навчанні.

    Підтримав: Denys Poltorak
  • Порівнюємо код pet-проєктів, що перевіряють наявність світла

    Висновок з коду в тому, що там суцільна магія

    "Будь-яка достатньо розвинута технологія, не відрізняєтся від чаклунства"© Артур Кларк, Три закони Кларка

    encrypted-tbn0.gstatic.com/...​hR4ztfa4eiTQmRFA&usqp=CAU

    =)

    simple&stupid.

    Все пізнається в порівнянні
    github.com/p1v2/eSvitlo

    Давайте зробимо експеримент, виберемо будь який не зрозумілий блок коду, та спитаємо GPT, що він робить.

    Виберемо з лямди, та виберемо з Fractal.
    У Пайтона фора, в інтернеті гігабайти коду для машинного навчання. На Фрактал майже нічого немає, лише дуже прості принципи побудови додатків.

    Згода, вибираємо самий не зрозумілий блок коду вище?

    Підтримав: Denys Poltorak
← Сtrl 1... 34567...12 Ctrl →