<bgdev />free

| |  


All tags 2023 9may ai algorithm alpha amd american api argon2 arm asm asmbb assembler attachment awareness balgaria bay888 bcrypt bender beta bgdev-next bgdev-next.👍 big.data bitchnigga bitcoin bmw boi borg brexit bug bulgaria business c cad chat cloud computer-names console crossorigin deprivation desktop dna dotnet email eupl falling feature forum foundation fp fresh fun game gcc github goats google gpl gpt gpt.3.5 gypsies happiness harvard hash improvement include investment it java javascript js kleta kleta.maqka.balg lambi language learning leftovers legend level levenshtein.dist libx license linkedlist linux m0 ma mcafee mele microsoft minimag minimalism negro net nginx nigga not.a.bug oop paradigm parler patterns perception persuasion pipe play.station politics populi pornhub pow pro programming protonmail python reba rust sci-fi scripting seks seo server shell sleep smartbeauty soft-skills sqlite srabska sse starship sugerface syntax tablet tailwindcss telegram theme thug troll80lvl tutanota typescript uacme ui uk unix untermensch upload uptime usa utilities ux vb via viber virtual.reality vox vps vulnerable war wasm weapons-grade web windows word x86 xbox xss youtube zig ziglang Übermensch БОКЕБЪЛГАРИН БЪ БЪлгария Белезниците Били Били.Белезниците БялДонор Веган Виста Възраждане ГЛУПАК Гана Глиста ЕС Казарма Копейкин Мода.и.овча.мисъ НЕКАДЪРНИК НРБ ПО-ЗЛЕ.И.ОТ.РАБИ Подкасти Разни Румен СИК СКУМ СетенЧук Скум ТИР Туче Украйна Урсула Яначков авангард аз айфонджия алгоритми амбиции анархизъм антиваксъри армения аудио аутисти бази.данни бакъп без без.пръчове безпросвета бенчмарк биготи биомаса бира боклук борисов ботев брадва булшит бъг бъгове бял ваксина вандал век венерика викинги вицове вишу война вървежен гана ганорник гей гейщина германия герои гешев глупак говеда групировка гюбек данъкоплатец двойни.стандарти дедотия демокрация дизайн дисциплина добитък докери долар донори држава дришльо дрон ебане еврогейски.съюз езици експеримент електроника електроника.s2 емиграция ендпойнт енум ерген ергономия жалкар задача затоплизъм защита здраве златен злато игри идеали идиократ идиократи идиокрация идиот избори избори.рабин изкуство икономика имбецили имейл инвестиране инокулация инструмента интервю ипад искам.да.си.реда казах камшикодържач капитализъм карабах караница картечница кино клавиатура ковид19 колайдер колям.кур комари комплексар комунизъм консолидация конспирации космонавтика кофа кофит-19 краставица криптовалути курви кучелюбци лайно лаладжия лаптоп либерастия литература лоши.практики луд лъжеучени лъжец любов майни майтапи малоумници мафия мениджмънт месо местене метавселена метафизика механика мистика мисъл мода мода.овча.мисъл модерация морал мутра мутри наука национализъм не.it негър некадърник некадърници неон нидерландия овча овчи олигофрени организация офтопик парички партия педал педераси пенджури пенсия пишока плюскане победа погромист поезия политика порно посредствен почивка празници прасе превод предалщина програмиране проект проста простотии против.правилата проф пръч пръч.дришльо пръчка психика психични.болести психология пустиняк путин путката путьо рабин рабин.е.шибан.пе работа радост разврат разни разработка расизъм резерват рейтинг реклама рекламен религия рест ризи ропче ропчета русия руски.език рутина самоковска сасипаха секира село селяндур сериали сериозно.програм сетен сеянин симулация скопяване скръм слушалки сортиране софия софтуер софтуни социализъм спектрометър спринтове сране стандарти стил стуйо стюи сушилня сцена съвет съм сън сървър сърничка таб ташаци телевизия тема територията терминология термояд технологии титли традиция тролинг тръмп туба туче тъпак тъпанари тъпня уиндоус украйна умнокрасивци фалит фантастика фашизъм фейк.акаунти физика филми форум форумни.проекти футбол хазарт хамали харабия хардуер хахаха хомофобия хостинг храна хумор цайко цайси целофан цензура цензурра циганин чалга чалгар чекии чернокраки честота чипове чнг чужбина чук шпация щайга юан яката яко ям 🔨 😂 🪓


