<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 негър некадърник некадърници неон нидерландия овча овчи олигофрени организация офтопик парички партия педал пенджури пенсия пишока плюскане победа погромист поезия политика порно посредствен почивка празници прасе превод предалщина програмиране проект проста простотии против.правилата проф пръч пръч.дришльо пръчка психика психични.болести психология пустиняк путин путката путьо рабин рабин.е.шибан.пе работа радост разврат разни разработка расизъм резерват рейтинг реклама рекламен религия рест ризи ропче ропчета русия руски.език рутина самоковска сасипаха секира село селяндур сериали сериозно.програм сетен сеянин симулация скопяване скръм слушалки сортиране софия софтуер софтуни социализъм спектрометър спринтове сране стандарти стил стуйо стюи сушилня сцена съвет съм сън сървър сърничка таб ташаци телевизия тема територията терминология термояд технологии титли традиция тролинг тръмп туба туче тъпак тъпанари тъпня уиндоус украйна умнокрасивци фалит фантастика фашизъм фейк.акаунти физика филми форум форумни.проекти футбол хазарт хамали харабия хардуер хахаха хомофобия хостинг храна хумор цайко цайси целофан цензура цензурра циганин чалга чалгар чекии чернокраки честота чипове чнг чужбина чук шпация щайга юан яката яко ям 🔨 😂 🪓


Възможно ли е да се напише еднопасов URL-сплитер?

  

0 1


  johnfound  Създадено на 03.07.2023, видяно: 448 пъти. #93648

В смисъл, функция, която да разделя URL на компоненти, относително коректен и да прави разделянето с едно минаване през стринга с URL? Или ако щете със сложност O(n).

Относително коректен означава, ако има на входа валидно URL, да го разделя коректно. Ако има невалидно URL, може да го разделя некоректно, но трябва да детектира, че URL-то е невалидно.

Всички елементи в URL-то може и да ги няма.



  waldorf  Създадено на 03.07.2023, видяно: 444 пъти. #93649

Пробвал ли си там с разните му генератори на парсери по граматики които генерират крайни автомати?



  johnfound  Създадено на 03.07.2023, видяно: 430 пъти. #93650
palavrov

Пробвал ли си там с разните му генератори на парсери по граматики които генерират крайни автомати?

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



  Stilgar  Създадено на 03.07.2023, видяно: 429 пъти. #93652

O(N) със сигурност защото различните части на URL-то са константа и може да си ги събереш с един pass и после да пробваш различни неща върху списъка от части, single pass не знам...



  Реконструктор  Създадено на 03.07.2023, видяно: 417 пъти. #93655

Не виждам що да не може



  waldorf  Последно редактирано на 03.07.2023 от waldorf, видяно: 415 пъти. #93656
johnfound
palavrov

Пробвал ли си там с разните му генератори на парсери по граматики които генерират крайни автомати?

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

Парсер генераторите са вуду магии с дошли от праисторически митичнии програмисти които отдавна не живеят по нашите земи. Едва ли и чак толкова добрите програмисти които редовно ги ползват са наясно как точно работят затова може смело да ги погледнеш.

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



  johnfound  Създадено на 04.07.2023, видяно: 380 пъти. #93662

Добре, конкретен въпрос. По какво се отличава хоста от пътя?

Ясно, че ако има порт, то това преди него е хост. А ако няма изрично споменат порт?

Ето и списък на компонентите:

  struct URLparts
    .scheme    dd  ?   ; https://  двойния слеш част от схемата ли е или разделител?
    .user      dd  ?   ; username:
    .password  dd  ?   ; passw0rd@
    .host      dd  ?   ; localhost
    .port      dd  ?   ; :8080
    .path      dd  ?   ; /path/path/path/file.txt
    .query     dd  ?   ; ?arg=adoifjas
    .fragment  dd  ?   ; #local_fragment
  ends

