Just.Doit #12401 Posted December 7, 2024 (edited) Drakonian написал 2 минуты назад: Just.Doit написал 3 минуты назад: Drakonian написал 2 часа назад: 99% времени я пишу интеграционные тесты как эти тесты устроены? тестируют бизнес сценарии которые затрагивают несколько разных модулей, иногда зависят от других ресурсов или не понять суть вопроса технически интересно также как юниты? типа что-то запускает код в том же проекте, все в памяти, без деплоя и стендов? и без поднятия контейнеров там какихнить? Edited December 7, 2024 by Just.Doit Quote очень крутые котейкиКому-то пизды дал - нужно сделать скрин обязательно. (с) Solo Share this post Link to post
Drakonian #12402 Posted December 7, 2024 (edited) Just.Doit написал 22 минуты назад: Drakonian написал 24 минуты назад: Just.Doit написал 26 минут назад: Drakonian написал 2 часа назад: 99% времени я пишу интеграционные тесты как эти тесты устроены? тестируют бизнес сценарии которые затрагивают несколько разных модулей, иногда зависят от других ресурсов или не понять суть вопроса технически интересно также как юниты? типа что-то запускает код в том же проекте, все в памяти, без деплоя и стендов? и без поднятия контейнеров там какихнить? А ну смотри, эти тесты запускаются в процессе CI/CD, в этом же процессе создается временный docker container, туда же деплоится база данных с некими базовыми данными, паблишится код с ветки, запускаются тесты. Тесты можно запускать с разной изоляцией, наиболее частая изоляция это уровень теста - каждый тест это отдельная сессия с изначальными данными из БД. После того как тест отрабатывает происходит roll-back всех данных в БД. Во время разработки тесты запускаю на локальном докер контейнере с той же изоляцией. В самом тесте иницилизируешь все необходимые данные, пишешь тест который повторяет некий бизнес сценарий, причем желательно использовать тот-же ui, а не функции напрямую (это позволяет framework где есть возможность эмулировать UI), верифицируешь результат и не стоит забывать про негативные сценарии. Как-то так, но я же не спец по тестированию, может у меня какой-то наивный или неправильный подход) Edited December 7, 2024 by Drakonian sB.Raven likes this Quote Share this post Link to post
Just.Doit #12403 Posted December 8, 2024 Drakonian написал 11 часов назад: Just.Doit написал 12 часов назад: Drakonian написал 12 часов назад: Just.Doit написал 12 часов назад: Drakonian написал 14 часов назад: 99% времени я пишу интеграционные тесты как эти тесты устроены? тестируют бизнес сценарии которые затрагивают несколько разных модулей, иногда зависят от других ресурсов или не понять суть вопроса технически интересно также как юниты? типа что-то запускает код в том же проекте, все в памяти, без деплоя и стендов? и без поднятия контейнеров там какихнить? А ну смотри, эти тесты запускаются в процессе CI/CD, в этом же процессе создается временный docker container, туда же деплоится база данных с некими базовыми данными, паблишится код с ветки, запускаются тесты. Тесты можно запускать с разной изоляцией, наиболее частая изоляция это уровень теста - каждый тест это отдельная сессия с изначальными данными из БД. После того как тест отрабатывает происходит roll-back всех данных в БД. Во время разработки тесты запускаю на локальном докер контейнере с той же изоляцией. В самом тесте иницилизируешь все необходимые данные, пишешь тест который повторяет некий бизнес сценарий, причем желательно использовать тот-же ui, а не функции напрямую (это позволяет framework где есть возможность эмулировать UI), верифицируешь результат и не стоит забывать про негативные сценарии. Как-то так, но я же не спец по тестированию, может у меня какой-то наивный или неправильный подход) круто, теперь понял да, я тоже такие тесты люблю Drakonian написал 11 часов назад: может у меня какой-то наивный или неправильный подход) ой забей я с опытом (возрастом) начинаю понимать что нет каких-то "правильных" подходов Drakonian likes this Quote очень крутые котейкиКому-то пизды дал - нужно сделать скрин обязательно. (с) Solo Share this post Link to post
Kurku #12404 Posted December 9, 2024 By sees написал 07.12.2024 в 00:02: Ещё бля про какой-то душняк про зум +- CTRL был, мол там у кого-то вёрстка съедет и пиздец. Я за целый год работы ни одной секунды в жизни не подумал об этой хуйне и всем поебать абсолютно. ну я хз, я постоянно делаю на сайтах зум и многие тупо поломаны %) причём делать особо ничего не надо, чтобы сделать зум "правильно" можно тупо запретить ей быть адаптивной после некоторого момента, тогда она не сломается Quote Share this post Link to post
Finesku #12405 Posted December 9, 2024 зум дефолтнаят хуйня на фронте че вы удивляетесь так scarppy likes this Quote Share this post Link to post
dolod777 #12406 Posted December 9, 2024 4 этапа на собес в яндекс коллеги, жизненно? Quote Лучший Share this post Link to post
Olololnet #12407 Posted December 9, 2024 dolod777 написал 19 минут назад: 4 этапа на собес в яндекс коллеги, жизненно? недавно читал пост в телеге, чел проходил эти этапы проходил, потом добавили ещё этап с литкодом. но на него не попал, т.к. получил ок оффер с другой стороны. видимо знал, что примерно даст яша и решил не тратить силы на проверку Quote Share this post Link to post
MacJei #12408 Posted December 9, 2024 Как думаете, лучше не связываться с криптой? Уже второй раз за месяц зовут в крипто-компанию аналитиком Quote "Мне надлежит наслаждаться над временем… пусть мир и ужаснется моей радости, и грубость его не поймет смысла слов моих." Рэйсбрук Удивительный Share this post Link to post
dolod777 #12409 Posted December 9, 2024 MacJei написал 2 минуты назад: Как думаете, лучше не связываться с криптой? Уже второй раз за месяц зовут в крипто-компанию аналитиком всё что я слышу о крипте "до жопы денег, надо туда" так что я хз. главное - не бухгалтером главным Quote Лучший Share this post Link to post
Just.Doit #12410 Posted December 9, 2024 MacJei написал 1 час назад: Как думаете, лучше не связываться с криптой а какие риски то? Quote очень крутые котейкиКому-то пизды дал - нужно сделать скрин обязательно. (с) Solo Share this post Link to post
Drakonian #12411 Posted December 9, 2024 Kurku написал 8 часов назад: By sees написал 06.12.2024 в 23:02: Ещё бля про какой-то душняк про зум +- CTRL был, мол там у кого-то вёрстка съедет и пиздец. Я за целый год работы ни одной секунды в жизни не подумал об этой хуйне и всем поебать абсолютно. ну я хз, я постоянно делаю на сайтах зум и многие тупо поломаны %) причём делать особо ничего не надо, чтобы сделать зум "правильно" можно тупо запретить ей быть адаптивной после некоторого момента, тогда она не сломается у меня большой моник и член постоянно делаю зум, на разных сайтах по разному, заивисит от сайта и контента так шо таки ты прав Quote Share this post Link to post
madvlaydin #12412 Posted December 10, 2024 Drakonian написал 13 часов назад: член тот самый 7см болт из анекдотов? Quote Share this post Link to post
Drakonian #12413 Posted December 10, 2024 madvlaydin написал 1 час назад: Drakonian написал 14 часов назад: член тот самый 7см болт из анекдотов? зато потом как достану 10см волыну все ахуеют Quote Share this post Link to post
Darkd3ad #12414 Posted December 10, 2024 Drakonian написал 08.12.2024 в 00:19: Lotus написал 07.12.2024 в 23:50: Drakonian написал 07.12.2024 в 23:06: смотря какие тесты наверное 99% времени я пишу интеграционные тесты (не вижу много смысла в юнит тестах) и трачу х2-х3 времени от разработки на это ) Для юнит тестов думаю число будет намного меньшим :( чето я так заебался от этих тестов, код в кайф писать, а тесты это пиздец, еще хуева гора тестов с моделями в текстовых файлах и чето меняется приходится это везде менять, короче ебал я тесты в рот вот чо ну у меня тут принято писать интеграционные и юниты на все подряд типо маперов, сервисов, контроллеров, дао, хуяйо, короче на все подряд ну я такими тестами много багов отлавливаю, не раз было такое что пишу тест - он фейлится - смотрю действительно такой-то случай не учел или опечатался или тупо ошибку сделал тоже заебывают но польза несомненная от них но у меня щас халява, все тесты написал я вот когда команда пишет тесты и чужие тесты фейлятся, а тебе надо в них разобрать вот это кромешный пиздец тут с тобой согласен пример типичного теста) Скрыть содержимое [Test] [HandlerFunctions('GenericConfirmationHandler,GenericMessageHandler')] procedure PostRevenueLinesSalesInvoicesWithPartiallyProcessedCostLines() var CDSProject: Record "BBW CDS dw_project"; CDSTransaction: array[2] of Record "BBW CDS dw_transaction"; CDSTransaction2: Record "BBW CDS dw_transaction"; CDSPurchaseOrderNumber: array[2] of Record "BBW CDS dw_purchaseordernumber"; RevenueLine: Record "BBW Revenue Line"; Item: Record Item; CRMProduct: Record "CRM Product"; CRMAccount: array[2] of Record "CRM Account"; CRMAccount2: Record "CRM Account"; Customer: array[2] of Record Customer; CDSRevenueLine: array[5] of Record "BBW CDS dw_revenueline"; IntegrationTableMapping: Record "Integration Table Mapping"; Transaction: Record "BBW Transaction"; Customer2: Record Customer; SalesHeader: Record "Sales Header"; SalesLine: Record "Sales Line"; SalesInvoiceScheduling: Record "BBW Sales Invoice Scheduling"; SalesInvoiceHeader: Record "Sales Invoice Header"; SalesInvoiceLine: Record "Sales Invoice Line"; CustLedgerEntry: Record "Cust. Ledger Entry"; PurchAndPayableSetup: Record "Purchases & Payables Setup"; CDSCostLine: array[5] of Record "BBW CDS dw_costline"; Vendor: Record Vendor; TransactionLinesStatus: Codeunit "BBWT Transaction Lines Status"; ItemInventoryByDefault: Codeunit "BBWT Item Inventory By Default"; CRMCustomTables: Codeunit "BBWT CRM Custom Tables"; SalesInvoiceCard: TestPage "Sales Invoice"; SalesInvoiceSchedulingPage: TestPage "BBW Sales Invoice Scheduling"; InvoiceScheduling: Enum "BBW Invoice Scheduling"; TransactionNoFilter: Text; CustomerFilter: Text; I: Integer; J: Integer; N: Integer; begin // [FEATURE] [CRM Integration Management] [GenerateSalesInvoicesFromRevenueLinesForeground] // [SCENARIO] GenerateSalesInvoicesFromRevenueLinesForeground() Generate Sales Invoices based on Sales Invoice Scheduling in foreground Initialize(); LibraryVariableStorage.Clear(); SetupCRM(); InitProjectDimension(); PurchAndPayableSetup.Get(); PurchAndPayableSetup.Validate("BBW Enable PO Line Date", true); PurchAndPayableSetup.Modify(true); // [GIVEN] A Vendor coupled to CRM Account CreateCoupledVendorAndAccount(Vendor, CRMAccount2); //[GIVEN] Project in CRM CreateCDSProject(CDSProject, CRMAccount2.AccountId); // [GIVEN] Two Customers and CRM Accounts for I := 1 to 2 do begin Clear(CDSProject); LibraryCRMIntegration.CreateCoupledCustomerAndAccount(Customer[I], CRMAccount[I]); Customer[I].Validate("BBW Invoice Scheduling", InvoiceScheduling::Daily); Customer[I].Modify(true); //[GIVEN] Project in CRM CreateCDSProject(CDSProject, CRMAccount[I].AccountId); //[GIVEN] Create and synch ransaction to BC from CRM CreateCDSTransaction(CDSTransaction[I], CDSProject.dw_projectId); IntegrationTableMapping.SetRange(Name, 'BBWTRANSACTION'); IntegrationTableMapping.FindFirst(); CRMIntegrationTableSynch.SynchRecord(IntegrationTableMapping, CDSTransaction[I].dw_transactionId, true, false); //[GIVEN] Get result BC Transaction Transaction.SetRange(Project, CDSProject.dw_projectId); Transaction.FindFirst(); CreateCDSPurchaseOrderNumber(CDSPurchaseOrderNumber[i], CRMAccount2.AccountId, CDSProject.dw_projectId); N := 5; for J := 1 to N do begin Clear(Item); Clear(CRMProduct); //[GIVEN] Create coupled Item and Product BindSubscription(ItemInventoryByDefault); LibraryCRMIntegration.CreateCoupledItemAndProduct(Item, CRMProduct); UnbindSubscription(ItemInventoryByDefault); //[GIVEN] Create CDS Revenue Line CreateCDSRevenueLine(CDSRevenueLine[J], CDSProject.dw_projectId, CDSTransaction[I].dw_transactionId, CRMProduct.ProductId); //[GIVEN] Synch CDS Revenue Line to BC IntegrationTableMapping.SetRange(Name, 'BBWREVENUELINE'); IntegrationTableMapping.FindFirst(); CRMIntegrationTableSynch.SynchRecord(IntegrationTableMapping, CDSRevenueLine[J].dw_revenuelineId, true, false); CreateCDSCostLine(CDSCostLine[j], CDSProject.dw_projectId, CDSTransaction[i].dw_transactionId, CRMProduct.ProductId, CDSPurchaseOrderNumber[i].dw_purchaseordernumberId, Format(CDSTransaction[i].dw_status), CDSTransaction[i].dw_servicedate); //Simulate that cost lines are partially processed into PO and PO was posted if J > 2 then begin CDSCostLine[j].Validate(dw_bcponumber, LibraryRandom.RandText(20)); CDSCostLine[j].Modify(); end; end; RevenueLine.SetRange("Transaction No.", Transaction."Transaction No."); Assert.AreEqual(N, RevenueLine.Count(), ''); CustomerFilter += Customer[I]."No." + '|'; TransactionNoFilter += Transaction."Transaction No." + '|'; end; CustomerFilter := CustomerFilter.TrimEnd('|'); TransactionNoFilter := TransactionNoFilter.TrimEnd('|'); //[GIVEN] Sales Invoice Scheduling SalesInvoiceScheduling.Init(); SalesInvoiceScheduling.Insert(true); SalesInvoiceScheduling.Validate("Customer Filter", CustomerFilter); SalesInvoiceScheduling.Validate("Invoice scheduling Filter", InvoiceScheduling::Daily); SalesInvoiceScheduling.Validate("Service Date Formula Filter", '..0D'); SalesInvoiceScheduling.Validate(Active, true); SalesInvoiceScheduling.Modify(true); //[WHEN] Invoke and confirm Run once action LibraryDialogHandler.SetExpectedConfirm(ActionQst, true); LibraryDialogHandler.SetExpectedMessage(SynchSuccessLbl); SalesInvoiceSchedulingPage.OpenEdit(); SalesInvoiceSchedulingPage.GoToRecord(SalesInvoiceScheduling); BindSubscription(CRMCustomTables); SalesInvoiceSchedulingPage.Runonce_promoted.Invoke(); UnbindSubscription(CRMCustomTables); //[THEN] Simulate syncrhonize NOW Transaction.Reset(); Transaction.SetFilter("Transaction No.", TransactionNoFilter); Transaction.FindSet(); Assert.AreEqual(2, Transaction.Count(), ''); repeat RevenueLine.SetRange("Transaction No.", Transaction."Transaction No."); RevenueLine.FindSet(); repeat CRMIntegrationTableSynch.SynchRecord(IntegrationTableMapping, RevenueLine.RecordId(), true, false); until RevenueLine.Next() = 0; until Transaction.Next() = 0; //[THEN] Sales Invoices are created for each Customer and Sales Invoice No. is correctly updated to CRM Clear(RevenueLine); Customer2.SetFilter("No.", CustomerFilter); Customer2.FindSet(); Assert.AreEqual(2, Customer2.Count(), ''); repeat SalesHeader.SetRange("Document Type", SalesHeader."Document Type"::Invoice); SalesHeader.SetRange("Sell-to Customer No.", Customer2."No."); SalesHeader.FindSet(); repeat SalesLine.SetRange("Document Type", SalesHeader."Document Type"); SalesLine.SetRange("Document No.", SalesHeader."No."); SalesLine.FindSet(); repeat RevenueLine.Get(SalesLine."BBW Revenue Line No."); CDSProject.SetRange(dw_projectnumber, SalesLine."BBW Project No."); CDSProject.FindFirst(); Transaction.Get(SalesLine."BBW Transaction No."); Assert.AreEqual(CDSProject.dw_projectnumber, SalesHeader."BBW Project No.", ''); Assert.AreEqual(SalesHeader."BBW Project No.", SalesLine."Shortcut Dimension 1 Code", 'Global Dimension 1 should be equal to project'); until SalesLine.Next() = 0; //[WHEN] Sales Invoice is fully posted LibraryDialogHandler.SetExpectedConfirm(PostSalesInvoiceLbl, true); SalesInvoiceCard.OpenEdit(); SalesInvoiceCard.GoToRecord(SalesHeader); TransactionLinesStatus.SetHasUnpostedCostLines(true); BindSubscription(TransactionLinesStatus); SalesInvoiceCard.Post.Invoke(); UnbindSubscription(TransactionLinesStatus); //[THEN] Posted Sales Invoice is created SalesInvoiceHeader.SetRange("Pre-Assigned No.", SalesHeader."No."); SalesInvoiceHeader.FindFirst(); //[THEN] Transaction status should not updated to posted for each transaction because some unprocessed cost lines exist SalesInvoiceLine.SetRange("Document No.", SalesInvoiceHeader."No."); SalesInvoiceLine.FindSet(); repeat Transaction.Get(SalesInvoiceLine."BBW Transaction No."); //Because we cant run job queues in unit tests we simulate transaction synchronization manually IntegrationTableMapping.SetRange(Name, 'BBWTRANSACTION'); IntegrationTableMapping.FindFirst(); CRMIntegrationTableSynch.SynchRecord(IntegrationTableMapping, Transaction.RecordId(), true, false); CDSTransaction2.SetRange(dw_name, Transaction."Transaction No."); CDSTransaction2.FindFirst(); Assert.AreEqual(CDSTransaction2.dw_status::Received, CDSTransaction2.dw_status, 'status must be received!'); until SalesInvoiceLine.Next() = 0; //[WHEN] Customer Ledger Entry Generated CustLedgerEntry.SetRange("Document Type", CustLedgerEntry."Document Type"::Invoice); CustLedgerEntry.SetRange("Document No.", SalesInvoiceHeader."No."); CustLedgerEntry.SetRange("Posting Date", SalesInvoiceHeader."Posting Date"); CustLedgerEntry.SetRange("Customer No.", SalesInvoiceHeader."Sell-to Customer No."); CustLedgerEntry.FindFirst(); //[THEN] Project No. and Id filled in CDSProject.SetRange(dw_projectnumber, SalesLine."BBW Project No."); CDSProject.FindFirst(); Assert.AreEqual(SalesHeader."BBW Project No.", CustLedgerEntry."BBW Project No.", ',CustLedgerEntry."BBW Project No."'); Assert.AreEqual(CDSProject.dw_projectId, CustLedgerEntry."BBW Project Id", 'CustLedgerEntry."BBW Project Id"'); Assert.AreEqual(SalesInvoiceHeader."Your Reference", CustLedgerEntry."Your Reference", 'Customer PO No. is not corret'); Assert.AreEqual(SalesHeader."BBW Project No.", SalesHeader."Shortcut Dimension 1 Code", 'Global Dimension 1 should be equal to project'); until SalesHeader.Next() = 0; until Customer2.Next() = 0; end; Фу бляяяя Quote Share this post Link to post
Zellar #12415 Posted December 14, 2024 (edited) @Ritsu twit Делай нормальный шаблон, который похож на сайт, где экранов хотя бы 3-4, с разными элементами. Шаблоны в инете можно найти. А вообще, лучший пет проет будет, это если сделаешь многостраничкник какой нибудь. А лучше сверстаешь инет магаз. Заодно и скилы свои проверишь. Ну я бы по лучше бы вникнул в методологию бэм. Либо вообще не юзай его, если не понимаешь пока что и впадлу разбираться. P.S. Что это за высерные padding-left у тебя стоят на заголовке и подзаголовке? И нахуя? P.S.S. Вообще такое чувство, что ты просто взял готовых решений и налипил их в одну солянку. Эт хуйня полная Edited December 14, 2024 by Zellar Quote Жиза для любопытныхЧекнул = пидор Share this post Link to post
Ritsu twit #12416 Posted December 15, 2024 (edited) Zellar написал 3 часа назад: Делай нормальный шаблон, который похож на сайт, где экранов хотя бы 3-4, с разными элементами. Шаблоны в инете можно найти. А вообще, лучший пет проет будет, это если сделаешь многостраничкник какой нибудь. А лучше сверстаешь инет магаз. Заодно и скилы свои проверишь. Ну я бы по лучше бы вникнул в методологию бэм. Либо вообще не юзай его, если не понимаешь пока что и впадлу разбираться. Привет, спасибо что глянул. Когда писал пробовал разное, компоненты и анимации находил на просторах сети, пробовал основы разных методологий в процессе, не вникал глубоко. От этого как солянка и выглядит, что правда. Остановился сейчас интуитивно на ITCSS, хочу в нем покопаться. По поводу магазина звучит как-то банальненько, но наверное это импактная линий развития. По бэм и ему подобным, казалось, что нужно уже трогать какой-то объемный проект, в котором понять как корректно собрать компоненты в подпапках и т.далее, сама философия нейминга особо и не принципиальна для меня. Zellar написал 3 часа назад: P.S.S. Вообще такое чувство, что ты просто взял готовых решений и налипил их в одну солянку. Эт хуйня полная Да, брал готовые решения, но их приходилось сильно перелопатить чтобы они корректно работали. Больше всего времени ушло именно на это. А почему это хуйня? Zellar написал 3 часа назад: Что это за высерные padding-left у тебя стоят на заголовке и подзаголовке? И нахуя? padding-left равен, компенсирует letter-spacing. Edited December 15, 2024 by Ritsu twit Quote Share this post Link to post
Zellar #12417 Posted December 15, 2024 Ritsu twit написал 10 часов назад: Zellar написал 13 часов назад: Делай нормальный шаблон, который похож на сайт, где экранов хотя бы 3-4, с разными элементами. Шаблоны в инете можно найти. А вообще, лучший пет проет будет, это если сделаешь многостраничкник какой нибудь. А лучше сверстаешь инет магаз. Заодно и скилы свои проверишь. Ну я бы по лучше бы вникнул в методологию бэм. Либо вообще не юзай его, если не понимаешь пока что и впадлу разбираться. Привет, спасибо что глянул. Когда писал пробовал разное, компоненты и анимации находил на просторах сети, пробовал основы разных методологий в процессе, не вникал глубоко. От этого как солянка и выглядит, что правда. Остановился сейчас интуитивно на ITCSS, хочу в нем покопаться. По поводу магазина звучит как-то банальненько, но наверное это импактная линий развития. По бэм и ему подобным, казалось, что нужно уже трогать какой-то объемный проект, в котором понять как корректно собрать компоненты в подпапках и т.далее, сама философия нейминга особо и не принципиальна для меня. Zellar написал 13 часов назад: P.S.S. Вообще такое чувство, что ты просто взял готовых решений и налипил их в одну солянку. Эт хуйня полная Да, брал готовые решения, но их приходилось сильно перелопатить чтобы они корректно работали. Больше всего времени ушло именно на это. А почему это хуйня? Zellar написал 13 часов назад: Что это за высерные padding-left у тебя стоят на заголовке и подзаголовке? И нахуя? padding-left равен, компенсирует letter-spacing. 1. Бэм это не только нейминг. Ты не особо понял что это вообще. Советую по лучше разобраться. На твоем пет проекте ты и не увидишь преимущества бэм. Поэтому я советую сверстать какой нибудь большой инет магаз, где есть множество похожих блоков, но которые отличаются в мелочах. Если ты все сделаешь правильно, то ты сможешь менять элементы местами, при этом верстка не будет ломаться. 2. Потому что берешь готовые решения но не особо понимаешь как сделать такое самостоятельно. У тебя в будущем могут попросить тоже сделать что нибудь не стандартное, но ты не сможешь это сделать быстро. Поэтому видишь какую то штуку, попробуй сначала самостоятельно сделать ее. Если не можешь, ищи пробелы в знаниях, изучай и пробуй снова. Например тот же кубик у тебя работает не очень. Он прикольно при наведении двигается, но ты не подумал как это будет на мобилках работать. Как пользователь поймет, что надо нажать на кубик, чтобы появилась ссылка? Никак. В инете есть много прикольных штук, но которые работают только на компе, а на мобилках шляпа полная как раз из-за того, что элементы заточены на взаимодействие только по наведению мышки. 3. Окей я понял. Значит ты выбрал не тот шрифт для такого. Ты превысил значения letter-spacing для этого шрифта. letter-spacing не должен давать расстояние для последней буквы. Представь что в шрифте у каждой буквы есть ячейка. С помощью letter-spacing ты каждой букве в ячейке добавляешь расстояние. И вот то расстояние которое наезжало на другие ячейки букв по сути у тебя добавилось после последней буквы. В safari например движок браузера может по другому отрисовать это поведение, я конечно не тестил там, может и все нормально. Ну как исправление пойдет, окей. Но если тебе нужна надпись именно в таком стиле, то лучше поискать шрифты которые именно это и делают P.S. Ты не пофиксил баг, который бросается в глаза Quote Жиза для любопытныхЧекнул = пидор Share this post Link to post
Just.Doit #12418 Posted December 15, 2024 Zellar написал 1 час назад: 1. На твоем пет проекте ты и не увидишь преимущества бэм. как и со всеми практиками бигтеха - возможно они ему и не нужны, если он не увидет преимущества на проектах своего размера... думайте Quote очень крутые котейкиКому-то пизды дал - нужно сделать скрин обязательно. (с) Solo Share this post Link to post
Zellar #12419 Posted December 15, 2024 Just.Doit написал 2 часа назад: Zellar написал 3 часа назад: 1. На твоем пет проекте ты и не увидишь преимущества бэм. как и со всеми практиками бигтеха - возможно они ему и не нужны, если он не увидет преимущества на проектах своего размера... думайте Ну не совсем. Ты можешь заготовки сделать для других проектов. И с помощью бэм это намного удобнее. То есть даже не в бигтехе это юзабельно Quote Жиза для любопытныхЧекнул = пидор Share this post Link to post
Ritsu twit #12420 Posted December 15, 2024 (edited) Zellar написал 11 часов назад: 1. Бэм это не только нейминг. Ты не особо понял что это вообще. Советую по лучше разобраться. На твоем пет проекте ты и не увидишь преимущества бэм. Поэтому я советую сверстать какой нибудь большой инет магаз, где есть множество похожих блоков, но которые отличаются в мелочах. Если ты все сделаешь правильно, то ты сможешь менять элементы местами, при этом верстка не будет ломаться. Услышал, дельно. Мб есть примеры макетов что подразумеваешь, которые позволяют прочувствовать всю бэм усладу. Zellar написал 11 часов назад: 2. Потому что берешь готовые решения но не особо понимаешь как сделать такое самостоятельно. У тебя в будущем могут попросить тоже сделать что нибудь не стандартное, но ты не сможешь это сделать быстро. Поэтому видишь какую то штуку, попробуй сначала самостоятельно сделать ее. Если не можешь, ищи пробелы в знаниях, изучай и пробуй снова. Например тот же кубик у тебя работает не очень. Он прикольно при наведении двигается, но ты не подумал как это будет на мобилках работать. Как пользователь поймет, что надо нажать на кубик, чтобы появилась ссылка? Никак. В инете есть много прикольных штук, но которые работают только на компе, а на мобилках шляпа полная как раз из-за того, что элементы заточены на взаимодействие только по наведению мышки. Твоя правда, с кубом схалтурил под мобилки, иначе бы пришлось от него отказаться, а время он уже схавал. Хотел уже поставить точку с данным пэт-проектом и подвигаться дальше. По поводу нестандартных компонентов, мне на данный момент видится более корректным путь, когда ты находишь компонент и допиливаешь его под себя попутно изучив больше половины его структуры и логики. Да это долго, но и выдать что-то подобное самому, видится мне каким-то холостым процессом, особенно если учитывать, что эти компоненты больше из области искусства и импровизации, чем структурно понятные. Такое в голову может и не прийти никогда, а кто-то сделал. Но это если говорить о чем-то экстравагантном, единичном. Стандартные компоненты, стараюсь писать сам. Zellar написал 11 часов назад: 3. Окей я понял. Значит ты выбрал не тот шрифт для такого. Ты превысил значения letter-spacing для этого шрифта. letter-spacing не должен давать расстояние для последней буквы. Представь что в шрифте у каждой буквы есть ячейка. С помощью letter-spacing ты каждой букве в ячейке добавляешь расстояние. И вот то расстояние которое наезжало на другие ячейки букв по сути у тебя добавилось после последней буквы. В safari например движок браузера может по другому отрисовать это поведение, я конечно не тестил там, может и все нормально. Ну как исправление пойдет, окей. Но если тебе нужна надпись именно в таком стиле, то лучше поискать шрифты которые именно это и делают Не знал что это от шрифта зависело, думал они все так себя ведут, понял про ячейки. Решать проблему на уровне шрифта, если нужен приличный letter-spacing. С другой стороны, могу уменьшать расстояние между буквами как гармошку, исходя из размера экрана. Шрифты с большим letter-spacing, не будут меня кусать в обратную сторону? Zellar написал 11 часов назад: P.S. Ты не пофиксил баг, который бросается в глаза Ага, зафиксил. https://egorloiola.github.io/gio-full/ Edited December 15, 2024 by Ritsu twit Quote Share this post Link to post