Консултации по енджина - JS - нотификации.

  

0 1 2


  stewie  Създадено на 25.07.2020, видяно: 1794 пъти. #693

Защо? Нали джсто трябва да прочете от базата дали първо юзъра е енейбълнал нотификациите, какво общо има wantedevents, евенти не се взимат ако тоя флаг е false за юзъра.



  johnfound  Създадено на 25.07.2020, видяно: 2065 пъти. #699
stewie

Защо? Нали джсто трябва да прочете от базата дали първо юзъра е енейбълнал нотификациите, какво общо има wantedevents, евенти не се взимат ако тоя флаг е false за юзъра.

JS-та ще знае дали потребителят е разрешил или забранил нотификациите според това дали чекбокса е чекнат или не. Той има достъп до него – няма никаква нужда да гледа в базата данни и да комуникира с бакенда.

А виж, какво ще е началното състояние на чекбокса и как точно ще се пази то е друг въпрос. Лично аз не съм много сигурен как трябва да се направи.

Единият вариант е да се направи на бакенда – в профила на потребителя и съответно като се рендира страницата да се сетва чекбокса в нужната стойност.

Другият вариант е да се използва сесионно куки на фронт-енда - което да се създава от JS-та при превключване на чекбокса. И съответно това куки да се гледа пак от бакенда при рендиране на страницата. Това ще направи тези сетинги валидни само за текущата сесия, което не е лошо само по себе си.



  stewie  Създадено на 25.07.2020, видяно: 1794 пъти. #703
johnfound
stewie

Защо? Нали джсто трябва да прочете от базата дали първо юзъра е енейбълнал нотификациите, какво общо има wantedevents, евенти не се взимат ако тоя флаг е false за юзъра.

JS-та ще знае дали потребителят е разрешил или забранил нотификациите според това дали чекбокса е чекнат или не. Той има достъп до него – няма никаква нужда да гледа в базата данни и да комуникира с бакенда.

А виж, какво ще е началното състояние на чекбокса и как точно ще се пази то е друг въпрос. Лично аз не съм много сигурен как трябва да се направи.

Единият вариант е да се направи на бакенда – в профила на потребителя и съответно като се рендира страницата да се сетва чекбокса в нужната стойност.

Другият вариант е да се използва сесионно куки на фронт-енда - което да се създава от JS-та при превключване на чекбокса. И съответно това куки да се гледа пак от бакенда при рендиране на страницата. Това ще направи тези сетинги валидни само за текущата сесия, което не е лошо само по себе си.

Ама аз през цялото време това имам впредвид - в таблицата с потребителите където пазиш език на интерфейса, тема, пароли и прочие да се сложи един бул филд notificationsEnabled или подобно. Реално точно JS-а трябва да достъпи таблицата за юзъра през съответният ти екшън на контролера (или както там се нарича при теб) за да провери в реално време дали този чекбокс е натиснат или не. Чисто дизайнерски не виждам проблем над Език на интерфейса да се сложи тоя чекбокс.



  johnfound  Последно редактирано на 25.07.2020 от johnfound, видяно: 2045 пъти. #717
stewie

Реално точно JS-а трябва да достъпи таблицата за юзъра през съответният ти екшън на контролера (или както там се нарича при теб) за да провери в реално време дали този чекбокс е натиснат или не. Чисто дизайнерски не виждам проблем над Език на интерфейса да се сложи тоя чекбокс.

Нещо май говорим за различни неща. Аз говоря за чекбокс, който да се намира на всяка страница на сайта - в главният интерфейс (този със черните бутони) и откъдето по всяко време да можеш да си пуснеш и спреш нотификациите.

Настройките във профила на потребителя са ясни как ще се направят и там да – трябва да е през бакенда, но няма нищо трудно да се добави още една опция.



  stewie  Създадено на 25.07.2020, видяно: 1794 пъти. #721
johnfound
stewie

