Programma planšetdatora mirgošanai ar img paplašinājuma programmaparatūru. Img programmaparatūras rediģēšana. Ext4 sistēmas attēla izjaukšana

MTwinTools ir utilīta, kas ļauj strādāt ar programmaparatūras failiem un attēliem boot.img, recovery.img un system.img. Lietderības autors ir vin2809 no 4pda foruma. Īpašniekiem noderēs MTwinTool Huawei viedtālruņi pamatojoties uz MTK procesoriem.

Lietotāja rokasgrāmata darbam ar MTwinTools

1. Ievads.

1.1. Mērķis.

MTwinTools rīks ir paredzēts tādu ierīču attēlu izjaukšanai/salikšanai, kuru pamatā ir MT mikroshēmas.

Tas ir paredzēts lietošanai komandrinda pamatojoties uz RKwinTools rīku, kas paredzēts darbam ar ierīcēm ar RK29xx-RK31xx mikroshēmām un dažām brīvi izplatītām programmām.

Darbojas tikai operētājsistēmā Windows 7 un jaunākās versijās, neinstalējot CYGWIN, kā arī nav nepieciešama papildu ceļu reģistrācija vides mainīgie OS.

Šis rīks ļauj:

  • izpakojiet un iesaiņojiet Boot.img attēlu;
  • izpakojiet un iesaiņojiet Recovery.img attēlu;
  • izpakojiet un iesaiņojiet Kernel.img attēlu;
  • izpakojiet un iesaiņojiet System.img attēlu, gan yaffs tipa, gan ext2-ext4;
  • konvertēt retinātu failu tipa sparse par attēlu, kura tips ir ext4;
  • aprēķināt faila kontrolsummu md5 formātā;
  • iniciēt SuperUser.

1.2. MTwinTools instalēšana.
Instrumenta uzstādīšana tiek veikta, izsaiņojot arhīvu jebkurā jums ērtā vietā. Tādējādi tiks izveidota MTwinTools mape, kurā būs:

  • mapes _In/, App/ un Cygwin/;
  • kā arī Readme.txt un menu.bat faili.

Mape _In ir tukša, un tajā ir paredzēti avota attēli apstrādei. Lietotne/mape satur komandu failu kopu, kas apstrādā attēlus. Cygwin/ mapē ir brīvi izplatāmas utilītu bibliotēkas un faili. Readme.txt failā ir lietotāja norādījumi, t.i. tekstu, kuru pašlaik lasāt. Fails menu.bat tiek izmantots, lai izveidotu MTwinTools rīku izvēlni.

UZMANĪBU. NAV NEPIECIEŠAMS, lai norādītu piekļuves ceļus pakalpojuma failiem Windows OS vides mainīgajos.

Darba laikā parādīsies citas nepieciešamās mapes:

  • Pack, kurā pēc tam būs sāknēšanas, atkopšanas un sistēmas faili
    pakotnes, md5 mapi, kurā ir faili ar kontrolsummu, kā arī mapi
    Programmaparatūra, kuras attēla apakšmapē atradīsies samontētie sāknēšanas faili,
    Atkopšana un sistēma;
  • Izpakojiet, kurā sāknēšanas, atkopšanas un sistēmas faili ir PILNĪGI izpakoti
    atradīsies mapē Programmaparatūra, apakšmapē Attēls.

1.3. MTwinTools atinstalēšana.

Rīks tiek atinstalēts, dzēšot rīka saknes mapi, t.i. MTwinTools mapes.

2. Darba pamatnoteikumi.

2.1.Lai sāktu darbu, jums ir jāpalaiž fails menu.bat, kas atvērs rīka izvēlni.

2.2.Izsaiņošanai paredzētie attēli jāievieto rīka mapē _In. Ievades failu nosaukumos OBLIGĀTI jāsatur atslēgvārdi, un tiem var būt šādi nosaukumi:

  • *boot*.img;
  • *atkopšana*.img;
  • *kodolu*.img;
  • *sistēma*.img.

2.3.Pirmoreiz startējot, inicializējiet instrumentu. Kad rīks ir inicializēts, VISI faili, kas atrodas mapē _In, tiks kopēti uz darba ievades mapi Unpack/Firmware/Image. Tas tiek darīts, lai saglabātu sākotnējos failus.

2.4.Pēc attēla izjaukšanas tā saturs tiks ievietots mapē Unpack, kurā tiks izveidota šāda mapju struktūra:

Sāknēšana (atkopšana)/cfg/
kodols/
ramdisk/

Mapē cfg/ būs attēla iestatījumi, kodola mapē atradīsi kodolu, t.i. zImage binārais fails, un mapē ramdisk būs viss pārējais. Lai saliktu attēlu, tā sastāvdaļas, t.i. Ievietojiet RAM disku, kodolu un, iespējams, iestatījumus attiecīgajās izpakošanas mapēs. Izveidotais attēls atradīsies pakotnes izvades mapē.

3. Preces apraksts.

3.1. Galvenā komandu izvēlne.

Galvenā rīku komandu izvēlne izskatās šādi:

**************************
* MTwinTools_V_0.6 *
**************************
*Attēlu komandas:*
* ————— *
*1-Boot*
*2-Atgūšana*
*3-kodols*
*4-Sistēma*
*5-Citas komandas*
* *
**************************
* Rīku komandas: *
* ————— *
*6 iniitu rīki*
*7-Tīrs*
* *
**************************
*8-Iziet*
**************************
Lūdzu, izvēlieties komandu:

Komanda tiek atlasīta, ievadot tās priekšā norādīto numuru. Pašreizējā versijā varat veikt šādas darbības:

— dodieties uz sāknēšanas attēla apstrādes izvēlni, ierakstot skaitli “1”;
— dodieties uz atkopšanas attēlu apstrādes izvēlni — “2”;
— dodieties uz Kernel attēlu apstrādes izvēlni — “3”;
— dodieties uz Sistēmas attēlu apstrādes izvēlni — “4”;
— dodieties uz citu komandu izvēlni — “5”;
- inicializējiet instrumenta darba zonu - "6";
- notīriet izstrādājuma darba zonu - "7";
— pabeigt darbu, t.i. iziet no objekta - "8".

3.2. Sāknēšanas izvēlne.

Lai turpinātu sāknēšanas attēla apstrādi, palaidiet komandu “1-Boot”. Tas novirzīs jūs uz izvēlni “Sāknēšanas komandas”.