Примери:

    /path/path/file.txt  просто абсолютен път на текущия хост (от рута)
    path/path/file.txt   относителен път на текущия хост, спрямо текущия път.
    host/path/file.txt   абсолютен път на хоста "host"
    https://host/path/file.txt  първото след схемата е хоста? Или след двойния слеш?
    user@host/path/file.txt     първото след юзера е хоста? Или не?
    google.com?q=something@myhost/path/ тук хоста е myhost, а не google.com

Реално в момента ми е трудно да предположа как да се различи вторият от третият пример? Или да се промени начина на запис, така че да са различими...

Някакви идеи-коментари?



  Golden Gega  Последно редактирано на 04.07.2023 от Golden Gega, видяно: 376 пъти. #93663

Има си стандартни портове за http - 80, https - 443 ако се не лъжа и т.н.

Ако ти се занимава (което не ме учудва) с това нещо си потърси url regex



  Major Obvious  Създадено на 04.07.2023, видяно: 362 пъти. #93668
johnfound

Добре, конкретен въпрос. По какво се отличава хоста от пътя?

Ясно, че ако има порт, то това преди него е хост. А ако няма изрично споменат порт?

Ето и списък на компонентите:

  struct URLparts
    .scheme    dd  ?   ; https://  двойния слеш част от схемата ли е или разделител?
    .user      dd  ?   ; username:
    .password  dd  ?   ; passw0rd@
    .host      dd  ?   ; localhost
    .port      dd  ?   ; :8080
    .path      dd  ?   ; /path/path/path/file.txt
    .query     dd  ?   ; ?arg=adoifjas
    .fragment  dd  ?   ; #local_fragment
  ends

Примери:

    /path/path/file.txt  просто абсолютен път на текущия хост (от рута)
    path/path/file.txt   относителен път на текущия хост, спрямо текущия път.
    host/path/file.txt   абсолютен път на хоста "host"
    https://host/path/file.txt  първото след схемата е хоста? Или след двойния слеш?
    user@host/path/file.txt     първото след юзера е хоста? Или не?
    google.com?q=something@myhost/path/ тук хоста е myhost, а не google.com

Реално в момента ми е трудно да предположа как да се различи вторият от третият пример? Или да се промени начина на запис, така че да са различими...

Някакви идеи-коментари?

Ти всички възможни видове урл-та на света ли искаш да парсваш или ще се ограничиш до някое подмножество? :) Конкретно в HTTP протокола, хоста не е опционален елемент и първите ти два примера не са валидни урл-та. Спецификацията я има тук: https://datatracker.ietf.org/doc/html/rfc1738



  BIGBUGEX  Последно редактирано на 04.07.2023 от BIGBUGEX, видяно: 346 пъти. #93671

Преди много време правих собствено рутиране, като държах съдържанието на файловете в паметта. Това с nginx, и поддомейните ми бяха като контролери (от схемата MVC). Но до колкото си спомням ползвах някакво (С) апи преди фцги интерфейса. Трябва да погледна. Сайта беше на С++.

Едит: libfcgi.a е библиотеката.



  Stilgar  Създадено на 04.07.2023, видяно: 334 пъти. #93673
johnfound

Добре, конкретен въпрос. По какво се отличава хоста от пътя?

Ясно, че ако има порт, то това преди него е хост. А ако няма изрично споменат порт?

Ето и списък на компонентите:

  struct URLparts
    .scheme    dd  ?   ; https://  двойния слеш част от схемата ли е или разделител?
    .user      dd  ?   ; username:
    .password  dd  ?   ; passw0rd@
    .host      dd  ?   ; localhost
    .port      dd  ?   ; :8080
    .path      dd  ?   ; /path/path/path/file.txt
    .query     dd  ?   ; ?arg=adoifjas
    .fragment  dd  ?   ; #local_fragment
  ends

Примери:

    /path/path/file.txt  просто абсолютен път на текущия хост (от рута)
    path/path/file.txt   относителен път на текущия хост, спрямо текущия път.
    host/path/file.txt   абсолютен път на хоста "host"
    https://host/path/file.txt  първото след схемата е хоста? Или след двойния слеш?
    user@host/path/file.txt     първото след юзера е хоста? Или не?
    google.com?q=something@myhost/path/ тук хоста е myhost, а не google.com