Реално точно JS-а трябва да достъпи таблицата за юзъра през съответният ти екшън на контролера (или както там се нарича при теб) за да провери в реално време дали този чекбокс е натиснат или не. Чисто дизайнерски не виждам проблем над Език на интерфейса да се сложи тоя чекбокс.

Нещо май говорим за различни неща. Аз говоря за чекбокс, който да се намира на всяка страница на сайта - в главният интерфейс (този със черните бутони) и откъдето по всяко време да можеш да си пуснеш и спреш нотификациите.

Настройките във профила на потребителя са ясни как ще се направят и там да – трябва да е през бакенда, но няма нищо трудно да се добави още една опция.

Мда определено различни визии имаме. Все пак тоя чекбокс трябва да пише някъде, иначе къде ще му запазиш стейта ? Апропо на мобилната тема анкора за unread въобще не е имплементиран. Хората се подлъгват от другите теми.



  johnfound  Създадено на 25.07.2020, видяно: 2032 пъти. #725
stewie

Мда определено различни визии имаме. Все пак тоя чекбокс трябва да пише някъде, иначе къде ще му запазиш стейта ? Апропо на мобилната тема анкора за unread въобще не е имплементиран. Хората се подлъгват от другите теми.

За нотификациите започнах да пиша нещо във бакенда и става горе долу нормално. Дай утре по някое време да продължим темата - ще ми е по-ясно, а може да имам и нещо готово вече с което да се работи.

А това за мобилната тема не го разбрах. За връзката към първото непрочетено мнение ли говориш, или за нещо друго? И коя мобилна тема? "mobile"?



  stewie  Създадено на 25.07.2020, видяно: 1794 пъти. #726
johnfound
stewie

Мда определено различни визии имаме. Все пак тоя чекбокс трябва да пише някъде, иначе къде ще му запазиш стейта ? Апропо на мобилната тема анкора за unread въобще не е имплементиран. Хората се подлъгват от другите теми.

За нотификациите започнах да пиша нещо във бакенда и става горе долу нормално. Дай утре по някое време да продължим темата - ще ми е по-ясно, а може да имам и нещо готово вече с което да се работи.

А това за мобилната тема не го разбрах. За връзката към първото непрочетено мнение ли говориш, или за нещо друго? И коя мобилна тема? "mobile"?

Окей, свиркай ако искаш нещо за JS-a. Точно за непрочетените мнения в темата "mobile". Като я сравня с дефолтната в нея няма анкор към <име на тема>!markbyid или нещо таковa беше (нямам непрочетени в момента за да видя пътят). Всъщност в wwwroot къде е дефолтната тема ?



  johnfound  Последно редактирано на 25.07.2020 от johnfound, видяно: 2021 пъти. #727
stewie

Точно за непрочетените мнения в темата "mobile". Като я сравня с дефолтната в нея няма анкор към <име на тема>!markbyid или нещо таковa беше (нямам непрочетени в момента за да видя пътят). Всъщност в wwwroot къде е дефолтната тема ?

Ето тука е: templates/mobile/thread_info.tpl : 58 - за тази връзка се използва иконката "съобщение", която, когато е сива, значи, че няма нови мнения, а когато е жълта, освен че показва, че има нови съобщения, е и връзка към първото непрочетено мнение. Има и закачен хинт, да изскача, но на мобилен телефон едва ли се вижда.

Но явно това е страшно не интуитивно – всички се оплакват, че нямало такава връзка... Но честно казано, тази тема е разработвана много, много отдавна и въобще не ми се връща към нея да я мисля как да се оправи...



  stewie  Създадено на 26.07.2020, видяно: 1794 пъти. #736

Идея. Трябва да намеря в темплейтите секцията, която рендерва червените бутони. Слагам чекбокс. onClick съответно слагам/махам куки. connect() в events. js съответно проверява има ли го или не и тогава дърпа нотификациите. По този начин не се изгубвам в неразбираемият за мен асемблерски код. Какво ще кажеш? Реално докато юзъра не си изчисти кукитата няма проблем и ще се сторне до следващ логин. Пробвах и Sql конзолата със select from tablename limit 10,с имена на таблици, които виждам в asm-тата. Нищо не ми връща.



  Дон Реба  Създадено на 26.07.2020, видяно: 2001 пъти. #737