Sāknēšanas attēla apstrādes izvēlne izskatās šādi:

**************************
* Sāknēšanas komandas: *
* ————— *
*1 sāknēšanas izpakošana*
*2 boot pack*
* *
**************************
*3-Atgriešanās*
**************************
Lūdzu, izvēlieties komandu:

Komanda “1” izpako sāknēšanas attēlus, komanda “2” iesaiņo sāknēšanas attēlus. Komanda “3” atgriežas rīka galvenajā izvēlnē.

2.2.1. Boot.img attēla izjaukšana.

2.2.2. Izveidojiet boot.img attēlu.

Veidojot sāknēšanas attēlu, tiks parādīta izvēlne datu avota atlasei.

**************************
* Izvēles avota attēls: *
* 1. Izsaiņojiet direktoriju *
* 2. Iepakojuma direktorijs *
*3.Atgriezties*
**************************
Lūdzu, izvēlieties avotu:

Jums ir iespēja izveidot attēlu no neizsaiņota attēla, kas atrodas mapē Unpack/Boot; lai to izdarītu, atlasiet izvēlnes vienumu “1. Izpakojiet dir." Ja izvēlaties izvēlnes vienumu “2. Pack dir", tad attēls tiks izveidots no datiem, kas atrodas mapē Pack/boot. Lai atceltu darbību, atlasiet izvēlnes vienumu “3. Atgriezties". Tajā pašā laikā jūs
atgriezieties izvēlnē “Sāknēšanas komandas”.

3.3. Atkopšanas izvēlne.

Lai turpinātu atkopšanas attēla apstrādi, palaidiet komandu “2-Recovery”. Tas novirzīs jūs uz izvēlni “Atkopšanas komandas”. Atkopšanas attēla apstrādes izvēlne izskatās šādi:

**************************
* Atkopšanas komandas: *
* —————— *
* 1 atkopšanas izpakošana *
* 2 atkopšanas pakotne*
* *
**************************
*3-Atgriešanās*
**************************
Lūdzu, izvēlieties komandu:

Komanda “1” izpako atkopšanas attēlus, komanda “2” iesaiņo atkopšanas attēlus. Komanda “3” atgriežas rīka galvenajā izvēlnē.
2.3.1. Atkopšanas.img attēla izjaukšana.

Visas darbības tiek veiktas automātiski, t.i. Bez jūsu līdzdalības šeit nav ko aprakstīt.

2.3.2. Izveidojiet recovery.img attēlu.

Veidojot atkopšanas attēlu, tiks parādīta izvēlne datu avota atlasei.

**************************
* Izvēles avota attēls: *
* 1. Izsaiņojiet direktoriju *
* 2. Iepakojuma direktorijs *
*3.Atgriezties*
**************************
Lūdzu, izvēlieties avotu:

Jums ir iespēja izveidot attēlu no neizsaiņota attēla, kas atrodas mapē Izpakošana/atkopšana, lai to izdarītu, atlasiet izvēlnes vienumu “1. Izpakojiet dir." Ja izvēlaties izvēlnes vienumu “2. Pack dir", tad attēls tiks izveidots no datiem, kas atrodas mapē Pack/Recovery.

Lai atceltu darbību, atlasiet izvēlnes vienumu “3. Atgriezties". Tādējādi jūs atgriezīsities izvēlnē “Atkopšanas komandas”.

3.4. Kodola izvēlne.

Lai turpinātu kodola attēla apstrādi, palaidiet komandu “3-Kernel”. Tas novirzīs jūs uz izvēlni “Kodola komandas”.

Kodola attēlu apstrādes izvēlne izskatās šādi:

**************************
* Kodola komandas: *
* —————— *
* 1 kodola izpakošana *
*2 kodolu pakotne*
* *
**************************
*3-Atgriešanās*
**************************
Lūdzu, izvēlieties komandu:

Komanda “1” izpako kodola attēlus, komanda “2” iesaiņo kodola attēlus. Komanda “3” atgriežas rīka galvenajā izvēlnē.

3.4.1. Kernel.img attēla izjaukšana.

Visas darbības tiek veiktas automātiski, t.i. Bez jūsu līdzdalības šeit nav ko aprakstīt.

3.4.2. Kernel.img attēla izveide.

Veidojot kodola attēlu, tiks parādīta izvēlne datu avota atlasei.

**************************
* Izvēles avota attēls: *
* 1. Izsaiņojiet direktoriju *
* 2. Iepakojuma direktorijs *
*3.Atgriezties*
**************************
Lūdzu, izvēlieties avotu:

Jums ir iespēja izveidot attēlu no neizsaiņota attēla, kas atrodas mapē Unpack/Kernel; lai to izdarītu, atlasiet izvēlnes vienumu “1. Izpakojiet dir." Ja izvēlaties izvēlnes vienumu “2. Pack dir", tad attēls tiks izveidots no datiem, kas atrodas mapē Pack/Kernel.

Lai atceltu darbību, atlasiet izvēlnes vienumu “3. Atgriezties". Tādējādi jūs atgriezīsities izvēlnē “Kodola komandas”.

3.5. Izvēlņu sistēma.

Lai turpinātu sistēmas attēla apstrādi, palaidiet komandu “3-System”. Tas novirzīs jūs uz izvēlni "Sistēmas komandas".

Sistēmas attēlu apstrādes izvēlne izskatās šādi:


* Sistēmas komandas: *
* ——————————————— *
* 1-paka yaffs * 2-pack yaffs *
* 3 izpakots ext3 * 4 pakots ext3 *
* 5 izpakots ext4 * 6 pack ext4 *
* 7-rets līdz ext4 * *
* * *
***************************************************
*8-Atgriešanās*
***************************************************
Lūdzu, izvēlieties komandu:

3.5.1. Sistēmas attēla izjaukšana kā yaffs.

Komanda “1” izpako yaffs tipa sistēmas attēlus mapē Unpack/System.

3.5.2. Sistēmas tēla veidošana kā yaffs.

Komanda “2” iepako yaffs tipa sistēmas attēlus. Tiks parādīta izvēlne datu avota atlasei.

**************************
* Izvēles avota attēls: *
* 1. Izsaiņojiet direktoriju *
* 2. Iepakojuma direktorijs *
*3.Atgriezties*
**************************
Lūdzu, izvēlieties avotu:

Jums ir iespēja izveidot attēlu no neizsaiņota attēla, kas atrodas mapē Unpack/system, lai to izdarītu, atlasiet izvēlnes vienumu “1. Izpakojiet dir." Ja izvēlaties izvēlnes vienumu “2. Pack dir", tad attēls tiks izveidots no datiem, kas atrodas mapē Pack/system.

Lai atceltu darbību, atlasiet izvēlnes vienumu “3. Atgriezties”, un jūs atgriezīsities iepriekšējā izvēlnē “Sistēmas komandas”.

3.5.3. Ext3 tipa sistēmas attēla izjaukšana.

Komanda “3” izpako sistēmas attēlus, kuru tips ir ext2-ext3, mapē Unpack/System.

3.5.4. Ext3 tipa sistēmas attēla izveide.

Komanda “4” izveido sistēmas attēlu, kura tips ir ext2-ext3. Iepakošana tiek veikta līdzīgi kā 3.5.2. punktā. tikai izvades attēls būs ext3 tipa.

3.5.5. Ext4 tipa sistēmas attēla izjaukšana.

Komanda “5” izpako ext4 sistēmas attēlus mapē Unpack/System.

3.5.6. Ext4 tipa sistēmas attēla izveide.

Komanda “6” veido ext4 tipa sistēmas attēlu. Iepakošana tiek veikta līdzīgi kā 3.5.2. punktā. tikai izvades attēls būs ext4 tipa.

3.5.7. Pārveidojiet retu saspiestu attēlu uz ext4.

Komanda “7” pārveido (pārveido vai pārkodē) retā tipa saspiestus attēlus ext4 tipa attēlos (analogi simg2img darbībai).

3.5.8.Atgriezties uz galveno izvēlni.

Komanda “8” atgriežas rīka galvenajā izvēlnē.

3.6. Citu komandu izvēlne.

Lai pārietu uz citu komandu izpildi, izpildiet komandu “5-Citas komandas”. Tas novirzīs jūs uz izvēlni “Citas komandas”. Citu komandu izpildes izvēlne izskatās šādi:

**************************
* Citas komandas: *
* —————- *
*1 Init SuperUser*
* 2-Aprēķināt md5 *
* *
**************************
*3-Atgriešanās*
**************************
Lūdzu, izvēlieties komandu:

Komanda “1” inicializē SuperUser sistēmas attēlā, komanda “2” aprēķina faila kontrolsummu. Komanda “3” atgriežas rīka galvenajā izvēlnē.

3.6.1. SuperUser inicializēšana.

Inicializējot SuperUser, tiks parādīta avota izvēles izvēlne:

**************************
* Izvēles avota ievads: *
* 1. Izsaiņojiet direktoriju *
* 2. Iepakojuma direktorijs *
*3.Atgriezties*
**************************
Lūdzu, izvēlieties avotu:

Jums ir iespēja inicializēt neizsaiņoto attēlu, kas atrodas mapē Unpack/system, lai to izdarītu, atlasiet izvēlnes vienumu “1. Izpakojiet dir." Ja izvēlaties izvēlnes vienumu “2. Pack dir", pēc tam tiks inicializēts attēls, kas atrodas mapē Pack/system. Lai atceltu darbību, atlasiet izvēlnes vienumu “3. Atgriezties".
Inicializācija tiek veikta, kopējot nepieciešamie faili(su un SuperSU.apk) izjauktā System.img attēlā. Lai iegūtu root piekļuvi, jums ir nepieciešams:

— izsaiņojiet sistēmas attēlu, izmantojot galvenās izvēlnes komandu “3”.
rīkus vai ievietojiet neizsaiņoto attēlu mapē Unpack (vai Pack)/System/;
— izpildiet komandu “1-init SuperUser” izvēlnē “Citas komandas”.

Pēc System.img attēla mirgošanas jūsu ierīcē būs saknes piekļuve. Ja citas versijas faili tiek izmantoti, lai ierīcē iegūtu saknes piekļuvi, jums vienkārši jāatjaunina (aizstāj) su un SuperSU.apk faili mapē App/.

3.6.2. Kontrolsummas aprēķins.

Lai aprēķinātu faila vai failu kontrolsummu, ievietojiet tos mapē Pack/md5/. Pēc komandas “2-Calculate md5” izpildes tiks pievienoti visi faili, kas atrodas mapē Pack/md5 čekas summa, kas aprēķināts, izmantojot md5 algoritmu. Tiek apstrādāti tikai faili bez paplašinājuma vai ar paplašinājumu .img, .tar, .zip.

3.7. Inicializācija.

Lai veiktu inicializāciju, palaidiet komandu “6-init Tools”. Tādējādi tiks izveidotas visas nepieciešamās mapju struktūras, lai MTwinTools darbotos, un iekopētu ievades attēlus darba mapē Unpack/Firmware/Image.

3.8. Produkta tīrīšana.

Lai notīrītu darba zonu, ierakstiet “7-CLEAN”. Tādā gadījumā VISAS papildu mapes kopā ar to saturu tiks dzēstas, MTwinTools pabeigs savu darbu un ieņems tādu formu, kāda tai bija uzreiz pēc instalēšanas.

3.9. Izeja.

Lai izietu, sastādiet “8-Exit”. Šajā gadījumā TIKAI produkts iznāks bez tīrīšanas.

Interpolācija, interpolācija- skaitļošanas matemātikā metode daudzuma starpvērtību atrašanai no esošās diskrētās zināmo vērtību kopas.

Daudziem no tiem, kas nodarbojas ar zinātniskiem un inženiertehniskiem aprēķiniem, bieži ir jādarbojas ar vērtību kopām, kas iegūtas empīriski vai izlases veidā. Parasti, pamatojoties uz šīm kopām, ir jākonstruē funkcija, kurā ar augstu precizitāti varētu iekrist citas iegūtās vērtības. Šo uzdevumu sauc tuvināšana. Interpolācija ir aproksimācijas veids, kurā konstruētās funkcijas līkne iet precīzi caur pieejamajiem datu punktiem.

Ir daudz ierobežotu atšķirību interpolācijas metožu. Lielākā daļa
Ņūtona metode priekšējai interpolācijai (Ņūtona-Gregorija metode) ir izplatīta. Interpolācijas polinomam šajā gadījumā ir šāda forma:

Mēs atrodam koeficientus C, izmantojot formulu:

Programmas ieviešana C# valodā:
izmantojot sistēmu; nosaukumvietas interpolācija ( klase Programma…

Šķirošanas algoritmu vizualizācija

Programma ir sadalīta divos pavedienos, no kuriem vienā tiek veikta šķirošana, bet otrā - pārzīmēšana GUI. Pēc noklikšķināšanas uz pogas “Kārtot” programma izsauc “RunSorting” metodi, kurā tiek definēts kārtošanas algoritms un tiek izveidots jauns pavediens, kurā darbojas šķirošanas process.
privāts tukšums RunSo…

Kacher Brovina uz KT819G

Šodien gribu parādīt savu Kacher, ko taisīju pagājušajās ziemas brīvdienās. Es neaprakstīšu visu ražošanas procesu, jo internetā ir daudz rakstu. Es rakstīšu tikai par tā galvenajiem parametriem.

Zemāk ir daži fotoattēli, kas uzņemti ierīces montāžas laikā.

Spole ir uztīta ar aptuveni 2000 0,08 mm stieples apgriezieniem uz PVC caurules ar diametru 50 mm un augstumu 200 mm.

Kā terminālis tika izmantota plāksne no vecās. cietais disks. Viss pārējais tika salikts saskaņā ar diagrammu, kas atrodas pašā lapas apakšā.

Pirmais variants tika darbināts no veca datora barošanas avota, ar spriegumu 12 V. Pēc tam tika izgatavots atsevišķs barošanas avots, ar spriegumu 30 V un ar iebūvētu dzesēšanu.

Ierīces diagramma:

Kas ir CORS un kā to lietot

Starpdomēnu resursu koplietošana (CORS) ir W3C specifikācija, kas nodrošina starpdomēnu saziņu pārlūkprogrammā. Izmantojot XMLHttpRequest objektu, CORS ļauj izstrādātājiem strādāt ar tādām pašām idiomām kā pieprasījumiem ar to pašu domēnu. CORS lietošanas gadījums ir vienkāršs. Iedomājieties, ka vietnei alice.com ir daži dati, ko bob.com vēlas iegūt. Šāda veida pieprasījums tradicionāli nav atļauts saskaņā ar to pašu pārlūkprogrammas izcelsmes politiku. Tomēr, atbalstot CORS pieprasījumus, alice.com var pievienot dažas īpašas atbilžu galvenes, kas ļauj bob.com piekļūt datiem. Kā redzams šajā piemērā, CORS atbalstam ir nepieciešama koordinācija starp serveri un klientu. Par laimi, ja esat klienta puses izstrādātājs, jūs esat pasargāts no lielākās daļas šīs informācijas. Pārējā šī raksta daļa parāda, kā klienti var izpildīt vairāku izcelsmes pieprasījumus un kā serveri var konfigurēt sevi, lai atbalstītu CORS. Turpinājums…

Gandrīz visi android lietotājs viedtālruni, radās vēlme izveidot vai rediģēt programmaparatūru atbilstoši jūsu vajadzībām un vēlmēm. Šajā rakstā mēs aplūkosim CWM programmaparatūras rediģēšanas principu (zip formātā).

Sagatavošana:

Pirmkārt, mums ir jāizlemj, kuru programmaparatūru izmantosim par pamatu. Labāk ir izmantot off. programmaparatūra zip. Gandrīz katrai izplatītajai ierīcei ir tīra programmaparatūra + sakne.
Kad programmaparatūra ir atlasīta, tā ir jālejupielādē jebkurā jums ērtā vietā datorā (nav nepieciešams izpakot).
Vajadzēs arī arhivētāju, iesaku izmantot 7zip un labākā šāda veida teksta redaktors Notepad++.

Programmaparatūras struktūra:

Atverot arhīvu ar programmaparatūru, tiek parādīts šāds:
META-INF- Mapē ir programmaparatūras instalēšanas skripti.
sistēma- mape ar visiem programmaparatūras failiem (lietojumprogrammas, pielāgojumi, skripti utt.).
boot.img- sistēmas kodols.

Gandrīz visas manipulācijas tiek veiktas mapē sistēma, tā struktūra:
lietotne- sistēmas lietojumprogrammas.
atkritumu tvertne- pašas sistēmas resursi.
utt- Skripti, pielāgojumi, konfigurācijas, profili un sistēmas iestatījumi.
fonti- Sistēmas fonti.
ietvaros- šeit tiek glabāti galvenie sistēmas faili (grafika, animācijas teksta iestatījumi utt.).
lib- sistēmu bibliotēkas.
plašsaziņas līdzekļi- multivides faili (paziņojumu zvana signāli, ielādes animācija, tapetes utt.).
usr- iestatījumi, kurus sistēma nākotnē nevar mainīt (tie darbojas tikai lasīšanas režīmā).
xbin- atkal sistēmas konfigurācijas un citi uzlabojumi.
build.prop- informācija par sistēmu, lokalizācijas iestatījumiem un sistēmas veiktspēju.

Lietojumprogrammas:

Pirms programmatūras pievienošanas/noņemšanas sistēmai, jums ir jāpārbauda, ​​vai programmaparatūra ir deodeksēta (tas ir, pārbaudiet, vai lietotņu mapē nav .odex failu. Ja ir faili, jums tie ir jāatbrīvojas, izmantojot šo instrukcijas .
Pievienojiet programmaparatūrai programmatūru:
Pirmkārt, viedtālrunī jāinstalē tās programmas, kuras vēlaties pievienot montāžai. Pēc instalēšanas mēs tos noņemam no sistēmas, izmantojot Root Explorer un tā analogi, tie atrodas datu/lietotnes ceļā, mums ir nepieciešami arī to libi (ja tādi, protams, pastāv), tie atrodas datu/datu ceļā. Tie atrodas lietojumprogrammas mapē ar tādu pašu nosaukumu, un tiem ir paplašinājums .tātad. Tad sagrāba .apk ievietojiet failus arhīvā pa ceļu sistēmu/lietotni un failus ar paplašinājumu .tātad(libs) pa ceļu system/lib .
Mēs noņemam programmatūru no programmaparatūras:
Šeit viss ir vienkārši, dodieties uz mapi lietotne- mēs izlemjam, kas mums nav vajadzīgs, un noņemam visu nevajadzīgo programmatūru (labāk sistēmai nepieskarties).

Valoda un programmaparatūras versija:

Kopējiet failu build.prop uz darbvirsmu. Atveriet to ar piezīmju grāmatiņu un atrodiet rindas:

ro.product.locale.language=en
ro.product.locale.region=ASV

krievu valodā jums jādara šādi:

ro.product.locale.language=ru
ro.product.locale.region=RU

rindā ievadiet sava moda nosaukumu

tajā pašā būvniecībā.prop

Grafikas māksla:

Visa programmaparatūras grafiskā daļa tiek glabāta divos failos framework-res.apk faila ceļš sistēmas ietvars un SystemUI.apk sistēmas lietotne. Un iestatījumu lietojumprogrammas grafiskā daļa dabiski tiek saglabāta lietojumprogrammā Settings.apk.

Skripti un uzlabojumi (sistēmas paātrināšana un optimizācija):

Lielākā daļa iestatījumu tiek veikti failā build.prop, jūs varat lasīt par to. Arī tad, ja jūsu kodols atbalsta init.d Sistēmas optimizēšanai ir vairāki skripti, viens no tiem ir aprakstīts šajā rakstā (RAM optimizācija) un šajā rakstā Pielāgojiet init.d skriptus

Sistēmas fontu aizstāšana:

Kā minēts iepriekš, visi fonti atrodas mapē fonti, galvenie fonti ir: DroidSans.ttf un DroidSans-Bold.ttf tos var aizstāt ar jebkuriem fontiem, pārdēvējot tos līdzīgi kā iepriekš un pārvietojot ar aizstāšanu uz arhīvu ar programmaparatūru mapē fonti.

Kodols:

Teorētiski pietiek ar nomaiņu boot.img savs, bet dažos gadījumos serdeņiem ir pievienoti papildu skripti. Tāpēc iesaku neko nedarīt, ja rodas šaubas.



Sāksim ar faktu, ka jums ir nepieciešams Linux. Operētājsistēmā Windows varat izjaukt tikai programmaparatūru, taču tehnisku iemeslu dēļ to nevarēsit atkal salikt kopā. Tagad par programmaparatūru. Tie parasti tiek izplatīti ZIP arhīvu veidā, kas tiek nodrošināti, izmantojot pielāgotu atkopšanu. Tas ir viens no tiem, kas mums būs vajadzīgs eksperimentiem. Iesaku sākt romodeļa ceļu ar kaut ko pēc iespējas tuvāku AOSP pielāgota programmaparatūra, jo tas bieži vien ir vieglāk saprotams nekā krājums.

  1. Izsaiņojiet arhīvu ar programmaparatūru jebkurā mapē.
  2. Lejupielādējiet skriptu no saites un izpakojiet to jebkurā mapē.
  3. Mēs palaižam ext failu (ja tas sūdzas par Java trūkumu, vienkārši izlaidiet, nospiežot y; Java ir nepieciešama tikai iesaiņošanai).
  4. Tagad atlasiet izsaiņošanu, nospiežot pogu 1 un pēc tam Enter.
  5. Blakus ext failam un rīku mapei parādīsies jauna mape ar nosaukumu ekstrakts_*. Kopējiet tajā failus system.new.dat un system.transfer.list.
  6. Pēc failu kopēšanas nospiediet taustiņu Enter un gaidiet. Pēc kāda laika jums būs vēlreiz jānospiež Enter, jāievada administratora parole un vēlreiz jānospiež Enter.
  7. Gatavs. Sistēmas saturs atrodas mapē extract_*/output.

Manuālā metode

Izsaiņojiet arhīvu ar programmaparatūru jebkurā mapē (piemēram, rom):

$ mkdir ~/rom $ unzip path_to_archive -d ~/rom/

Lejupielādējiet nepieciešamos rīkus šajā mapē:

$ cd ~/rom $ wget https://github.com/xpirt/sdat2img/raw/master/sdat2img.py

Palaidīsim skriptu:

$ chmod +x sdat2img.py $ ./sdat2img.py system.transfer.list system.new.dat system.img

Tas pārveido failu system.new.dat neapstrādātā attēlā, ko sauc par system.img . Pievienojiet attēlu mnt apakšmapē:

$ mkdir mnt $ sudo mount -t ext4 -o cilpa system.img ~/rom/mnt

Android direktoriju struktūra

Pēc sistēmas izpakošanas parādīsies šāda direktoriju struktūra:

  • lietotne - iepriekš instalētas lietojumprogrammas ar standarta privilēģijām;
  • privātā lietotne- iepriekš instalētas lietojumprogrammas ar paaugstinātām privilēģijām, ieskaitot dažus sistēmas komponentus;
  • atkritumu tvertne- binārie faili ELF formātā, kas ir /bin un /usr/bin direktoriju analogs operētājsistēmā Linux. Satur dažādus sistēmas komponentus, ko izmanto augstāka līmeņa sistēmas komponenti;
  • utt- iestatījumu faili. Pilnīgs /etc analogs operētājsistēmā Linux, taču to izmanto tikai tie paši sistēmas komponenti. Android lietojumprogrammas veikals individuālie iestatījumi direktorijos /data/data/;
  • fonti- fonti. Pēc noklusējuma tajā ir tikai Roboto zīmola fonti;
  • ietvaros- sistēmas un lietojumprogrammu izmantoto Java klašu bibliotēkas. Ir arī fails framework-res.apk, kurā ir pilns interfeisa apraksts operētājsistēma, ieskaitot visus grafiskos failus;
  • lib Un lib64- Linux bibliotēkas, ko izmanto zema līmeņa sistēmas komponenti. /lib un /usr/lib direktoriju analogs operētājsistēmā Linux, ieskaitot tālāk minēto standarta bibliotēkas, piemēram, libc, libz, libssl. Ierīcēs ar ARMv7 arhitektūru un zemāku versiju lib64 direktorija trūks;
  • plašsaziņas līdzekļi- multivides faili: zvana signāli, paziņojumu skaņas, interfeisa skaņas un OS ielādes animācija;
  • tts- runas sintezatoram nepieciešamie faili;
  • usr- direktorijs, kurā parasti ir faili, kas nepieciešami lietojumprogrammu palaišanai no bin direktorija. Būtībā /usr/share analogs;
  • pārdevējs- ierīces ražotāja nodrošinātie faili. Parasti satur bināro programmaparatūru dažādiem aparatūras komponentiem, piemēram, Wi-Fi modulim;
  • xbin- izvēles direktorijs; pielāgota programmaparatūra to izmanto, lai saglabātu tādas lietas kā bash tulks, SSH, PowerTOP, BusyBox un citi noderīgi rīki;
  • build.prop- fails, kurā ir informācija par montāžu, kā arī dažādi zema līmeņa iestatījumi;
  • addon.d- satur skriptus, kas tiek palaisti pēc programmaparatūras instalēšanas. GApps šeit raksta arī savu skriptu, pateicoties kuram tie tiek atdzīvināti pēc programmaparatūras atkārtotas instalēšanas.

Tagad, kad esam iepazinušies ar Android pamatstruktūru, sāksim veikt izmaiņas.

Lietojumprogrammu noņemšana un pievienošana

Visi iepriekš instalētas programmas var atrast divās mapēs:

  • /sistēma/lietotne/;
  • /system/priv-app/.

Tie atšķiras viens no otra ar piekļuves privilēģijām. Ja programmām no lietotnes ir tādas pašas atļaujas kā trešo pušu programmas(piemēram, instalēta no Play veikala), tad lietojumprogrammas no privātās lietotnes var izmantot priviliģētās API (priviliģētās tiesības). Vairāk par to varat uzzināt no.

Lai iepriekš instalētu lietojumprogrammu programmaparatūrā, vienkārši nometiet tās APK failu mapē /system/app/. Jūs, protams, varat izveidot atsevišķu mapi, taču mūsu gadījumā tam nav jēgas, jo mape tiek izmantota bibliotēku un odex failu glabāšanai, kuru mums vienkārši nav. Lai to noņemtu, vienkārši izdzēsiet mapi ar to.

Varat iet tālāk un aizstāt krājumu lietojumprogrammas ar analogiem. Piemēram, lai aizstātu kalendāru, izdzēsiet mapi Kalendārs un kopējiet mūsu iecienītāko com.rpagyc.simplecalendar.apk mapē /system/app. Un jums tas nav jākopē. Tad programmaparatūra būs bez kalendāra.

Galvenais, kas jāatceras, ir tas, ka akciju programmas var būt saistītas viena ar otru. Tāpēc vienas programmas dzēšana var izraisīt citas programmas pilnīgu nedarbojamību (piemēram, CalendarProvider un Calendar: dzēšot pirmo, jūs padarīsit nedarbojamu ne tikai akciju kalendāru, bet arī jebkuru citu kalendāru). Par laimi, tīrā AOSP programmaparatūrā nav daudz starpsavienojumu.

Ielādes animācijas maiņa

Animācija tiek saglabāta kā PNG attēli, kas bez saspiešanas tiek iesaiņoti arhīvā /system/media/bootanimation.zip. Arhīva iekšpusē ir:

  • desc.txt- fails, kas apraksta animāciju;
  • daļa0- mape ar animācijas failiem, kas tiek atskaņoti vispirms;
  • daļa 1- mape ar animācijas failiem, kas tiek atskaņoti otrajā vietā;
  • daļa?- pēdējā mape, kuras beigās tiek atskaņoti attēli.

Failā desc.txt var būt kaut kas līdzīgs

1920 1080 60 p 1 0 daļa0 p 0 0 daļa1

Šo līniju mērķis ir intuitīvs: 1920 × 1080 ir attēla izšķirtspēja, 60 ir kadru skaits sekundē. Part0 un part1 norāda mapes, no kurām tiks atskaņota animācija, un atskaņošanas secību. Kopumā var būt viena daļa vai vairākas (trīs vai vairākas).

Daļu mapēs esošie attēli ir numurēti ar pieciem cipariem atskaņošanas secībā: 00000.png, 00001.png, 00002.png... Šos attēlus var aizstāt ar saviem, tādējādi izveidojot oriģinālu animāciju. Vai arī varat vienkārši izdzēst failu bootanimation.zip. Pēc tam ierīce parādīs animāciju no standarta Android. Vai arī izmantojiet gatavu animāciju kolekciju vietnē w3bsit3-dns.com.

Skaņas dizaina maiņa

Faktiski visas sistēmas atskaņotās skaņas tiek saglabātas mapē /system/media/audio. Tā iekšpusē atradīsit šādas mapes:

  • trauksmes signāli- modinātāja melodijas;
  • paziņojumi- paziņojumu skaņas;
  • zvana signālus- zvana signāli;
  • ui- sistēmas skaņas, piemēram, zems akumulatora uzlādes līmenis, kameras fokusēšana, interfeisa elementu izvēle.

Modinātājiem, paziņojumiem, zvana signāliem varat pievienot tik daudz melodiju, cik vēlaties. Jūs varat tos ņemt, piemēram, šeit:

  • standarta zvana signāli no dažādiem Nokia tālruņiem un viedtālruņiem;

Un neliels dzīves uzlauzums: failu dzēšana no ui mapes neizraisīs avārijas un kļūdas, bet gan sistēmas skaņu pazušanu. Tāpēc jūs varat viegli izslēgt attēla uzņemšanas skaņu no kameras vai ekrānuzņēmuma uzņemšanu, vienkārši izdzēšot failus, kas satur šīs skaņas (to nosaukumi ir intuitīvi).

Fontu pievienošana

Fonti tiek saglabāti fontos. Arhīvus ar fontu failiem varat atrast vietnēs w3bsit3-dns.com un XDA. Lai instalētu, vienkārši kopējiet un nomainiet ttf failus no arhīva uz fontu mapi.

Sistēmas iestatījumu maiņa (build.prop)

Sistēmas attēlā ir interesants fails build.prop, kas satur daudz noderīgas informācijas par ierīces aparatūru un dažādu krājumu lietojumprogrammu noklusējuma iestatījumiem. Taisnības labad jāatzīmē, ka tas ne vienmēr tā ir. Piemēram, Gigaset ME un ME Pro build.prop ir sadalīts divās daļās. Viena daļa satur Gigaset ME iestatījumus, un ME Pro dažas līnijas tiek dublētas, bet taustiņi (viedtālruņa nosaukums utt.) ir atšķirīgi. Tas tika darīts, lai nodrošinātu vairāk vai mazāk pareizu vienas programmaparatūras darbību dažādās ierīcēs.


Build.prop satur (vai var saturēt) ļoti daudz iestatījumu. Daži no tiem neko nemaina, daži uzlabo vienu lietu uz cita rēķina, bet ir tādi, kas patiešām noder:

  • ro.product.model Un ro.product.manufacturer- viedtālruņa modelis un ražotāja nosaukums. Nomainot šīs līnijas, jūs varat likt Play veikalam domāt, ka jums ir cits viedtālrunis, kas atvērs piekļuvi lielākai programmatūrai. Visiem mazpazīstamajiem Ķīniešu viedtālruņišīs līnijas var glābt dzīvību;
  • hw.qemu.mainkeys- ņem tikai divas vērtības: 0 - rādīt ekrāna navigācijas taustiņus, 1 - nerādīt pogas. Līnijas neesamība atbilst 0;
  • debug.sf.nobootanimation- vērtība 1 atspējo ielādes animāciju, kas nedaudz palielina tās ātrumu. Iestatot to uz 0 vai izdzēšot rindu, animācija tiek atgriezta savā vietā;
  • ro.telephony.default_network- norāda sistēmai, uz kuru režīmu tā jāpārslēdz Mobīlais tīkls iekraušanas laikā;
  • ro.sf.lcd_density- Displeja DPI, visprecīzāko displeja vērtību var aprēķināt, izmantojot ērtu vietni. Bet neviens neaizliedz iestatīt augstāku vai mazāku vērtību pēc jūsu vēlmēm: augstākas vērtības padara interfeisa elementus lielākus, zemākas vērtības padara saskarnes elementus mazākus;
  • ro.config.vc_call_vol_steps- skaļuma soļu skaits zvana laikā (noklusējums 8);
  • ro.config.media_vol_steps- multivides skaļuma soļu skaits (noklusējums 15).

Mēs ieviešam Google Apps programmaparatūrā

Gandrīz vienmēr ir pieejama pielāgota programmaparatūra Google pakalpojumi un lietojumprogrammu veikals. Izstrādātāji iesaka tos instalēt atsevišķi, izmantojot GApps pakotni. Tomēr to var integrēt tieši programmaparatūrā.

Vispirms jums ir jālejupielādē GApps pakotne. Iesaku ņemt Open GApps arhīvus. Izvēlies tu Android versija, procesora arhitektūra un konfigurācijas opcija (Pico, Nano, Stock...), kas nosaka, cik daudz dažādu Google lietojumprogrammas satur arhīvu. Iesaku lejupielādēt Pico versiju. Tajā ir tikai Play veikals un tā darbībai nepieciešamo bibliotēku kopa.

GApps integrēšana programmaparatūrā tiek veikta šādi:

  1. Izsaiņojiet GApps ZIP arhīvu, izmantojot jebkuru arhivētāju.
  2. Dodieties uz mapi Core.
  3. Mēs redzam daudzus arhīvus ar paplašinājumu .tar.lz. Izvilkt, izmantojot lzip.
  4. Pēc izpakošanas kopējiet failus no mapēm uz attiecīgajām sistēmas mapēm. No direktoriju struktūras arhīvā ir viegli uzminēt, ko kur mest. Piemēram, konfigurētājs (no ekrānuzņēmuma) ir jāievieto mapē Priv-app.
  5. Dodieties uz mapi GApps (atrodas blakus Core) un veiciet 3. un 4. darbību tajā esošajiem failiem.
  6. Tas arī viss, mēs esam integrējuši GApps mūsu programmaparatūrā!

Brīva vieta

Ir jāsaprot, ka programmaparatūras instalēšanas vieta ir ierobežota. Jūs nevarat instalēt programmaparatūru, kuras izmērs pārsniedz ierīces sistēmas nodalījuma izmēru. Varat apskatīt tā vērtību, izmantojot:

$ adb apvalks df /system

Otrā iespēja: ievietojiet ierīcē termināli un ierakstiet komandu

$df/sistēma

Jūs varat uzzināt nodalījuma lielumu baitos, instalējot BusyBox savā viedtālrunī un izpildot komandu terminālī

$ busybox df -B 1 /sistēma

Vai tas pats ar izmantojot ADB:

$ adb apvalks busybox df -B 1 /sistēma

Programmaparatūras aizņemtā vieta būs aptuveni vienāda ar sistēmas izmēru, kad tā ir izpakota. Kopumā, veidojot programmaparatūru, ir jārēķinās, ka lietotājs var tai pa virsu arī mirgot dažādas modifikācijas (SuperSU, Xposed) vai pārsūtīt aplikācijas uz sistēmas sadaļu. Piemēram, Google minimālajai lietojumprogrammu pakotnei (Pico) ir nepieciešami vismaz 150 MB papildu instalācijas vietas.

Ja nepieciešams, programmaparatūras faila lielumu var samazināt, dzēšot ne tikai nevajadzīgas programmas no /system/app (/system/priv-app) un zvanu skaņas no system/media/audio un bootanimation.zip, bet arī:

  • /system/tts/lang_pico- netiks ietekmētas primitīvā balss dzinēja Pico TTS, Google balss dzinēja valodas;
  • /system/usr/srec/config/- bezsaistes valodas. Ja nepieciešams, vēlāk varat to lejupielādēt tiešsaistē.

Montāža

Pēc izmaiņu veikšanas viss ir jāsaliek kopā. Vispirms iesaiņosim sistēmas sadaļu failā system.new.dat . Lejupielādējiet mums nepieciešamos rīkus:

$ wget https://github.com/xpirt/img2sdat/raw/master/img2sdat.py $ wget https://github.com/xpirt/img2sdat/raw/master/blockimgdiff.py $ wget https://github. com/xpirt/img2sdat/raw/master/common.py $ wget https://github.com/xpirt/img2sdat/raw/master/rangelib.py $ wget https://github.com/xpirt/img2sdat/raw/ master/sparse_img.py $ sudo apt-get install android-tools-fsutils

Pārveidosim savu mapi atpakaļ uz RAW attēlu. Sauksim to par system_new.img:

$ sudo make_ext4fs -T 0 -S file_contexts -l 1073741824 -a system system_new.img output/

1073741824 tiek mainīts uz sistēmas nodalījuma lielumu baitos. Būtu ieteicams to pat padarīt nedaudz mazāku. Mēs izveidojam retu attēlu no RAW attēla:

$ img2simg system_new.img system_snew.img

Pārveidosim savu attēlu par system.transfer.list un system.new.dat, kas jāiemet arhīvā kopā ar programmaparatūru, bet vispirms mēs izdzēsīsim vecos failus:

$ rm -rf system.transfer.list $ rm -rf system.new.dat $ rm -rf system.patch.dat $ chmod +x img2sdat.py $ ./img2sdat.py system_snew.img

Atdalīsim programmaparatūras failus no liekā miziņa (faili, kurus lejupielādējām darbam. Šim nolūkam ir ērti izmantot arhīvu ar programmaparatūru). Izdzēsts? Tagad jums ir jāiepako programmaparatūra ZIP arhīvā (ar jebkuru arhivētāju).

Atliek tikai parakstīties arhīvā. To var izdarīt gan pašā Android, izmantojot ZipSigner, gan personālajā datorā (jums būs jāinstalē Java):

$ wget https://github.com/appium/sign/raw/master/dist/sign.jar $ java -jar file.zip

Zemūdens akmeņi

Veidojot system.new.dat, var rasties vairākas problēmas, ko izraisa pastāvīgas izmaiņas ģenerēšanas mehānismos Android programmaparatūra. Iepriekš aprakstītajai metodei vajadzētu darboties labi, ja programmaparatūra ir balstīta uz Android 5.1; jaunākām versijām var būt grūtības, tāpēc jums būs jāizmanto citas veidošanas rīku versijas. Diemžēl mēs nevaram aprakstīt visas montāžas nianses, tāpēc jums var nākties to meklēt Google.

Uzstādīšana

Lai instalētu pielāgotu programmaparatūru, jums ir nepieciešama pielāgota programmaparatūra atgūšana TWRP, kas ļauj instalēt neparakstītu vai parakstītu ar testa atslēgas programmaparatūru (tas ir tieši tas, ko mēs izveidojām). Žurnālā esam vairākkārt aprakstījuši tā instalēšanas procesu, un jūsu ierīcei veltītajos foruma pavedienos parasti ir pietiekami daudz informācijas, lai to izdarītu.

TWRP

secinājumus

Šajā rakstā ir aprakstīta tikai milzīga aisberga virsotne, ko sauc par "programmaparatūras modifikāciju". “Nopietna” programmaparatūra ne tikai papildina kodolu un pašu programmaparatūru ar krājuma lietojumprogrammām ar daudzām funkcijām (kas bieži tiek ņemtas no citiem kodoliem un programmaparatūras), organizējot vai pat mainot to mijiedarbības principus, bet arī var radikāli mainīt sistēmas darbības principus. OS. Tiesa, šāds uzlauzts vairs nav Android, bet gan atsevišķa OS, pat ja tur var uzstādīt Play servisus (starp citu, šādas darbības, maigi izsakoties, Google neveicina). Neaizmirstiet: visi ražotāju apvalki - TouchWiz, ZenUI, HTC Sense un tā tālāk - ir vienkārši pielāgoti, maksimāli saistīti ar ierīces aparatūru un viens ar otru.

Interpolācija, interpolācija- skaitļošanas matemātikā metode daudzuma starpvērtību atrašanai no esošās diskrētās zināmo vērtību kopas.

Daudziem no tiem, kas nodarbojas ar zinātniskiem un inženiertehniskiem aprēķiniem, bieži ir jādarbojas ar vērtību kopām, kas iegūtas empīriski vai izlases veidā. Parasti, pamatojoties uz šīm kopām, ir jākonstruē funkcija, kurā ar augstu precizitāti varētu iekrist citas iegūtās vērtības. Šo uzdevumu sauc tuvināšana. Interpolācija ir aproksimācijas veids, kurā konstruētās funkcijas līkne iet precīzi caur pieejamajiem datu punktiem.

Ir daudz ierobežotu atšķirību interpolācijas metožu. Lielākā daļa
Ņūtona metode priekšējai interpolācijai (Ņūtona-Gregorija metode) ir izplatīta. Interpolācijas polinomam šajā gadījumā ir šāda forma:

Mēs atrodam koeficientus C, izmantojot formulu:

Programmas ieviešana C# valodā:
izmantojot sistēmu; nosaukumvietas interpolācija ( klase Programma…

Programma ir sadalīta divos pavedienos, no kuriem vienā tiek veikta šķirošana, bet otrā tiek pārzīmēts grafiskais interfeiss. Pēc noklikšķināšanas uz pogas “Kārtot” programma izsauc “RunSorting” metodi, kurā tiek definēts kārtošanas algoritms un tiek izveidots jauns pavediens, kurā darbojas šķirošanas process.
privāts tukšums RunSo…

Šodien gribu parādīt savu Kacher, ko taisīju pagājušajās ziemas brīvdienās. Es neaprakstīšu visu ražošanas procesu, jo internetā ir daudz rakstu. Es rakstīšu tikai par tā galvenajiem parametriem.

Zemāk ir daži fotoattēli, kas uzņemti ierīces montāžas laikā.

Spole ir uztīta ar aptuveni 2000 0,08 mm stieples apgriezieniem uz PVC caurules ar diametru 50 mm un augstumu 200 mm.

Kā terminālis tika izmantota plāksne no vecā cietā diska. Viss pārējais tika salikts saskaņā ar diagrammu, kas atrodas pašā lapas apakšā.

Pirmais variants tika darbināts no veca datora barošanas avota, ar spriegumu 12 V. Pēc tam tika izgatavots atsevišķs barošanas avots, ar spriegumu 30 V un ar iebūvētu dzesēšanu.

Ierīces diagramma:

Starpdomēnu resursu koplietošana (CORS) ir W3C specifikācija, kas nodrošina starpdomēnu saziņu pārlūkprogrammā. Izmantojot XMLHttpRequest objektu, CORS ļauj izstrādātājiem strādāt ar tādām pašām idiomām kā pieprasījumiem ar to pašu domēnu. CORS lietošanas gadījums ir vienkāršs. Iedomājieties, ka vietnei alice.com ir daži dati, ko bob.com vēlas iegūt. Šāda veida pieprasījums tradicionāli nav atļauts saskaņā ar to pašu pārlūkprogrammas izcelsmes politiku. Tomēr, atbalstot CORS pieprasījumus, alice.com var pievienot dažas īpašas atbilžu galvenes, kas ļauj bob.com piekļūt datiem. Kā redzams šajā piemērā, CORS atbalstam ir nepieciešama koordinācija starp serveri un klientu. Par laimi, ja esat klienta puses izstrādātājs, jūs esat pasargāts no lielākās daļas šīs informācijas. Pārējā šī raksta daļa parāda, kā klienti var izpildīt vairāku izcelsmes pieprasījumus un kā serveri var konfigurēt sevi, lai atbalstītu CORS. Turpinājums…




Tops