Дякую за розгорнуту відповідь.
На рахунок багу, подивлюся по логам.
На рахунок дефолтової теми, я зробив такий коміт.
github.com/...ba7bc8d16364d5993913206a2
Теперь по дефолту в користувача відкривається White тема, але яку можна змінити.
Також, ThemeDimension можна більш детально налаштувати через його конфігурацію
{ 'DefaultTheme':'Dark', 'ChooseThemeOnLoginPage':true, 'ChooseThemeOnAllPages':true }
Додав Theme (дропдаун зверху зправа, що дає змогу вибрати кольорову палітру)
fraplat.com/jupiter/BTCRate
Щоб це зробити, це лише один рядок в коді
github.com/...2af8e808f09cc24dadba209ad
Я люблю власні кнопки мувити по екрану
Дизайнера форм наразі немає. Є дизайнер, який орієнтований на клонування сайтів створених в інших дезайнерах, з розділу статті RAW User Interface:
Рішення прийшло несподівано. Ідея була в тому, аби не робити ще один повноцінний дизайнер форм, а зробити такий дизайнер форм, який зможе просто готову веброзмітку натягнути на стандартний інтерфейс. Так це буде просто макіяж (makeup) програми, після якого вебсайт не відрізнятиметься від кращих дизайнерських вебрішень, які трапляються в інтернеті.Такий підхід має низку істотних переваг.
Перше: ви більше не обмежені дизайнером вебформ, можна використовувати будь-який дизайнер у будь-якому конструкторі, а потім просто скопіювати html-розмітку до себе.
Друге — це ідеальний інструмент для клонування сайтів. У вас уже є потужний інструмент для створення бізнес-логіки, все що тепер потрібно — просто провести «face lifting» сторінок вебдодатку, які повинні виглядати не в стандартному інтерфейсі.
Також, зверніть увагу ще на такий абзац з статті
Цей підхід у побудові вебформ працює значно швидше, ніж це робиться в no-code-рішеннях. Адже в no-code як мінімум потрібно перетягувати контроли з панелі інструментів на форму, дизайн grids, дизайн вкладених форм, вирівнювати їх, розміщувати контроли в GroupBox. Зв’язувати між собою сутність. А тут ваш вхідний квиток — це просто Json, який є одночасно й одиницею зберігання інформації в базі даних, і шаблоном для створення вебформи. Але, найцінніше в цьому підході — це те, що json-документи можна формувати динамічно, а значить динамічно створювати вебформи і динамічно створювати весь CRUD для цих вебформ будь-якої складності та вкладеності.
Дизайнер форм це не найшвидший спосіб побудови UI інтерфейсів. Особливо він обмежує, коли потрібно побудувати динамічну форму, де ви не знаєте точно структуру вашого документу та точну кількість та тип контролів на формі.
Так, це багато каже про універсальність інструменту.
Так, завтра додам Theme діменшин до BTCRate. Зараз просто не біля компьютера.
Багато можна чого написати, не знаю, треба дивитись що там в ТЗ.
Половина Fractal написана на Fractal.
Ви уявляєте щоб половина Bubble, або Tilda чи якогось іншого LC було написано на самому собі ? Нонсенс, а тут цей бутстрап хочаб на половину, але можливий.
Зараз функціональщики мають підбадьоритись, вони то знають чого це коштує в математиці :D
В якісь момент розумієш, що програмування тепер як політ, а не повзання на животі серед кривих фреймворків. Трохи печалять звісно баги, але вони рано чи піздно пофіксяться, а загальні принципи залишаться.
Тож правильна відповідь, яку саме частину трейд площадки можна написати на FP.
Може це буде 50%, 70% або навіть 90%.
Якщо правильно зрозумів
На окрему увагу заслуговують ще два dimensions, це — Theme і Localization.
Theme дозволяє нам змінити стандартну «чорну» палітру інтерфейсу користувача на White, LightBlue, LightGreen, LightPink. Або навіть дати можливість користувачеві
в UI вибрати кольорову тему.
Завтра можна змінити. Це хвилина діла.
Слухай, ну я здивований. Не багато людей розуміють те що ти пишеш.
Думаю це потрібно
Але мій поїнт був трохи не про те. 90% людей при вибору облікової системи обовязково спитають «а гдє наш любімій пастгрєс» чи щось в такому дусі, тож дешевше їм просто вигрузити ці данні через адаптер та забути. :)
Доречі, якщо ви бачите що якісь Low Code використовує реляційну базу, то можете зразу робити помітку, що це LC з натяжкою. Якби я тягав ті стрілочки, чи блок схеми, дизайнив таблиці, в мене лише дизайн всіх таблиць та звязків між ними зайняв би до тиждня. Які там 24 години, на готовий додаток на МVP ютуба. Тож Fractal має навіть таку перевагу, якщо ваша мета просто створити досить велику реляційну БД, то зручніше це зробити в json колекціях, та просто ковертнути її в RDBMS :)
В облікових системах часто використовуються транзакції при проводках.
Взагалі транзакція, це атомарна операція. Підтримка атомарних операцій дозволяє не лишати базу при помилках в проміжному стані. Тож добре ім’я RDBMS собі зробили на самперед продавши ACID та транзакційність бізнесу, що значно підвищило надійність зберігання данних.
Але я згоден, що це трохи вже переоцінено в сучасному світі. Є певна кількість прийомів щоб навіть в NoSQL досягти прийнятної надійності.
Мде, досить неприємний баг. Помилка була в конфігурації Security діменшина.
Незареєстрований користувач не має права лайкати відео. Лише лишати коментарі.
Тож, коли він лайкнув, Likes зберігся як NULL, що спричинило 500ту при рендерінгу.
github.com/...63a9fe375f201b01a5ce0504c
Зараз має працювати
fraplat.com/jupiter/UTube
Дякую, вже побачив, дивлюся логи. Нарештні на третій день поклали під навантаженням )
З більш добрих нових, ізольованість в клауді плюс\мінус таки працює.
Тож сусідні мікро проекти працюють, наприклад fraplat.com/jupiter/BTCRate
Хєх, це майже те що я хотів )
Тепер можна вантажити відео в український ютуб.
Він звісно трохи глюкавий, тож виправлення там багів займе ще щонайменьше
але з базовим сценарієм вправляється добре. Тепер в свої ченели можна вантажити відео прямо з телефона лежачі на гамаку )
Коментарі лайки теж працюють. Ніякої реклами.
Є певні проблеми з рефрешем сторінок, але то вже пізніше виправиться.
Доречі, якщо в вас є побажання по функціоналу, пишіть. Я думаю можна буде багато чого додати. Коли девелопери опанують по справжньому зручні інструменти, думаю такі проекти будуть створюватись майже щодня і звісно кращої якості, томущо ми лише на початку цього шляху.
Для 1С є доречі інша проблема. Загальний стандарт зберігання інформації для облікових систем є RDBMS бази данних, накшталт MS SQL\Oracle.
Але Fractal використвує свою концепцію з Storages, де транзакційність та ACID є лише надбудовами поверх Storages. Певною мірою це більш досконалий механізм, який більш добре тюниться під сценарії роботи з данними. Є навіть спеціальні діменшени Merge\Unmerge, що дозволяють видаляти вже закомічені транзакції (звісно при певних умовах) в документах, що корисно в облікових системах. TransactionDimension доречі підтримує три види транзакцій ReadCommited, RepeatableRead та Snapshot.
Але для бізнесу, все що не умовний MS SQL то є NoSQL, а значить синонім не надійності (так вже сталося, що в той же Монго транзакції заводили майже 10 років).
Певним вирішенням може бути RDBMSDimension, мета якого бути proxy, або адаптером який перенаправляє данні в MS SQL (а в перспективі в будь яку іншу бд).
Таким чином планується, що бізнес зможе мати всі переваги роботи з Fractal, а також звичну для себе реляційну базу данних під рукою для аналітики.
вбивцю програмування загального призначення як явища.
Це душе широке поняття ти взяв.
Як мінімум є ринок низькорівневого програмування, ринок іграшок з складним рендерінгом тощо. Тож покрити все — не вдасться. Але різні види крудів, або все що так чи інакше будується навколо БД, так LC може покрити. А LC рівня Fractal може так, що ти, наприклад, відкриїш свій улюблений сайт Dou не зможеш його відризнити від оригінального. Ну може по latency, який буде в разів 10 краще за оригінальний сайт.
(Якщо що, черговий челендж на 24+ години щоб клонувати Доу я починати не буду, це чисто технічна оцінка чи це можливо :) )
Мені здається, що ти трохи концентруєшся більше на технологіях (доречі не найкращих) чим на вирішенні саме «болю» користувача. Полишимо ютюб, ось гарний приклад з онлайн кінотеатром, він ну дуже простий, мньше 40 рядків коду.
github.com/...ons/SeasonsApplication.cs
fraplat.com/jupiter/Seasons (Пароль ps)
Він, начебто повинен конкурувати з «дорослими» сайтами.
Але, яка альтернатива.
1. Якщо я відкриваю сайт по запиту «дивитись фільм онлайн» мені показують кожен раз рекламу казино, а від кількості банерів бравзер в моєму смарт телевізорі просто крашиться
2. Я можу скачати торентом серіал, потім записати його на флешку, потім вставити в телевізор — мені не зручно. До тогож, інколи фільми я хочу дивитися з мобільного пристрою або планшету. Треба мобільність.
3. Можна зробити з ноутбука каст екрану на телевізор, трохи зручніше. Але FPS просідає до дратівливого рівня.
Тож, щож маємо. Наче сайт дуже простий, просто список цікавих серіалів та пошук.
Але, реклами немає. Не тормозить. Зручно використовувати майже кожен день для приватного користування. Та я радий що витратив на нього всьго годину свого часу.
Тож, кожен раз коли ти дивишся на якійсь складний сайт, просто пригадай принцип Парето
"80% користувачам потрібно лише 20% функціоналу«©
І, можливо, не потрібно занадто багато часу витрачати на зайвий функціонал.
Якщо сервіс дійсно вирішує «біль» користувача, по інтерфейсу користувач буде згоден навіть на телеграм бота, не те що на «бд з відеофайлами».
Щож, на годиннику вже 9:55, тож 24 години, що віддавалися на ютуб MVP челендж спливли. dou.ua/...rums/topic/44975/#2694315
За ці 24 години (з яких ефективними за компьютером були десь
я намагався імплементувати наступний функціонал, не маючи ніяких заготовок
(помятаєте метафору про 3д принтер проти конструкторів Лего).
Тож готових кубиків немає, є лише швидкий «друк» додатку.
За цей час була імплементована наступна функціональність (не всюди добре протестована, але всеж таки)
Для користувачів:
1. Реєстрація
2. Логін користувача
3. Логаут користувача
4. Редагування мого профайла
5. Створення відео каналів з тематичними тегами
6. Перегляд каналів де я власник
7. Перегляд всіх каналів в системі
8. Перегляд всіх зареєстрованих користувачів на UTube
10. Редагування інформації про канал. Видалення моїх відео, тощо
11. Завантаження (короткого) відео в відео канал
12. Перегляд відео з відеоканалу
13. Залишити коментарі під відео
14. Залишити лайк під відео
15. Підписатися на канал
16. Відписатися від каналу (доречі не імплементовано, не встиг)
17. Історія перегляду відео
18. Дашбоард (зареєстрованого) користувача складається з наступних розділів
а. Нові відео, котрі нещодавно були завантажені та не ще переглянуті користувачем
б. Нові відео що вийшли на каналах де я підписан, але ще їх не дивився
в. Рекоммендовані відео, видео з найбільшою кількістю переглядів, котрі я ще не дивився
19. Пошут каналу в списку по ключовим словам (назва, теги, власник, тощо)
20. Пошук користувачів в списку по ключовим словам
21. Кількість переглядів під кожним відео
Для адміністратора (все через веб інтерфейс)
1. Можливість заблокувати канал (IsLocked флаг)
2. Можливість редагувати любий канал в системі
3. Можливість редагувати/видаляти любого користувача із системи
На все про все вийшло приблизно ~500 рядків коду, половина з яких копіпаста з інших проектів (на платформі гарне перевикористання коду).
github.com/...amples/Applications/UTube
Теперь що в нас з поганого. Є баги, але (сподіваюсь) не значні. Попутно знайшов пару багів в engine, але звісно щось там фіксити ... то на один баг треба щонайменьше 48 годин, код складний. Тож пощастило, що швидко завжди знаходив work around та не ліз в сам engine.
Інтерфейс, його майже немає, на верстку зовсім не залишилося часу.
Проект задеплоєно fraplat.com/jupiter/UTube
Для гостя борда виглядить як Login та Register, якщо в вас будуть проблеми з реєстрацією, просто використовуйте логін: Rebeca пароль Bob.
Також я завантажив відео Me at Bike (по аналогії з першим відео на ютуб Me at Zoo)
Хотів завантажити «я на річці», але до 2ї ночі дивився хай йому грець Семіхатова про квантову фізку і з ранку проспав майже 2 години, тож не було часу туди їхати щось знімати, треба було швидко тестувати код та деплоїтись =)
На UTube зараз три канали (Fractal, Home, Music), два користувача, та три відео.
Можливо, я завантажу пізніше ще одне відео, де детально пройдуся по кожному з 24х пунктів, та покажу як все працює, але сьогодні в пріоритеті всеж таки відпочинок :)
Всім гарного дня !
Challenge Completed
Так, звичайно. Прямо зі статті цитата
Окремо хочеться згадати про 1С, якому зараз шукають заміну в Україні. Fractal практично ідеально лягає на документоорієнтовану предметну область. Системи побудовані на Fractal, які у своїй основі мають сотні та тисячі entities, нагадують просто чимось великий Excel, де замість електронних таблиць у нас json-документи. Складність і ентропія такої системи зростає вкрай повільно, навіть не зважаючи на велику кількість бізнес-логіки. Більше половини системи конфігурується, а сам код виходить простим, зрозумілим та самодокументованим. Звичайно, коли ми говоримо про 1С, технічна частина рішення може виявитися не основною. Але це точно один з тих напрямків, який варто спробувати на Fractal.
Але зможу більш детально відписати вже завтра, оскільки сьогодні лишилося не багато часу,
тут деталі
dou.ua/...rums/topic/44975/#2694315
Ех, і нехай youtube почекає 5 хвилин :)
Створив лендінг на Соціальна мережу Уєзжунька (яку колись обіцяв)
fraplat.com/jupiter/Uezjunyka
Меми оцінять ті хто в темі :)
</жарт>
Зберігати статистику від користувачів та робити подальший аналіз через API. Навантаження невелике буде. Можливо 100к транзакцій на день.
Трохи пізніше відпишу, всеж таки хочу з челендж встигнути.
Дякую за зауваження. Але мабудь це більше до редакції Доу, оскільки для завантаження малюнків використовується рекомендований сайтом Доу фото хостінг.
От тільки ти трошки забув кілька дещо критичних аспектів функціоналу, без яких «твій ютуб» не дотягне навіть до рівня файлосховища для відосів.
1) розширений FTS який вміє в синоніми, словоформи, FTS по автоперекладу і т.д.
2) алгоритми категоризації контенту
3) алгоритми визначення вподобань користувачів
4) алгоритми відповідності і рекомендування категоризованного у п.2 контенту проаналізованим у п.3 користувачам.Ютуб — це не бд з відеофайлами, це оці 4 пукнтіки. Ну і ще дохреніща всього, менш важливого.
1. В мене є лише 24 години на MVP (з котрих я доречі буду працювати лише
Весь інший функціонал за дужками MVP, тож це не означає що його не можливо зробити.
Це означає що на завтрашній ранок він не буде імплементований.
Лише ті 9 пунктів (і це ще в кращому випадку).
2. Буду вдячний, якщо ти приведеш інші засоби розробки, які дозволять хочаб таке «бд з відеофайлами» з реєстрацією користувача/каналами/підписками/лайками та коментами створити та розгорнути в світ за 24 години.
Доречі це досить грязний коміт. github.com/...ba7bc8d16364d5993913206a2
Краще це робити саме через конфігурацію Dimension, тоді вся логіка з зберіганням індивідуальної теми зберігається. Для BTCRate це не важливо, але це важливо в додатках де користувач може зареєструватися та зберегти свої індивідуальні налаштування (колір теми, мова інтерфейсу, тощо).
github.com/...c63044c93321b1fd294723084