най-нормалното което всеки ще търси първо е нотификациите да се изключват от профила сега ясно че форума може да се чете и от нерегистрирани,ама какво ги мислите тях



  johnfound  Последно редактирано на 26.07.2020 от johnfound, видяно: 1994 пъти. #739
stewie

Ок, мобилната тема се брои за отсвирена. Идея. Трябва да намеря в темплейтите секцията, която рендерва червените бутони. Слагам чекбокс. onClick съответно слагам/махам куки. connect() в events. js съответно проверява има ли го или не и тогава дърпа нотификациите. По този начин не се изгубвам в неразбираемият за мен асемблерски код. Какво ще кажеш? Реално докато юзъра не си изчисти кукитата няма проблем и ще се сторне до следващ логин. Пробвах и Sql конзолата със select * from tablename limit 10,с имена на таблици, които виждам в asm-тата. Нищо не ми връща.

Да, горе-долу и аз така го виждам... Допълнително има плюс, че на различните устройства и браузъри юзера ще може да има различни настройки.

Даже се чудя дали не е добра идея и изборът на скина да се направи така...

А за таблиците в базата данни - виж схемата на базата: source/create.sql

Има таблици, които може и да са празни още, а има и такива от които постоянно всичко се изтрива - например буфера на евентите.

ЕДИТ: А да, бутоните за черната навигация (глобална) са във файла main_html_start.tpl



  johnfound  Създадено на 26.07.2020, видяно: 1991 пъти. #740
Дон Реба

най-нормалното което всеки ще търси първо е нотификациите да се изключват от профила сега ясно че форума може да се чете и от нерегистрирани,ама какво ги мислите тях

От една страна си прав, но от друга, хората се оплакваха от нотификациите главно на мобилни устройства. Тоест ако го напрвим със профила, юзера ще трябва да го включва и изключва всеки път като влиза от различно устройство. А по-вероятно когато влезе първият път от мобилно устройство ще го изключи и повече няма да го включи. Така накрая никой няма да я ползва тая функция. А тя е тип "социална" - увеличава ангажимента на участниците.



  40oz  Създадено на 26.07.2020, видяно: 1975 пъти. #744

Откъм социални функции ще е готино да можеш да лайкваш мнения. Иначе нотификациите са доста дразнещи, по-добре да могат да се спират глобално за юзър, а не за устройство. Предполагам повече от потребителите са на мобилни така или и аче, но там основния проблем е писане на мнения където редактора е почти неизползваем.



  johnfound  Създадено на 26.07.2020, видяно: 1969 пъти. #745
40oz

...но там основния проблем е писане на мнения където редактора е почти неизползваем.

Определено направих всичко възможно да направя редактора максимално компактен и поне отчасти удобен за мобилни потребители. Аз самият не ползвам интернет през телефона, така че може и да не съм се сетил за нещо. Но пък приемам предложения от недоволни. Обаче поне малко по-конструктивни от "редактора в почти неизползваем".



  Евлампи  Създадено на 26.07.2020, видяно: 1959 пъти. #746

За нотификациите има и една друга възможна линия - да се шибнат в компонент-контейнер който вече с цсс и джс да се дресира и като размери и като поведение. Оттам параметрите на дресировката може да се шибат в локал сторидж или направо юзърските преференции на сървъра.

Впрочем как става разпознаването дали отсреща има десктоп или мобилна чекия? Мобайл сафари на айпадос се репортва като десктоп сафари на макос обаче и на айпад нотификациите ме настъпват леко по пръстите особено като е малко повече почитаемата аудитория



  Евлампи  Създадено на 26.07.2020, видяно: 1964 пъти. #747

А, сега се сетих и за друго, какви са ограниченията на браузърския дев/рънтайм откъм дипендънсита? Цеесеса се компилира от лесс при билдването обаче джаваскрипта е ванила, до каква степен може да се добавят/променят дипендънсита (след надлежно обсъждане разбира се)?

Също какво е съпортваното дъно за браузър, само Зафода ли участва от ИЕ6 :)



  stewie  Последно редактирано на 26.07.2020 от stewie, видяно: 1794 пъти. #748

Джон, прилагам ти два файла тук. В main_html_start.tpl съм сложил един анкор. Чекбокс не може да съществува до бутоните, понеже цялото разпъване/свиване на този див е направено с чекбокс и други не могат да се рендерират.

