[{"data":1,"prerenderedAt":2028},["ShallowReactive",2],{"navigation_docs_hu":3,"-hu-storage-local":442,"-hu-storage-local-surround":2023},[4,45,60,81,112,129,146,173,197,213,242,280,357,373,385,404,430],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":44},"Kezdő lépések","i-lucide-rocket","\u002Fhu\u002Fgetting-started","hu\u002F1.getting-started",[10,15,20,24,29,34,39],{"title":11,"path":12,"stem":13,"icon":14},"Bevezetés","\u002Fhu\u002Fgetting-started\u002Fintroduction","hu\u002F1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Laravelből érkezőknek","\u002Fhu\u002Fgetting-started\u002Fcoming-from-laravel","hu\u002F1.getting-started\u002F2.coming-from-laravel","i-lucide-arrow-right-left",{"title":21,"path":22,"stem":23,"icon":19},"Symfonyból érkezőknek","\u002Fhu\u002Fgetting-started\u002Fcoming-from-symfony","hu\u002F1.getting-started\u002F3.coming-from-symfony",{"title":25,"path":26,"stem":27,"icon":28},"Telepítés","\u002Fhu\u002Fgetting-started\u002Finstallation","hu\u002F1.getting-started\u002F4.installation","i-lucide-download",{"title":30,"path":31,"stem":32,"icon":33},"Az első modulod","\u002Fhu\u002Fgetting-started\u002Ffirst-module","hu\u002F1.getting-started\u002F5.first-module","i-lucide-package-plus",{"title":35,"path":36,"stem":37,"icon":38},"Projektstruktúra","\u002Fhu\u002Fgetting-started\u002Fproject-structure","hu\u002F1.getting-started\u002F6.project-structure","i-lucide-folder-tree",{"title":40,"path":41,"stem":42,"icon":43},"A shop mintaalkalmazás","\u002Fhu\u002Fgetting-started\u002Fsample-app","hu\u002F1.getting-started\u002F7.sample-app","i-lucide-shopping-cart",false,{"title":46,"icon":47,"path":48,"stem":49,"children":50,"page":44},"queue","i-lucide-layers","\u002Fhu\u002Fqueue","hu\u002F10.queue",[51,56],{"title":52,"path":53,"stem":54,"icon":55},"Áttekintés","\u002Fhu\u002Fqueue\u002Foverview","hu\u002F10.queue\u002F1.overview","i-lucide-list-ordered",{"title":57,"path":58,"stem":59,"icon":47},"Taskok","\u002Fhu\u002Fqueue\u002Ftasks","hu\u002F10.queue\u002F2.tasks",{"title":61,"icon":62,"path":63,"stem":64,"children":65,"page":44},"events","i-lucide-workflow","\u002Fhu\u002Fevents","hu\u002F11.events",[66,71,76],{"title":67,"path":68,"stem":69,"icon":70},"Események","\u002Fhu\u002Fevents\u002Foverview","hu\u002F11.events\u002F1.overview","i-lucide-radio",{"title":72,"path":73,"stem":74,"icon":75},"Outbox","\u002Fhu\u002Fevents\u002Foutbox","hu\u002F11.events\u002F2.outbox","i-lucide-inbox",{"title":77,"path":78,"stem":79,"icon":80},"Ütemezés","\u002Fhu\u002Fevents\u002Fscheduler","hu\u002F11.events\u002F3.scheduler","i-lucide-calendar-clock",{"title":82,"icon":83,"path":84,"stem":85,"children":86,"page":44},"auth","i-lucide-shield-check","\u002Fhu\u002Fauth","hu\u002F12.auth",[87,92,97,102,107],{"title":88,"path":89,"stem":90,"icon":91},"Autentikáció","\u002Fhu\u002Fauth\u002Foverview","hu\u002F12.auth\u002F1.overview","i-lucide-key-round",{"title":93,"path":94,"stem":95,"icon":96},"RBAC","\u002Fhu\u002Fauth\u002Frbac","hu\u002F12.auth\u002F2.rbac","i-lucide-users",{"title":98,"path":99,"stem":100,"icon":101},"Policy-k","\u002Fhu\u002Fauth\u002Fpolicy","hu\u002F12.auth\u002F3.policy","i-lucide-gavel",{"title":103,"path":104,"stem":105,"icon":106},"Az auth önálló használata","\u002Fhu\u002Fauth\u002Fstandalone","hu\u002F12.auth\u002F4.standalone","i-lucide-plug",{"title":108,"path":109,"stem":110,"icon":111},"Social login goth-tal, önállóan","\u002Fhu\u002Fauth\u002Fsocial-standalone","hu\u002F12.auth\u002F5.social-standalone","i-lucide-log-in",{"title":113,"icon":114,"path":115,"stem":116,"children":117,"page":44},"mail","i-lucide-mail","\u002Fhu\u002Fmail","hu\u002F13.mail",[118,121,125],{"title":52,"path":119,"stem":120,"icon":114},"\u002Fhu\u002Fmail\u002Foverview","hu\u002F13.mail\u002F1.overview",{"title":122,"path":123,"stem":124,"icon":114},"SMTP","\u002Fhu\u002Fmail\u002Fsmtp","hu\u002F13.mail\u002F2.smtp",{"title":126,"path":127,"stem":128,"icon":114},"MJML","\u002Fhu\u002Fmail\u002Fmjml","hu\u002F13.mail\u002F3.mjml",{"title":130,"icon":131,"path":132,"stem":133,"children":134,"page":44},"notify","i-lucide-bell","\u002Fhu\u002Fnotify","hu\u002F14.notify",[135,138,142],{"title":52,"path":136,"stem":137,"icon":131},"\u002Fhu\u002Fnotify\u002Foverview","hu\u002F14.notify\u002F1.overview",{"title":139,"path":140,"stem":141,"icon":131},"Database csatorna","\u002Fhu\u002Fnotify\u002Fdatabase","hu\u002F14.notify\u002F2.database",{"title":143,"path":144,"stem":145,"icon":131},"Broadcast csatorna","\u002Fhu\u002Fnotify\u002Fbroadcast","hu\u002F14.notify\u002F3.broadcast",{"title":147,"icon":148,"path":149,"stem":150,"children":151,"page":44},"storage","i-lucide-hard-drive","\u002Fhu\u002Fstorage","hu\u002F15.storage",[152,155,159,163,168],{"title":52,"path":153,"stem":154,"icon":148},"\u002Fhu\u002Fstorage\u002Foverview","hu\u002F15.storage\u002F1.overview",{"title":156,"path":157,"stem":158},"Disk API","\u002Fhu\u002Fstorage\u002Fdisk-api","hu\u002F15.storage\u002F2.disk-api",{"title":160,"path":161,"stem":162,"icon":148},"Memória és helyi lemez","\u002Fhu\u002Fstorage\u002Flocal","hu\u002F15.storage\u002F3.local",{"title":164,"path":165,"stem":166,"icon":167},"S3","\u002Fhu\u002Fstorage\u002Fs3","hu\u002F15.storage\u002F4.s3","i-lucide-cloud",{"title":169,"path":170,"stem":171,"icon":172},"Tesztelés","\u002Fhu\u002Fstorage\u002Ftesting","hu\u002F15.storage\u002F5.testing","i-lucide-flask-conical",{"title":174,"icon":175,"path":176,"stem":177,"children":178,"page":44},"telemetry","i-lucide-activity","\u002Fhu\u002Ftelemetry","hu\u002F16.telemetry",[179,182,187,192],{"title":52,"path":180,"stem":181,"icon":175},"\u002Fhu\u002Ftelemetry\u002Foverview","hu\u002F16.telemetry\u002F1.overview",{"title":183,"path":184,"stem":185,"icon":186},"Logolás","\u002Fhu\u002Ftelemetry\u002Flogging","hu\u002F16.telemetry\u002F2.logging","i-lucide-scroll-text",{"title":188,"path":189,"stem":190,"icon":191},"OpenTelemetry","\u002Fhu\u002Ftelemetry\u002Fopentelemetry","hu\u002F16.telemetry\u002F3.opentelemetry","i-lucide-radar",{"title":193,"path":194,"stem":195,"icon":196},"Sentry","\u002Fhu\u002Ftelemetry\u002Fsentry","hu\u002F16.telemetry\u002F4.sentry","i-lucide-bug",{"title":198,"icon":199,"path":200,"stem":201,"children":202,"page":44},"Referencia","i-lucide-book-open","\u002Fhu\u002Freference","hu\u002F17.reference",[203,208],{"title":204,"path":205,"stem":206,"icon":207},"Konfiguráció","\u002Fhu\u002Freference\u002Fconfiguration","hu\u002F17.reference\u002F1.configuration","i-lucide-settings",{"title":209,"path":210,"stem":211,"icon":212},"Külső függőségek","\u002Fhu\u002Freference\u002Fdependencies","hu\u002F17.reference\u002F2.dependencies","i-lucide-package",{"title":214,"icon":215,"path":216,"stem":217,"children":218,"page":44},"Koncepciók","i-lucide-lightbulb","\u002Fhu\u002Fconcepts","hu\u002F2.concepts",[219,223,228,232,237],{"title":220,"path":221,"stem":222,"icon":47},"Architektúra","\u002Fhu\u002Fconcepts\u002Farchitecture","hu\u002F2.concepts\u002F1.architecture",{"title":224,"path":225,"stem":226,"icon":227},"Hibamodell","\u002Fhu\u002Fconcepts\u002Ferror-model","hu\u002F2.concepts\u002F2.error-model","i-lucide-shield-alert",{"title":204,"path":229,"stem":230,"icon":231},"\u002Fhu\u002Fconcepts\u002Fconfiguration","hu\u002F2.concepts\u002F3.configuration","i-lucide-settings-2",{"title":233,"path":234,"stem":235,"icon":236},"Codegen pipeline","\u002Fhu\u002Fconcepts\u002Fcodegen-pipeline","hu\u002F2.concepts\u002F4.codegen-pipeline","i-lucide-file-json",{"title":238,"path":239,"stem":240,"icon":241},"Design patternek","\u002Fhu\u002Fconcepts\u002Fdesign-patterns","hu\u002F2.concepts\u002F5.design-patterns","i-lucide-puzzle",{"title":243,"icon":244,"path":245,"stem":246,"children":247,"page":44},"A kit","i-lucide-box","\u002Fhu\u002Fkit","hu\u002F3.kit",[248,252,257,262,267,271,276],{"title":249,"path":250,"stem":251,"icon":244},"A kit áttekintése","\u002Fhu\u002Fkit\u002Foverview","hu\u002F3.kit\u002F1.overview",{"title":253,"path":254,"stem":255,"icon":256},"Alkalmazás-életciklus","\u002Fhu\u002Fkit\u002Fapp","hu\u002F3.kit\u002F2.app","i-lucide-power",{"title":258,"path":259,"stem":260,"icon":261},"Szerver","\u002Fhu\u002Fkit\u002Fserver","hu\u002F3.kit\u002F3.server","i-lucide-server",{"title":263,"path":264,"stem":265,"icon":266},"Worker","\u002Fhu\u002Fkit\u002Fworker","hu\u002F3.kit\u002F4.worker","i-lucide-cog",{"title":268,"path":269,"stem":270,"icon":70},"Realtime","\u002Fhu\u002Fkit\u002Frealtime","hu\u002F3.kit\u002F5.realtime",{"title":272,"path":273,"stem":274,"icon":275},"Migrációk","\u002Fhu\u002Fkit\u002Fmigrations","hu\u002F3.kit\u002F6.migrations","i-lucide-file-stack",{"title":277,"path":278,"stem":279,"icon":111},"Social login","\u002Fhu\u002Fkit\u002Fsocial-login","hu\u002F3.kit\u002F7.social-login",{"title":281,"icon":282,"path":283,"stem":284,"children":285,"page":44},"CLI referencia","i-lucide-terminal","\u002Fhu\u002Fcli","hu\u002F4.cli",[286,289,294,299,304,309,314,319,324,329,334,338,343,348,352],{"title":52,"path":287,"stem":288,"icon":282},"\u002Fhu\u002Fcli\u002Foverview","hu\u002F4.cli\u002F1.overview",{"title":290,"path":291,"stem":292,"icon":293},"add db","\u002Fhu\u002Fcli\u002Fadd-db","hu\u002F4.cli\u002F10.add-db","i-lucide-database-zap",{"title":295,"path":296,"stem":297,"icon":298},"add compose \u002F add docker","\u002Fhu\u002Fcli\u002Fadd-compose","hu\u002F4.cli\u002F11.add-compose","i-lucide-container",{"title":300,"path":301,"stem":302,"icon":303},"add mail","\u002Fhu\u002Fcli\u002Fadd-mail","hu\u002F4.cli\u002F12.add-mail","i-lucide-mail-plus",{"title":305,"path":306,"stem":307,"icon":308},"add notification","\u002Fhu\u002Fcli\u002Fadd-notification","hu\u002F4.cli\u002F13.add-notification","i-lucide-bell-plus",{"title":310,"path":311,"stem":312,"icon":313},"add realtime","\u002Fhu\u002Fcli\u002Fadd-realtime","hu\u002F4.cli\u002F14.add-realtime","i-lucide-radio-tower",{"title":315,"path":316,"stem":317,"icon":318},"add seeder","\u002Fhu\u002Fcli\u002Fadd-seeder","hu\u002F4.cli\u002F15.add-seeder","i-lucide-sprout",{"title":320,"path":321,"stem":322,"icon":323},"new project","\u002Fhu\u002Fcli\u002Fnew-project","hu\u002F4.cli\u002F2.new-project","i-lucide-folder-plus",{"title":325,"path":326,"stem":327,"icon":328},"new module","\u002Fhu\u002Fcli\u002Fnew-module","hu\u002F4.cli\u002F3.new-module","i-lucide-blocks",{"title":330,"path":331,"stem":332,"icon":333},"add surface","\u002Fhu\u002Fcli\u002Fadd-surface","hu\u002F4.cli\u002F4.add-surface","i-lucide-layers-2",{"title":335,"path":336,"stem":337,"icon":244},"add core","\u002Fhu\u002Fcli\u002Fadd-core","hu\u002F4.cli\u002F5.add-core",{"title":339,"path":340,"stem":341,"icon":342},"add handler","\u002Fhu\u002Fcli\u002Fadd-handler","hu\u002F4.cli\u002F6.add-handler","i-lucide-webhook",{"title":344,"path":345,"stem":346,"icon":347},"new migration","\u002Fhu\u002Fcli\u002Fnew-migration","hu\u002F4.cli\u002F7.new-migration","i-lucide-file-plus",{"title":349,"path":350,"stem":351,"icon":266},"worker generátorok","\u002Fhu\u002Fcli\u002Fworker-generators","hu\u002F4.cli\u002F8.worker-generators",{"title":353,"path":354,"stem":355,"icon":356},"upgrade templates","\u002Fhu\u002Fcli\u002Fupgrade-templates","hu\u002F4.cli\u002F9.upgrade-templates","i-lucide-refresh-cw",{"title":358,"icon":227,"path":359,"stem":360,"children":361,"page":44},"errs","\u002Fhu\u002Ferrs","hu\u002F5.errs",[362,365,369],{"title":52,"path":363,"stem":364,"icon":227},"\u002Fhu\u002Ferrs\u002Foverview","hu\u002F5.errs\u002F1.overview",{"title":366,"path":367,"stem":368},"API","\u002Fhu\u002Ferrs\u002Fapi","hu\u002F5.errs\u002F2.api",{"title":370,"path":371,"stem":372,"icon":227},"Integráció","\u002Fhu\u002Ferrs\u002Fintegration","hu\u002F5.errs\u002F3.integration",{"title":374,"icon":231,"path":375,"stem":376,"children":377,"page":44},"envconf","\u002Fhu\u002Fenvconf","hu\u002F6.envconf",[378,381],{"title":52,"path":379,"stem":380,"icon":231},"\u002Fhu\u002Fenvconf\u002Foverview","hu\u002F6.envconf\u002F1.overview",{"title":382,"path":383,"stem":384},"Receptek","\u002Fhu\u002Fenvconf\u002Frecipes","hu\u002F6.envconf\u002F2.recipes",{"title":386,"icon":387,"path":388,"stem":389,"children":390,"page":44},"httperr","i-lucide-globe","\u002Fhu\u002Fhttperr","hu\u002F7.httperr",[391,394,399],{"title":52,"path":392,"stem":393,"icon":387},"\u002Fhu\u002Fhttperr\u002Foverview","hu\u002F7.httperr\u002F1.overview",{"title":395,"path":396,"stem":397,"icon":398},"Hibaválaszok","\u002Fhu\u002Fhttperr\u002Ferror-responses","hu\u002F7.httperr\u002F2.error-responses","i-lucide-octagon-alert",{"title":400,"path":401,"stem":402,"icon":403},"Validáció","\u002Fhu\u002Fhttperr\u002Fvalidation","hu\u002F7.httperr\u002F3.validation","i-lucide-badge-check",{"title":405,"icon":406,"path":407,"stem":408,"children":409,"page":44},"dbx","i-lucide-database","\u002Fhu\u002Fdbx","hu\u002F8.dbx",[410,413,417,421,426],{"title":52,"path":411,"stem":412,"icon":406},"\u002Fhu\u002Fdbx\u002Foverview","hu\u002F8.dbx\u002F1.overview",{"title":414,"path":415,"stem":416,"icon":106},"pgx","\u002Fhu\u002Fdbx\u002Fpg","hu\u002F8.dbx\u002F2.pg",{"title":418,"path":419,"stem":420,"icon":47},"bun","\u002Fhu\u002Fdbx\u002Fbunx","hu\u002F8.dbx\u002F3.bunx",{"title":422,"path":423,"stem":424,"icon":425},"Tranzakciók","\u002Fhu\u002Fdbx\u002Ftransactions","hu\u002F8.dbx\u002F4.transactions","i-lucide-git-merge",{"title":427,"path":428,"stem":429,"icon":318},"Seederek","\u002Fhu\u002Fdbx\u002Fseed","hu\u002F8.dbx\u002F5.seed",{"title":431,"icon":55,"path":432,"stem":433,"children":434,"page":44},"paginate","\u002Fhu\u002Fpaginate","hu\u002F9.paginate",[435,438],{"title":52,"path":436,"stem":437,"icon":55},"\u002Fhu\u002Fpaginate\u002Foverview","hu\u002F9.paginate\u002F1.overview",{"title":439,"path":440,"stem":441,"icon":19},"Cursor-lapozás","\u002Fhu\u002Fpaginate\u002Fcursor","hu\u002F9.paginate\u002F2.cursor",{"id":443,"title":160,"body":444,"description":2016,"extension":2017,"links":2018,"meta":2019,"navigation":2020,"path":161,"seo":2021,"stem":162,"__hash__":2022},"docs_hu\u002Fhu\u002F15.storage\u002F3.local.md",{"type":445,"value":446,"toc":2008},"minimark",[447,479,484,623,643,935,947,951,1129,1211,1216,1232,1302,1319,1323,1973,1977,2004],[448,449,450,451,455,456,458,459,462,463,466,467,469,470,474,475,478],"p",{},"Két ",[452,453,454],"code",{},"Driver","-implementáció szállít a gyökér ",[452,457,147],{}," modulon belül, a modulon túl semmilyen extra függőség nélkül: a ",[452,460,461],{},"storage\u002Fmemory",", egy in-process fake teszthez, és a ",[452,464,465],{},"storage\u002Flocal",", egy fájlrendszer-alapú driver, ami egy-node-os telepítéshez vagy helyi fejlesztéshez elég jó. Mindkettő ugyanazt a ",[452,468,454],{}," szerződést teljesíti, mint az ",[471,472,473],"a",{"href":165},"S3-kompatibilis driver",", így a ",[452,476,477],{},"Disk"," ellen írt kód nem változik, amikor közöttük váltasz.",[480,481,483],"h2",{"id":482},"storagememory-teszthez","storage\u002Fmemory: teszthez",[485,486,491],"pre",{"className":487,"code":488,"language":489,"meta":490,"style":490},"language-go shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import \"github.com\u002Fgp-system\u002Fstorage\u002Fmemory\"\n\ndriver := memory.New()\ndriver := memory.New(memory.WithBaseURL(\"https:\u002F\u002Fcdn.test\"))\ndisk := storage.NewDisk(driver, storage.WithName(\"test\"))\n","go","",[452,492,493,513,520,543,581],{"__ignoreMap":490},[494,495,498,502,506,510],"span",{"class":496,"line":497},"line",1,[494,499,501],{"class":500},"s7zQu","import",[494,503,505],{"class":504},"sMK4o"," \"",[494,507,509],{"class":508},"sBMFI","github.com\u002Fgp-system\u002Fstorage\u002Fmemory",[494,511,512],{"class":504},"\"\n",[494,514,516],{"class":496,"line":515},2,[494,517,519],{"emptyLinePlaceholder":518},true,"\n",[494,521,523,527,530,533,536,540],{"class":496,"line":522},3,[494,524,526],{"class":525},"sTEyZ","driver ",[494,528,529],{"class":504},":=",[494,531,532],{"class":525}," memory",[494,534,535],{"class":504},".",[494,537,539],{"class":538},"s2Zo4","New",[494,541,542],{"class":504},"()\n",[494,544,546,548,550,552,554,556,559,562,564,567,569,572,576,578],{"class":496,"line":545},4,[494,547,526],{"class":525},[494,549,529],{"class":504},[494,551,532],{"class":525},[494,553,535],{"class":504},[494,555,539],{"class":538},[494,557,558],{"class":504},"(",[494,560,561],{"class":525},"memory",[494,563,535],{"class":504},[494,565,566],{"class":538},"WithBaseURL",[494,568,558],{"class":504},[494,570,571],{"class":504},"\"",[494,573,575],{"class":574},"sfazB","https:\u002F\u002Fcdn.test",[494,577,571],{"class":504},[494,579,580],{"class":504},"))\n",[494,582,584,587,589,592,594,597,599,602,605,607,609,612,614,616,619,621],{"class":496,"line":583},5,[494,585,586],{"class":525},"disk ",[494,588,529],{"class":504},[494,590,591],{"class":525}," storage",[494,593,535],{"class":504},[494,595,596],{"class":538},"NewDisk",[494,598,558],{"class":504},[494,600,601],{"class":525},"driver",[494,603,604],{"class":504},",",[494,606,591],{"class":525},[494,608,535],{"class":504},[494,610,611],{"class":538},"WithName",[494,613,558],{"class":504},[494,615,571],{"class":504},[494,617,618],{"class":574},"test",[494,620,571],{"class":504},[494,622,580],{"class":504},[448,624,625,626,629,630,632,633,635,636,639,640,642],{},"A ",[452,627,628],{},"memory.New"," egy in-process map mögé épített ",[452,631,454],{},"-t ad vissza: nincs fájlrendszer, nincs hálózat, nincs konténer. A ",[452,634,566],{}," állítja be az alapot, amiből az ",[452,637,638],{},"URL"," linkeket épít (default: egy belső placeholder séma); nélküle az ",[452,641,638],{}," is működik, csak nem néz ki valódi linknek. Ez a driver a választás egy service-réteg unit teszthez:",[485,644,646],{"className":487,"code":645,"language":489,"meta":490,"style":490},"func TestUploadStoresImageAndURL(t *testing.T) {\n    disk := storage.NewDisk(memory.New(memory.WithBaseURL(\"https:\u002F\u002Fcdn.test\")))\n    svc := service.NewProductImageService(disk, repo)\n\n    url, err := svc.Upload(ctx, \"p42\", strings.NewReader(\"png-bytes\"), storage.PutOptions{ContentType: \"image\u002Fpng\"})\n\n    require.NoError(t, err)\n    require.Equal(t, \"https:\u002F\u002Fcdn.test\u002Fproducts\u002Fp42\u002Fimage\", url)\n    require.True(t, disk.Exists(ctx, \"products\u002Fp42\u002Fimage\"))\n}\n",[452,647,648,679,719,747,751,833,838,860,890,929],{"__ignoreMap":490},[494,649,650,653,656,658,662,665,668,670,673,676],{"class":496,"line":497},[494,651,652],{"class":504},"func",[494,654,655],{"class":538}," TestUploadStoresImageAndURL",[494,657,558],{"class":504},[494,659,661],{"class":660},"sHdIc","t",[494,663,664],{"class":504}," *",[494,666,667],{"class":508},"testing",[494,669,535],{"class":504},[494,671,672],{"class":508},"T",[494,674,675],{"class":504},")",[494,677,678],{"class":504}," {\n",[494,680,681,684,686,688,690,692,694,696,698,700,702,704,706,708,710,712,714,716],{"class":496,"line":515},[494,682,683],{"class":525},"    disk ",[494,685,529],{"class":504},[494,687,591],{"class":525},[494,689,535],{"class":504},[494,691,596],{"class":538},[494,693,558],{"class":504},[494,695,561],{"class":525},[494,697,535],{"class":504},[494,699,539],{"class":538},[494,701,558],{"class":504},[494,703,561],{"class":525},[494,705,535],{"class":504},[494,707,566],{"class":538},[494,709,558],{"class":504},[494,711,571],{"class":504},[494,713,575],{"class":574},[494,715,571],{"class":504},[494,717,718],{"class":504},")))\n",[494,720,721,724,726,729,731,734,736,739,741,744],{"class":496,"line":522},[494,722,723],{"class":525},"    svc ",[494,725,529],{"class":504},[494,727,728],{"class":525}," service",[494,730,535],{"class":504},[494,732,733],{"class":538},"NewProductImageService",[494,735,558],{"class":504},[494,737,738],{"class":525},"disk",[494,740,604],{"class":504},[494,742,743],{"class":525}," repo",[494,745,746],{"class":504},")\n",[494,748,749],{"class":496,"line":545},[494,750,519],{"emptyLinePlaceholder":518},[494,752,753,756,758,761,763,766,768,771,773,776,778,780,783,785,787,790,792,795,797,799,802,804,807,809,811,814,817,820,823,825,828,830],{"class":496,"line":583},[494,754,755],{"class":525},"    url",[494,757,604],{"class":504},[494,759,760],{"class":525}," err ",[494,762,529],{"class":504},[494,764,765],{"class":525}," svc",[494,767,535],{"class":504},[494,769,770],{"class":538},"Upload",[494,772,558],{"class":504},[494,774,775],{"class":525},"ctx",[494,777,604],{"class":504},[494,779,505],{"class":504},[494,781,782],{"class":574},"p42",[494,784,571],{"class":504},[494,786,604],{"class":504},[494,788,789],{"class":525}," strings",[494,791,535],{"class":504},[494,793,794],{"class":538},"NewReader",[494,796,558],{"class":504},[494,798,571],{"class":504},[494,800,801],{"class":574},"png-bytes",[494,803,571],{"class":504},[494,805,806],{"class":504},"),",[494,808,591],{"class":508},[494,810,535],{"class":504},[494,812,813],{"class":508},"PutOptions",[494,815,816],{"class":504},"{",[494,818,819],{"class":525},"ContentType",[494,821,822],{"class":504},":",[494,824,505],{"class":504},[494,826,827],{"class":574},"image\u002Fpng",[494,829,571],{"class":504},[494,831,832],{"class":504},"})\n",[494,834,836],{"class":496,"line":835},6,[494,837,519],{"emptyLinePlaceholder":518},[494,839,841,844,846,849,851,853,855,858],{"class":496,"line":840},7,[494,842,843],{"class":525},"    require",[494,845,535],{"class":504},[494,847,848],{"class":538},"NoError",[494,850,558],{"class":504},[494,852,661],{"class":525},[494,854,604],{"class":504},[494,856,857],{"class":525}," err",[494,859,746],{"class":504},[494,861,863,865,867,870,872,874,876,878,881,883,885,888],{"class":496,"line":862},8,[494,864,843],{"class":525},[494,866,535],{"class":504},[494,868,869],{"class":538},"Equal",[494,871,558],{"class":504},[494,873,661],{"class":525},[494,875,604],{"class":504},[494,877,505],{"class":504},[494,879,880],{"class":574},"https:\u002F\u002Fcdn.test\u002Fproducts\u002Fp42\u002Fimage",[494,882,571],{"class":504},[494,884,604],{"class":504},[494,886,887],{"class":525}," url",[494,889,746],{"class":504},[494,891,893,895,897,900,902,904,906,909,911,914,916,918,920,922,925,927],{"class":496,"line":892},9,[494,894,843],{"class":525},[494,896,535],{"class":504},[494,898,899],{"class":538},"True",[494,901,558],{"class":504},[494,903,661],{"class":525},[494,905,604],{"class":504},[494,907,908],{"class":525}," disk",[494,910,535],{"class":504},[494,912,913],{"class":538},"Exists",[494,915,558],{"class":504},[494,917,775],{"class":525},[494,919,604],{"class":504},[494,921,505],{"class":504},[494,923,924],{"class":574},"products\u002Fp42\u002Fimage",[494,926,571],{"class":504},[494,928,580],{"class":504},[494,930,932],{"class":496,"line":931},10,[494,933,934],{"class":504},"}\n",[448,936,937,938,940,941,946],{},"Ha saját ",[452,939,454],{},"-t írsz e kettő helyett, futtasd le a ",[471,942,943],{"href":170},[452,944,945],{},"storage\u002Fstoragetest"," suite-ját rajta, hogy megerősítsd, ugyanúgy viselkedik.",[480,948,950],{"id":949},"storagelocal-fájlrendszer-alapú-aláírt-url-ekkel","storage\u002Flocal: fájlrendszer-alapú, aláírt URL-ekkel",[485,952,954],{"className":487,"code":953,"language":489,"meta":490,"style":490},"import \"github.com\u002Fgp-system\u002Fstorage\u002Flocal\"\n\ncfg := local.Config{\n    Root:          \"\u002Fvar\u002Fdata\u002Fuploads\",\n    PublicBaseURL: \"https:\u002F\u002Fcdn.example.com\",\n    BaseURL:       \"https:\u002F\u002Fapi.example.com\u002Ffiles\",\n    Secret:        os.Getenv(\"STORAGE_LOCAL_SECRET\"),\n}\ndriver, err := local.New(cfg)\ndisk := storage.NewDisk(driver, storage.WithName(\"uploads\"))\n",[452,955,956,967,971,989,1007,1023,1040,1067,1071,1094],{"__ignoreMap":490},[494,957,958,960,962,965],{"class":496,"line":497},[494,959,501],{"class":500},[494,961,505],{"class":504},[494,963,964],{"class":508},"github.com\u002Fgp-system\u002Fstorage\u002Flocal",[494,966,512],{"class":504},[494,968,969],{"class":496,"line":515},[494,970,519],{"emptyLinePlaceholder":518},[494,972,973,976,978,981,983,986],{"class":496,"line":522},[494,974,975],{"class":525},"cfg ",[494,977,529],{"class":504},[494,979,980],{"class":508}," local",[494,982,535],{"class":504},[494,984,985],{"class":508},"Config",[494,987,988],{"class":504},"{\n",[494,990,991,994,996,999,1002,1004],{"class":496,"line":545},[494,992,993],{"class":525},"    Root",[494,995,822],{"class":504},[494,997,998],{"class":504},"          \"",[494,1000,1001],{"class":574},"\u002Fvar\u002Fdata\u002Fuploads",[494,1003,571],{"class":504},[494,1005,1006],{"class":504},",\n",[494,1008,1009,1012,1014,1016,1019,1021],{"class":496,"line":583},[494,1010,1011],{"class":525},"    PublicBaseURL",[494,1013,822],{"class":504},[494,1015,505],{"class":504},[494,1017,1018],{"class":574},"https:\u002F\u002Fcdn.example.com",[494,1020,571],{"class":504},[494,1022,1006],{"class":504},[494,1024,1025,1028,1030,1033,1036,1038],{"class":496,"line":835},[494,1026,1027],{"class":525},"    BaseURL",[494,1029,822],{"class":504},[494,1031,1032],{"class":504},"       \"",[494,1034,1035],{"class":574},"https:\u002F\u002Fapi.example.com\u002Ffiles",[494,1037,571],{"class":504},[494,1039,1006],{"class":504},[494,1041,1042,1045,1047,1050,1052,1055,1057,1059,1062,1064],{"class":496,"line":840},[494,1043,1044],{"class":525},"    Secret",[494,1046,822],{"class":504},[494,1048,1049],{"class":525},"        os",[494,1051,535],{"class":504},[494,1053,1054],{"class":538},"Getenv",[494,1056,558],{"class":504},[494,1058,571],{"class":504},[494,1060,1061],{"class":574},"STORAGE_LOCAL_SECRET",[494,1063,571],{"class":504},[494,1065,1066],{"class":504},"),\n",[494,1068,1069],{"class":496,"line":862},[494,1070,934],{"class":504},[494,1072,1073,1075,1077,1079,1081,1083,1085,1087,1089,1092],{"class":496,"line":892},[494,1074,601],{"class":525},[494,1076,604],{"class":504},[494,1078,760],{"class":525},[494,1080,529],{"class":504},[494,1082,980],{"class":525},[494,1084,535],{"class":504},[494,1086,539],{"class":538},[494,1088,558],{"class":504},[494,1090,1091],{"class":525},"cfg",[494,1093,746],{"class":504},[494,1095,1096,1098,1100,1102,1104,1106,1108,1110,1112,1114,1116,1118,1120,1122,1125,1127],{"class":496,"line":931},[494,1097,586],{"class":525},[494,1099,529],{"class":504},[494,1101,591],{"class":525},[494,1103,535],{"class":504},[494,1105,596],{"class":538},[494,1107,558],{"class":504},[494,1109,601],{"class":525},[494,1111,604],{"class":504},[494,1113,591],{"class":525},[494,1115,535],{"class":504},[494,1117,611],{"class":538},[494,1119,558],{"class":504},[494,1121,571],{"class":504},[494,1123,1124],{"class":574},"uploads",[494,1126,571],{"class":504},[494,1128,580],{"class":504},[1130,1131,1132,1145],"table",{},[1133,1134,1135],"thead",{},[1136,1137,1138,1142],"tr",{},[1139,1140,1141],"th",{},"Mező",[1139,1143,1144],{},"Jelentés",[1146,1147,1148,1170,1187,1201],"tbody",{},[1136,1149,1150,1156],{},[1151,1152,1153],"td",{},[452,1154,1155],{},"Root",[1151,1157,1158,1159,1162,1163,1169],{},"a könyvtár, amiből az objektumok olvasódnak és amibe íródnak; minden ",[452,1160,1161],{},"path"," ez alatt oldódik fel, és a ",[471,1164,1166],{"href":1165},"\u002Fhu\u002Fstorage\u002Foverview#validpath",[452,1167,1168],{},"ValidPath"," elutasít mindent, ami kiszökne belőle",[1136,1171,1172,1177],{},[1151,1173,1174],{},[452,1175,1176],{},"PublicBaseURL",[1151,1178,1179,1180,1183,1184,1186],{},"a ",[452,1181,1182],{},"Disk.URL"," alapja: egy reverse proxy vagy CDN a ",[452,1185,1155],{}," előtt, ha a tartalom publikusan kiszolgált",[1136,1188,1189,1194],{},[1151,1190,1191],{},[452,1192,1193],{},"BaseURL",[1151,1195,1196,1197,1200],{},"az az alap URL, amire a helyi driver saját aláírt linkjei mutatnak, azaz ahova a ",[452,1198,1199],{},"Handler","-ét mountolod",[1136,1202,1203,1208],{},[1151,1204,1205],{},[452,1206,1207],{},"Secret",[1151,1209,1210],{},"a HMAC-kulcs, amivel az aláírt URL-ek generálódnak és ellenőrződnek",[1212,1213,1215],"h3",{"id":1214},"az-aláírt-url-handler","Az aláírt-URL Handler",[448,1217,625,1218,1220,1221,1224,1225,1228,1229,1231],{},[452,1219,465],{}," nem csak generálja az aláírt URL-eket, ki is szolgálja őket: a ",[452,1222,1223],{},"driver.Handler()"," egy ",[452,1226,1227],{},"http.Handler","-t ad vissza, amit a ",[452,1230,1193],{}," által jelzett path-ra mountolsz, és ez az, ami a beérkező kéréseken tényleg kikényszeríti az aláírást és a lejáratot:",[485,1233,1235],{"className":487,"code":1234,"language":489,"meta":490,"style":490},"mux := http.NewServeMux()\nmux.Handle(\"\u002Ffiles\u002F\", http.StripPrefix(\"\u002Ffiles\u002F\", driver.Handler()))\n",[452,1236,1237,1254],{"__ignoreMap":490},[494,1238,1239,1242,1244,1247,1249,1252],{"class":496,"line":497},[494,1240,1241],{"class":525},"mux ",[494,1243,529],{"class":504},[494,1245,1246],{"class":525}," http",[494,1248,535],{"class":504},[494,1250,1251],{"class":538},"NewServeMux",[494,1253,542],{"class":504},[494,1255,1256,1259,1261,1264,1266,1268,1271,1273,1275,1277,1279,1282,1284,1286,1288,1290,1292,1295,1297,1299],{"class":496,"line":515},[494,1257,1258],{"class":525},"mux",[494,1260,535],{"class":504},[494,1262,1263],{"class":538},"Handle",[494,1265,558],{"class":504},[494,1267,571],{"class":504},[494,1269,1270],{"class":574},"\u002Ffiles\u002F",[494,1272,571],{"class":504},[494,1274,604],{"class":504},[494,1276,1246],{"class":525},[494,1278,535],{"class":504},[494,1280,1281],{"class":538},"StripPrefix",[494,1283,558],{"class":504},[494,1285,571],{"class":504},[494,1287,1270],{"class":574},[494,1289,571],{"class":504},[494,1291,604],{"class":504},[494,1293,1294],{"class":525}," driver",[494,1296,535],{"class":504},[494,1298,1199],{"class":538},[494,1300,1301],{"class":504},"()))\n",[448,1303,1304,1305,1308,1309,1312,1313,1315,1316,1318],{},"Egy érvényes, le nem járt aláírás nélküli kérés elutasításra kerül, mielőtt a fájlrendszerhez hozzáérne. Ettől van értelme a ",[452,1306,1307],{},"TemporaryURL","\u002F",[452,1310,1311],{},"TemporaryUploadURL","-nek egy olyan driveren, ami mögött semmilyen felhő-infrastruktúra nincs: a HMAC-aláírás (a path, egy lejárati időbélyeg és a ",[452,1314,1207],{}," fölött) az egész hozzáférés-vezérlési mechanizmus, úgyhogy a ",[452,1317,1207],{},"-et kezeld úgy, mint bármely más credentialt (env-változó, sosem commitolva), és forgasd, ha kiszivárog.",[480,1320,1322],{"id":1321},"önálló-példa","Önálló példa",[485,1324,1327],{"className":487,"code":1325,"filename":1326,"language":489,"meta":490,"style":490},"package main\n\nimport (\n    \"context\"\n    \"log\"\n    \"net\u002Fhttp\"\n    \"os\"\n    \"strings\"\n    \"time\"\n\n    \"github.com\u002Fgp-system\u002Fstorage\"\n    \"github.com\u002Fgp-system\u002Fstorage\u002Flocal\"\n)\n\nfunc main() {\n    driver, err := local.New(local.Config{\n        Root:          \".\u002Fdata\",\n        PublicBaseURL: \"http:\u002F\u002Flocalhost:8080\u002Ffiles\",\n        BaseURL:       \"http:\u002F\u002Flocalhost:8080\u002Ffiles\",\n        Secret:        os.Getenv(\"STORAGE_LOCAL_SECRET\"),\n    })\n    if err != nil {\n        log.Fatal(err)\n    }\n    disk := storage.NewDisk(driver, storage.WithName(\"local\"))\n\n    ctx := context.Background()\n    if err := disk.Put(ctx, \"hello.txt\", strings.NewReader(\"hello, disk\"), storage.PutOptions{}); err != nil {\n        log.Fatal(err)\n    }\n\n    signed, err := disk.TemporaryURL(ctx, \"hello.txt\", storage.TemporaryURLOptions{TTL: 5 * time.Minute})\n    if err != nil {\n        log.Fatal(err)\n    }\n    log.Println(\"aláírt link:\", signed)\n\n    mux := http.NewServeMux()\n    mux.Handle(\"\u002Ffiles\u002F\", http.StripPrefix(\"\u002Ffiles\u002F\", driver.Handler()))\n    log.Fatal(http.ListenAndServe(\":8080\", mux))\n}\n","main.go",[452,1328,1329,1337,1341,1348,1358,1367,1376,1385,1394,1403,1407,1417,1426,1431,1436,1449,1478,1495,1512,1528,1552,1558,1574,1592,1598,1633,1638,1656,1721,1736,1741,1746,1808,1821,1836,1841,1868,1873,1889,1933,1968],{"__ignoreMap":490},[494,1330,1331,1334],{"class":496,"line":497},[494,1332,1333],{"class":504},"package",[494,1335,1336],{"class":508}," main\n",[494,1338,1339],{"class":496,"line":515},[494,1340,519],{"emptyLinePlaceholder":518},[494,1342,1343,1345],{"class":496,"line":522},[494,1344,501],{"class":500},[494,1346,1347],{"class":504}," (\n",[494,1349,1350,1353,1356],{"class":496,"line":545},[494,1351,1352],{"class":504},"    \"",[494,1354,1355],{"class":508},"context",[494,1357,512],{"class":504},[494,1359,1360,1362,1365],{"class":496,"line":583},[494,1361,1352],{"class":504},[494,1363,1364],{"class":508},"log",[494,1366,512],{"class":504},[494,1368,1369,1371,1374],{"class":496,"line":835},[494,1370,1352],{"class":504},[494,1372,1373],{"class":508},"net\u002Fhttp",[494,1375,512],{"class":504},[494,1377,1378,1380,1383],{"class":496,"line":840},[494,1379,1352],{"class":504},[494,1381,1382],{"class":508},"os",[494,1384,512],{"class":504},[494,1386,1387,1389,1392],{"class":496,"line":862},[494,1388,1352],{"class":504},[494,1390,1391],{"class":508},"strings",[494,1393,512],{"class":504},[494,1395,1396,1398,1401],{"class":496,"line":892},[494,1397,1352],{"class":504},[494,1399,1400],{"class":508},"time",[494,1402,512],{"class":504},[494,1404,1405],{"class":496,"line":931},[494,1406,519],{"emptyLinePlaceholder":518},[494,1408,1410,1412,1415],{"class":496,"line":1409},11,[494,1411,1352],{"class":504},[494,1413,1414],{"class":508},"github.com\u002Fgp-system\u002Fstorage",[494,1416,512],{"class":504},[494,1418,1420,1422,1424],{"class":496,"line":1419},12,[494,1421,1352],{"class":504},[494,1423,964],{"class":508},[494,1425,512],{"class":504},[494,1427,1429],{"class":496,"line":1428},13,[494,1430,746],{"class":504},[494,1432,1434],{"class":496,"line":1433},14,[494,1435,519],{"emptyLinePlaceholder":518},[494,1437,1439,1441,1444,1447],{"class":496,"line":1438},15,[494,1440,652],{"class":504},[494,1442,1443],{"class":538}," main",[494,1445,1446],{"class":504},"()",[494,1448,678],{"class":504},[494,1450,1452,1455,1457,1459,1461,1463,1465,1467,1469,1472,1474,1476],{"class":496,"line":1451},16,[494,1453,1454],{"class":525},"    driver",[494,1456,604],{"class":504},[494,1458,760],{"class":525},[494,1460,529],{"class":504},[494,1462,980],{"class":525},[494,1464,535],{"class":504},[494,1466,539],{"class":538},[494,1468,558],{"class":504},[494,1470,1471],{"class":508},"local",[494,1473,535],{"class":504},[494,1475,985],{"class":508},[494,1477,988],{"class":504},[494,1479,1481,1484,1486,1488,1491,1493],{"class":496,"line":1480},17,[494,1482,1483],{"class":525},"        Root",[494,1485,822],{"class":504},[494,1487,998],{"class":504},[494,1489,1490],{"class":574},".\u002Fdata",[494,1492,571],{"class":504},[494,1494,1006],{"class":504},[494,1496,1498,1501,1503,1505,1508,1510],{"class":496,"line":1497},18,[494,1499,1500],{"class":525},"        PublicBaseURL",[494,1502,822],{"class":504},[494,1504,505],{"class":504},[494,1506,1507],{"class":574},"http:\u002F\u002Flocalhost:8080\u002Ffiles",[494,1509,571],{"class":504},[494,1511,1006],{"class":504},[494,1513,1515,1518,1520,1522,1524,1526],{"class":496,"line":1514},19,[494,1516,1517],{"class":525},"        BaseURL",[494,1519,822],{"class":504},[494,1521,1032],{"class":504},[494,1523,1507],{"class":574},[494,1525,571],{"class":504},[494,1527,1006],{"class":504},[494,1529,1531,1534,1536,1538,1540,1542,1544,1546,1548,1550],{"class":496,"line":1530},20,[494,1532,1533],{"class":525},"        Secret",[494,1535,822],{"class":504},[494,1537,1049],{"class":525},[494,1539,535],{"class":504},[494,1541,1054],{"class":538},[494,1543,558],{"class":504},[494,1545,571],{"class":504},[494,1547,1061],{"class":574},[494,1549,571],{"class":504},[494,1551,1066],{"class":504},[494,1553,1555],{"class":496,"line":1554},21,[494,1556,1557],{"class":504},"    })\n",[494,1559,1561,1564,1566,1569,1572],{"class":496,"line":1560},22,[494,1562,1563],{"class":500},"    if",[494,1565,760],{"class":525},[494,1567,1568],{"class":504},"!=",[494,1570,1571],{"class":504}," nil",[494,1573,678],{"class":504},[494,1575,1577,1580,1582,1585,1587,1590],{"class":496,"line":1576},23,[494,1578,1579],{"class":525},"        log",[494,1581,535],{"class":504},[494,1583,1584],{"class":538},"Fatal",[494,1586,558],{"class":504},[494,1588,1589],{"class":525},"err",[494,1591,746],{"class":504},[494,1593,1595],{"class":496,"line":1594},24,[494,1596,1597],{"class":504},"    }\n",[494,1599,1601,1603,1605,1607,1609,1611,1613,1615,1617,1619,1621,1623,1625,1627,1629,1631],{"class":496,"line":1600},25,[494,1602,683],{"class":525},[494,1604,529],{"class":504},[494,1606,591],{"class":525},[494,1608,535],{"class":504},[494,1610,596],{"class":538},[494,1612,558],{"class":504},[494,1614,601],{"class":525},[494,1616,604],{"class":504},[494,1618,591],{"class":525},[494,1620,535],{"class":504},[494,1622,611],{"class":538},[494,1624,558],{"class":504},[494,1626,571],{"class":504},[494,1628,1471],{"class":574},[494,1630,571],{"class":504},[494,1632,580],{"class":504},[494,1634,1636],{"class":496,"line":1635},26,[494,1637,519],{"emptyLinePlaceholder":518},[494,1639,1641,1644,1646,1649,1651,1654],{"class":496,"line":1640},27,[494,1642,1643],{"class":525},"    ctx ",[494,1645,529],{"class":504},[494,1647,1648],{"class":525}," context",[494,1650,535],{"class":504},[494,1652,1653],{"class":538},"Background",[494,1655,542],{"class":504},[494,1657,1659,1661,1663,1665,1667,1669,1672,1674,1676,1678,1680,1683,1685,1687,1689,1691,1693,1695,1697,1700,1702,1704,1706,1708,1710,1713,1715,1717,1719],{"class":496,"line":1658},28,[494,1660,1563],{"class":500},[494,1662,760],{"class":525},[494,1664,529],{"class":504},[494,1666,908],{"class":525},[494,1668,535],{"class":504},[494,1670,1671],{"class":538},"Put",[494,1673,558],{"class":504},[494,1675,775],{"class":525},[494,1677,604],{"class":504},[494,1679,505],{"class":504},[494,1681,1682],{"class":574},"hello.txt",[494,1684,571],{"class":504},[494,1686,604],{"class":504},[494,1688,789],{"class":525},[494,1690,535],{"class":504},[494,1692,794],{"class":538},[494,1694,558],{"class":504},[494,1696,571],{"class":504},[494,1698,1699],{"class":574},"hello, disk",[494,1701,571],{"class":504},[494,1703,806],{"class":504},[494,1705,591],{"class":508},[494,1707,535],{"class":504},[494,1709,813],{"class":508},[494,1711,1712],{"class":504},"{});",[494,1714,760],{"class":525},[494,1716,1568],{"class":504},[494,1718,1571],{"class":504},[494,1720,678],{"class":504},[494,1722,1724,1726,1728,1730,1732,1734],{"class":496,"line":1723},29,[494,1725,1579],{"class":525},[494,1727,535],{"class":504},[494,1729,1584],{"class":538},[494,1731,558],{"class":504},[494,1733,1589],{"class":525},[494,1735,746],{"class":504},[494,1737,1739],{"class":496,"line":1738},30,[494,1740,1597],{"class":504},[494,1742,1744],{"class":496,"line":1743},31,[494,1745,519],{"emptyLinePlaceholder":518},[494,1747,1749,1752,1754,1756,1758,1760,1762,1764,1766,1768,1770,1772,1774,1776,1778,1780,1782,1785,1787,1790,1792,1796,1798,1801,1803,1806],{"class":496,"line":1748},32,[494,1750,1751],{"class":525},"    signed",[494,1753,604],{"class":504},[494,1755,760],{"class":525},[494,1757,529],{"class":504},[494,1759,908],{"class":525},[494,1761,535],{"class":504},[494,1763,1307],{"class":538},[494,1765,558],{"class":504},[494,1767,775],{"class":525},[494,1769,604],{"class":504},[494,1771,505],{"class":504},[494,1773,1682],{"class":574},[494,1775,571],{"class":504},[494,1777,604],{"class":504},[494,1779,591],{"class":508},[494,1781,535],{"class":504},[494,1783,1784],{"class":508},"TemporaryURLOptions",[494,1786,816],{"class":504},[494,1788,1789],{"class":525},"TTL",[494,1791,822],{"class":504},[494,1793,1795],{"class":1794},"sbssI"," 5",[494,1797,664],{"class":504},[494,1799,1800],{"class":525}," time",[494,1802,535],{"class":504},[494,1804,1805],{"class":525},"Minute",[494,1807,832],{"class":504},[494,1809,1811,1813,1815,1817,1819],{"class":496,"line":1810},33,[494,1812,1563],{"class":500},[494,1814,760],{"class":525},[494,1816,1568],{"class":504},[494,1818,1571],{"class":504},[494,1820,678],{"class":504},[494,1822,1824,1826,1828,1830,1832,1834],{"class":496,"line":1823},34,[494,1825,1579],{"class":525},[494,1827,535],{"class":504},[494,1829,1584],{"class":538},[494,1831,558],{"class":504},[494,1833,1589],{"class":525},[494,1835,746],{"class":504},[494,1837,1839],{"class":496,"line":1838},35,[494,1840,1597],{"class":504},[494,1842,1844,1847,1849,1852,1854,1856,1859,1861,1863,1866],{"class":496,"line":1843},36,[494,1845,1846],{"class":525},"    log",[494,1848,535],{"class":504},[494,1850,1851],{"class":538},"Println",[494,1853,558],{"class":504},[494,1855,571],{"class":504},[494,1857,1858],{"class":574},"aláírt link:",[494,1860,571],{"class":504},[494,1862,604],{"class":504},[494,1864,1865],{"class":525}," signed",[494,1867,746],{"class":504},[494,1869,1871],{"class":496,"line":1870},37,[494,1872,519],{"emptyLinePlaceholder":518},[494,1874,1876,1879,1881,1883,1885,1887],{"class":496,"line":1875},38,[494,1877,1878],{"class":525},"    mux ",[494,1880,529],{"class":504},[494,1882,1246],{"class":525},[494,1884,535],{"class":504},[494,1886,1251],{"class":538},[494,1888,542],{"class":504},[494,1890,1892,1895,1897,1899,1901,1903,1905,1907,1909,1911,1913,1915,1917,1919,1921,1923,1925,1927,1929,1931],{"class":496,"line":1891},39,[494,1893,1894],{"class":525},"    mux",[494,1896,535],{"class":504},[494,1898,1263],{"class":538},[494,1900,558],{"class":504},[494,1902,571],{"class":504},[494,1904,1270],{"class":574},[494,1906,571],{"class":504},[494,1908,604],{"class":504},[494,1910,1246],{"class":525},[494,1912,535],{"class":504},[494,1914,1281],{"class":538},[494,1916,558],{"class":504},[494,1918,571],{"class":504},[494,1920,1270],{"class":574},[494,1922,571],{"class":504},[494,1924,604],{"class":504},[494,1926,1294],{"class":525},[494,1928,535],{"class":504},[494,1930,1199],{"class":538},[494,1932,1301],{"class":504},[494,1934,1936,1938,1940,1942,1944,1947,1949,1952,1954,1956,1959,1961,1963,1966],{"class":496,"line":1935},40,[494,1937,1846],{"class":525},[494,1939,535],{"class":504},[494,1941,1584],{"class":538},[494,1943,558],{"class":504},[494,1945,1946],{"class":525},"http",[494,1948,535],{"class":504},[494,1950,1951],{"class":538},"ListenAndServe",[494,1953,558],{"class":504},[494,1955,571],{"class":504},[494,1957,1958],{"class":574},":8080",[494,1960,571],{"class":504},[494,1962,604],{"class":504},[494,1964,1965],{"class":525}," mux",[494,1967,580],{"class":504},[494,1969,1971],{"class":496,"line":1970},41,[494,1972,934],{"class":504},[480,1974,1976],{"id":1975},"kapcsolódó-oldalak","Kapcsolódó oldalak",[1978,1979,1980,1986,1994,1999],"ul",{},[1981,1982,1983,1985],"li",{},[471,1984,52],{"href":153},": a Driver\u002FDisk\u002FManager modell, és a dekorátorok, amikkel ezek a driverek komponálhatók.",[1981,1987,1988,1990,1991,1993],{},[471,1989,156],{"href":157},": a ",[452,1992,477],{},"-en keresztül elérhető teljes metódus-készlet.",[1981,1995,1996,1998],{},[471,1997,164],{"href":165},": a driver, amire egy production, több-instance-os telepítéshez váltani érdemes.",[1981,2000,2001,2003],{},[471,2002,169],{"href":170},": a konformancia-suite, amin mindkét driver átmegy.",[2005,2006,2007],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":490,"searchDepth":515,"depth":515,"links":2009},[2010,2011,2014,2015],{"id":482,"depth":515,"text":483},{"id":949,"depth":515,"text":950,"children":2012},[2013],{"id":1214,"depth":522,"text":1215},{"id":1321,"depth":515,"text":1322},{"id":1975,"depth":515,"text":1976},"A két driver, ami a gyökér storage modulban szállít, teszthez és egy-node-os telepítéshez.","md",null,{},{"icon":148},{"title":160,"description":2016},"6l5v3Sa0lqTaZzy2NsRA0OW3RYL7ZiOXsQAKtJp0p7o",[2024,2026],{"title":156,"path":157,"stem":158,"description":2025,"children":-1},"[object Object]",{"title":164,"path":165,"stem":166,"description":2027,"icon":167,"children":-1},"Az S3-kompatibilis driver, egy külön verziózott modul, minio-go-ra épülve.",1785445896765]