Реално в момента ми е трудно да предположа как да се различи вторият от третият пример? Или да се промени начина на запис, така че да са различими...

Някакви идеи-коментари?

Малко ми се чини че са неразличими тея. Може би host може да кажеш, че следва да е нещо с точка в него или localhost и така да го разпознаваш



  Golden Gega  Създадено на 04.07.2023, видяно: 329 пъти. #93674

Важното е че ще отидат 5 дена за нещо дето се прави за 2 мин



  Major Obvious  Създадено на 04.07.2023, видяно: 326 пъти. #93675
Golden Gega

Важното е че ще отидат 5 дена за нещо дето се прави за 2 мин

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



  Golden Gega  Създадено на 04.07.2023, видяно: 325 пъти. #93676
Major Obvious
Golden Gega

Важното е че ще отидат 5 дена за нещо дето се прави за 2 мин

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

Когато си прав, прав си, а и може да се направи някаква световна иновация в парсирането



  Major Obvious  Създадено на 04.07.2023, видяно: 322 пъти. #93678
Golden Gega

а и може да се направи някаква световна иновация в парсирането

По-скоро усещам че на форумния хаксор, дето намери 10-на секюрити дупки, ще му се отвори още доста работа.



  Дон Реба  Създадено на 04.07.2023, видяно: 320 пъти. #93679

как никой до сега нбе каза "хахаха на виндовс проблем няма"



  Един от многото  Създадено на 04.07.2023, видяно: 309 пъти. #93680
Дон Реба

как никой до сега нбе каза "хахаха на виндовс проблем няма"

Ахахах, припомни ми тая класика. 😄



  johnfound  Създадено на 04.07.2023, видяно: 307 пъти. #93682
Major Obvious

Ти всички възможни видове урл-та на света ли искаш да парсваш или ще се ограничиш до някое подмножество? :) Конкретно в HTTP протокола, хоста не е опционален елемент и първите ти два примера не са валидни урл-та. Спецификацията я има тук: https://datatracker.ietf.org/doc/html/rfc1738

Ами те всички URL-та са по една схема. Ако работи с едните, трябва да работи със всички. В HTTP протокола, хоста е опционален. Ето ти една връзка без хост: /wazmovno-li-e-da-se-napishe-ednopasow-url-spliter.7946 която си работи съвсем даже добре.

Спецификацията я четох и пак ще я чета, но нещо много объркана ми се струва и не съм сигурен, че се спазва особено точно. Порових малко из нета и се оказва, че има няколко варианта на библиотеки за сплитване на URL-та които не работят еднакво...



  Stilgar  Създадено на 04.07.2023, видяно: 298 пъти. #93684
Major Obvious
Golden Gega

Важното е че ще отидат 5 дена за нещо дето се прави за 2 мин

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

И като казваш "милисекунди" сигурно имаш предвид наносекунди и то ако URL-то е поне 3000 символа



  Stilgar  Създадено на 04.07.2023, видяно: 297 пъти. #93685
johnfound
Major Obvious

Ти всички възможни видове урл-та на света ли искаш да парсваш или ще се ограничиш до някое подмножество? :) Конкретно в HTTP протокола, хоста не е опционален елемент и първите ти два примера не са валидни урл-та. Спецификацията я има тук: https://datatracker.ietf.org/doc/html/rfc1738

Ами те всички URL-та са по една схема. Ако работи с едните, трябва да работи със всички. В HTTP протокола, хоста е опционален. Ето ти една връзка без хост: /wazmovno-li-e-da-se-napishe-ednopasow-url-spliter.7946 която си работи съвсем даже добре.

Спецификацията я четох и пак ще я чета, но нещо много объркана ми се струва и не съм сигурен, че се спазва особено точно. Порових малко из нета и се оказва, че има няколко варианта на библиотеки за сплитване на URL-та които не работят еднакво...

А може ли да има хост без протокол?


0 1


Възможно ли е да се напише еднопасов URL-сплитер?

  



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