Затова съм сложил ето тази селяния

<a href="javascript:switchNotificationCookie();" class="btn">Enable/Disable Notifications</a>

Вече там с локализацията ти ще си я бараш. В realtime.js съм направил следните промени:

function getCookie(cname) {
  var name = cname + "=";
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(';');
  for(var i = 0; i <ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}

function setCookie(cname, cvalue, exdays) {
  var d = new Date();
  d.setTime(d.getTime() + (exdays*24*60*60*1000));
  var expires = "expires="+ d.toUTCString();
  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

Прилично откраднати от W3Schools.

Този нов метод :



function switchNotificationCookie() {
	var cname = "notificationsEnabled";
	
	if(getCookie(cname) == "true") {
		setCookie(cname, "false", -1);
	} else {
		setCookie(cname, "true", 365);
	}
}

И промяната в connect() :


function connect() {
  if (source) disconnect();
  
  if (getCookie("notificationsEnabled") != "true") return;
  
  source = new EventSource("/!events?events=" + WantEvents);
  StartTime = Date.now()/1000;
  listSourceEvents.forEach( function(value) { source.addEventListener(value.event, value.handler) } );
}


  stewie  Създадено на 26.07.2020, видяно: 1794 пъти. #767
Elim Garak

Напротив - табовете са грешни, защото много тулове и ИДЕта могат да форматират сами кода, и имат опция за максимална дължина да реда. Като си сложиш на себе си таб с различна широчина от тази, която ползват другите от екипа и форматирането почва да се намазва.

Това беше преди. Сега има конфиг файлове, които идетата четат и прилагат като форматиране. Също и при чекин в репото има тулуве.



  johnfound  Създадено на 27.07.2020, видяно: 1888 пъти. #792

Така, тествах го. По принцип работи. Но има няколко забележки:

  1. Мястото на бутона трябва да е малко по-долу. Аз го преместих, така че няма проблеми. Но, има чисто дизайнерски проблеми:

    • Добре е бутона да е с икона, а не текст - твърде много място заема, а на другите езици още повече. Аз мога да я нарисувам, но изобщо не мога да се сетя как да изглежда. Ще мисля, но и предложения са добре дошли.

    • Добре е бутона да има индикация в какво състояние са нотификациите. Самият вид ще е в CSS-а, но от JS трябва да се превключат класовете при смяна на състоянието.

  2. По кода - в switchNotificationCookie трябва да се вика connect() за да ъпдейтне връзката:

    function switchNotificationCookie() {
      var cname = "notificationsEnabled";
    
      if(getCookie(cname) == "true") {
        setCookie(cname, "false", -1);
      } else {
        setCookie(cname, "true", 365);
      }
    
      connect();
    }
    
  3. Следващото е козметика, но малко дразни: notificationsEnabled всъщност съществува само със стойност "true". Вместо "false" ти го изтриваш. Това е само по себе си OK и много даже елегантно. Но защо тогава кукито трябва да има някаква стойност и да се проверява за нея? По-добре да се гледа не стойността а самото му съществуване.

  4. Струва ми се, че състоянието по подразбиране трябва да е "включено" иначе, потребителите ще го включват чак когато разберат че има такава функция.

  5. Firefox-а ми дава някакво предупреждение в конзолата за това куки, но не знам какво значи:

    Firefox

    Cookie “notificationsEnabled” will be soon rejected because it has the “sameSite” attribute set to “none” or an invalid value, without the “secure” attribute. To know more about the “sameSite“ attribute, read https://developer.mozilla.org/docs/Web/HTTP/Headers/Set-Cookie/SameSite 127.0.0.1:8090:431:2

    Някаква идея какво значи това?



  Elim Garak  Създадено на 27.07.2020, видяно: 1881 пъти. #798

хрома иска sameSite атрибут на кукита, иначе ги реже, явно и ФФ ще го вкарват


0 1 2


Консултации по енджина - JS - нотификации.

  



AsmBB v3.0 (check-in: 7544654b24928b93); SQLite v3.47.0 (check-in: 03a9703e27c44437);
©2016..2024 John Found; Licensed under EUPL; Powered by Assembly language Created with Fresh IDE