Ievads
TÄ sagadÄ«jÄs, ka pÄdÄjos gandrÄ«z divus gadus es mÄcu programmÄÅ”anu vienÄ no Kijevas IT skolÄm. Es sÄku to darÄ«t Just For Fun. KÄdreiz rakstÄ«ju programmÄÅ”anas blogu, tad atteicos no tÄ. TaÄu vÄlme interesentiem pastÄstÄ«t noderÄ«gas lietas nav zudusi.
Mana galvenÄ valoda ir Java. Es tajÄ rakstÄ«ju spÄles mobilajiem telefoniem, radiosakaru programmatÅ«ru un dažÄdus tÄ«mekļa pakalpojumus. Un es mÄcu Java.
Å eit es vÄlos pastÄstÄ«t stÄstu par savas pÄdÄjÄs grupas apmÄcÄ«bu. KÄ viÅi pÄrgÄja no apmÄcÄ«bas uzsÄkÅ”anas lÄ«dz darbojoÅ”a tÄ«mekļa pakalpojuma rakstÄ«Å”anai. NoderÄ«gs tÄ«mekļa pakalpojums uztura bagÄtinÄtÄju atraÅ”anai. Bezmaksas, bez reklÄmas, reÄ£istrÄcijas un SMS.
Pats pakalpojums ir Ŕeit -
Projekts ir izglÄ«tojoÅ”s un nesatur reklÄmu. KÄ es saprotu no
Pirms paÅ”a projekta aprakstÄ«Å”anas es jums pastÄstÄ«Å”u nedaudz par grupas mÄcÄ«bu procesu, bez tÄ attÄls bÅ«s nepilnÄ«gs.
9 mÄneÅ”u apmÄcÄ«ba
SkolÄ, kurÄ pasniedzu, Java kurss ir sadalÄ«ts 2 daļÄs. KopumÄ kurss aizÅem aptuveni 9 mÄneÅ”us ar visiem pÄrtraukumiem (Jaungada brÄ«vdienas, laiks starpprojektu rakstÄ«Å”anai).
PirmajÄ daÄ¼Ä skolÄni tiek iepazÄ«stinÄti ar valodas pamatjÄdzieniem. MainÄ«gie, metodes, OOP pamati un visas Ŕīs lietas.
Kursa otrÄ daļa paredz, ka students jau vairÄk vai mazÄk saprot, kÄ rakstÄ«t Java valodÄ, un viÅam var iedot āpieauguÅ”oā tehnoloÄ£iju kaudzi. Viss sÄkas ar SQL, tad JDBC, Hibernate. PÄc tam HTTP, servleti. NÄkamais ir pavasaris, nedaudz par git un maven. Un studenti raksta gala projektus.
Visas apmÄcÄ«bas ir sadalÄ«tas moduļos. NodarbÄ«bas vadÄ«ju divas reizes nedÄļÄ. Vienas nodarbÄ«bas ilgums ir divas stundas.
Mana pieeja mÄcÄ«bÄm
Izlaidu 5 grupas. Diviem gadiem Ŕķiet daudz, bet gandrÄ«z vienmÄr paralÄli vadÄ«ju 2 grupas.
Esmu izmÄÄ£inÄjis dažÄdas pieejas.
Pirmais variants ir tÄds, ka prezentÄcijai ar teoriju tiek atvÄlÄts viens pÄris. Otrais pÄris ir tÄ«ra prakse. Å Ä« pieeja kaut kÄ darbojÄs, bet, manuprÄt, tÄ nebija pÄrÄk efektÄ«va.
Otrs variants, pie kura nonÄcu un pie kÄ Å”obrÄ«d strÄdÄju, ir veselu pÄri neveltÄ«t teorijai. TÄ vietÄ es 5-10 minÅ«tes sajaucu Ä«sas teorijas sadaļas un nekavÄjoties pastiprinu tÄs ar praktiskiem piemÄriem. Å Ä« pieeja darbojas labÄk.
Ja ir pietiekami daudz laika, es saucu studentus pie sevis, apsÄdinu viÅus pie sava klÄpjdatora, un viÅi paÅ”i taisa praktiskus piemÄrus. Tas darbojas lieliski, bet diemžÄl tas aizÅem daudz laika.
Ne visi tiek līdz galam
Man atklÄjums bija fakts, ka ne visa grupa sasniedz kursa beigas.
PÄc maniem novÄrojumiem tikai puse studentu raksta gala darbu. LielÄkÄ daļa no tiem tiek likvidÄti kursa pirmajÄ daļÄ. Un tie, kas sasnieguÅ”i otro daļu, parasti nekrÄ«t.
ViÅi aizbrauc dažÄdu iemeslu dÄļ.
Pirmais ir sarežģītÄ«ba. NeatkarÄ«gi no tÄ, ko viÅi saka, Java nav vienkÄrÅ”ÄkÄ valoda. Lai uzrakstÄ«tu pat visvienkÄrÅ”Äko programmu, ir jÄsaprot klases, metodes jÄdziens. Un lai saprastu, kÄpÄc jÄraksta publisks static void main (String[] arg) Ir vÄl daži jÄdzieni, kas jÄsaprot.
SalÄ«dziniet to ar Turbo Pascal, ar ko daudzi cilvÄki sÄka, tostarp es:
begin
writeln("ŠŠµŃŠ²Š°Ń ŠæŃŠ¾Š³ŃŠ°Š¼Š¼Š°");
end.
Cik man zinÄms, skola Å”o problÄmu atrisinÄs, ievieÅ”ot papildu pÄrbaudes. Tagad ne visi var mÄcÄ«ties Java. Tas joprojÄm ir koncepcijas stadijÄ, taÄu solis noteikti ir pareizais.
Un otrs iemesls ir tÄds pats kÄ zemÄk esoÅ”ajÄ attÄlÄ:
CilvÄki bieži domÄ, ka programmÄÅ”ana ir saistÄ«ta ar daudz teksta ierakstÄ«Å”anu un lielas naudas saÅemÅ”anu par to. TÄpat kÄ tekstu autors, tikai vairÄk naudas.
RealitÄte ir nedaudz savÄdÄka. Daudz rutÄ«nas koda, nepÄrprotamas kļūdas, pastÄvÄ«gs mÄcÄ«bu process. Tas ir interesanti, bet ne visiem.
TÄda ir statistika. SÄkumÄ tas mani apbÄdinÄja, domÄju, ka varbÅ«t daru ko nepareizi. Tagad es saprotu, ka statistika par lielÄko daļu kursu ir aptuveni vienÄda. Tagad es par to neuztraucos, bet mÄcu tos cilvÄkus, kuriem tas interesÄ.
Ideja par pakalpojumu
Kad studenti bija pabeiguÅ”i visu kursu, bija pienÄcis laiks rakstÄ«t gala darbu. Bija dažÄdas idejas. ViÅi piedÄvÄja ToDo lapas, projektu vadÄ«bas projektus un kaut ko citu.
Es gribÄju izdarÄ«t kaut ko vienkÄrÅ”u, bet noderÄ«gu. Mans kritÄrijs bija vienkÄrÅ”s ā vai mÄs ar draugiem varÄjÄm to izmantot. TÄ«mekļa pakalpojums pÄrtikas piedevu meklÄÅ”anai atbilda Ŕīm prasÄ«bÄm.
Ideja ir vienkÄrÅ”a. PÄrkot preci veikalÄ, jÅ«s redzat sastÄvÄ kaut kÄdu E-piedevu. No koda nav skaidrs, cik tas ir vai nav bÄ«stams (un ir arÄ« bÄ«stamas piedevas, kas daudzÄs valstÄ«s ir aizliegtas).
JÅ«s atverat vietni, ievadÄt pielikuma nosaukumu (numuru, vienu no alternatÄ«vajiem nosaukumiem) un saÅemat pielikuma kopsavilkumu:
Ir lÄ«dzÄ«gi projekti. Varat arÄ« vienkÄrÅ”i ievadÄ«t piedevu Google, lai gan tas ne vienmÄr parÄda informÄciju pareizi.
Bet tÄ kÄ projekts ir izglÄ«tojoÅ”s, iepriekÅ” minÄtÄs grÅ«tÄ«bas mÅ«s neapturÄja :)
IevieŔana
Visi rakstÄ«ja Java valodÄ,
MÄs bijÄm 7, ieskaitot mani. Ikviens iesniedza izvilkÅ”anas pieprasÄ«jumu, un es vai cita persona no grupas pieÅÄmu Å”o piesaistes pieprasÄ«jumu.
Projekta Ä«stenoÅ”ana aizÅÄma aptuveni mÄnesi ā no idejas izteikÅ”anas lÄ«dz stÄvoklim, kÄdu redzat tagad.
ParsÄÅ”anas piedevas
PirmÄ lieta, ko viens no studentiem veica, papildus pamata izveidei ap datu bÄzi (entÄ«tijÄm, krÄtuvÄm utt.), bija pievienojumprogrammu parsÄÅ”ana no esoÅ”as informÄcijas vietnes.
Tas bija nepiecieÅ”ams, lai pÄrbaudÄ«tu atlikuÅ”os punktus. Nav nepiecieÅ”ams papildu kods datu bÄzes aizpildÄ«Å”anai. PÄc vairÄku piedevu Ätras parsÄÅ”anas mÄs varÄjÄm turpinÄt pÄrbaudÄ«t lietotÄja interfeisu, ŔķiroÅ”anu un filtrÄÅ”anu.
Spring Boot ļauj izveidot vairÄkus profilus. Profils ir fails ar iestatÄ«jumiem.
IzstrÄdÄtÄja videi mÄs izmantojÄm profilu ar vietÄjo H2 DBVS un noklusÄjuma HTTP portu (8080). TÄdÄjÄdi katru reizi, kad lietojumprogramma tika palaists, datubÄze tika notÄ«rÄ«ta. ParsÄtÄjs Å”ajÄ gadÄ«jumÄ bija tas, kas mÅ«s izglÄba.
MeklÄÅ”ana un filtrÄÅ”ana
SvarÄ«gs punkts ir meklÄÅ”ana un filtrÄÅ”ana. Personai veikalÄ Ätri jÄnoklikŔķina uz piedevas koda vai kÄda no nosaukumiem un jÄsaÅem rezultÄts.
TÄpÄc entÄ«tijai Additive ir vairÄki lauki. Å is ir piedevas kods, alternatÄ«vie nosaukumi, apraksts. MeklÄÅ”ana tiek veikta, izmantojot Like visos laukos vienlaikus. Un, ja ievadÄ«sit [123] vai [amarants], jÅ«s iegÅ«sit tÄdu paÅ”u rezultÄtu.
MÄs to visu izdarÄ«jÄm, pamatojoties uz specifikÄcijÄm. Å Ä« ir pavasara daļa, kas ļauj aprakstÄ«t pamata meklÄÅ”anas nosacÄ«jumus (piemÄram, kÄdu lauku), un pÄc tam apvienot Å”os nosacÄ«jumus (VAI vai UN).
Kad esat uzrakstÄ«jis duci specifikÄciju, varat uzdot sarežģītus vaicÄjumus, piemÄram, āvisas bÄ«stamÄs krÄsvielas, kuru aprakstÄ ir vÄrds [sarkans]ā.
RunÄjot par darbu ar Spring datubÄzi, man tas Ŕķiet ļoti Ärti. Tas jo Ä«paÅ”i attiecas uz darbu ar sarežģītiem vaicÄjumiem. Es saprotu, ka tam ir savas pieskaitÄmÄs izmaksas, un manuÄli rakstÄ«ts un optimizÄts SQL vaicÄjums darbosies ÄtrÄk.
Bet es arÄ« pieturos pie viedokļa, ka nevajag visu iepriekÅ” optimizÄt. Pirmajai versijai ir jÄuzsÄk, jÄdarbojas un jÄļauj nomainÄ«t atseviŔķas detaļas. Un, ja ir slodze, Ŕīs atseviŔķÄs daļas ir jÄpÄrraksta.
DroŔība
Tas ir vienkÄrÅ”i. Ir lietotÄji ar ADMINA lomu ā viÅi var rediÄ£Ät papildinÄjumus, dzÄst tos un pievienot jaunus.
Un ir arÄ« citi lietotÄji (reÄ£istrÄti vai ne). ViÅi var tikai pÄrlÅ«kot piedevu sarakstu un meklÄt vajadzÄ«gÄs.
Pavasara droŔība tika izmantota tiesÄ«bu atdalÄ«Å”anai. LietotÄja dati tiek glabÄti datu bÄzÄ.
LietotÄji var reÄ£istrÄties. Tagad tas neko nedod. Ja skolÄni turpinÄs attÄ«stÄ«t pakalpojumu un ieviest dažas personalizÄtas funkcijas, tad reÄ£istrÄcija noderÄs.
Atsaucība un Bootstrap
NÄkamais punkts ir pielÄgoÅ”anÄs spÄja. MÅ«su pakalpojuma gadÄ«jumÄ (vismaz tÄ, kÄ mÄs to redzÄjÄm), lielÄkÄ daļa lietotÄju bÅ«s ar mobilajiem tÄlruÅiem. Un jums Ätri jÄskata papildinÄjums no sava mobilÄ tÄlruÅa.
Lai neciestu ar CSS, paÅÄmÄm Bootstrap. LÄti, jautri un izskatÄs pieklÄjÄ«gi.
Es nevaru nosaukt interfeisu par ideÄlu. GalvenÄ lapa ir vÄl mazÄka, un lapa detalizÄtam piedevas aprakstam ir Å”aura, mobilajos tÄlruÅos tÄ ir jÄpadara plaÅ”Äka.
Varu tikai teikt, ka centos pÄc iespÄjas mazÄk traucÄt darbu. Å is joprojÄm ir studentu projekts. Un, protams, puiÅ”i vÄlÄk varÄs izlabot Å”Ädus momentus.
SEO optimizÄcijas minÅ«te
TÄ kÄ vairÄk nekÄ divus gadus esmu cieÅ”i saistÄ«ts ar vietnÄm un visu, kas saistÄ«ts ar SEO, nevarÄju izlaist projektu bez vismaz pamata SEO optimizÄcijas.
Faktiski es katram papildinÄjumam izveidoju virsraksta un apraksta veidnes Ä£enerÄÅ”anu. URL ir gandrÄ«z CNC, lai gan to var padarÄ«t Ä«sÄku.
Pievienoju arÄ« apmeklÄjuma skaitÄ«tÄjus. Vietne ir pievienota Yandex Webmaster un Google Search Console, lai pÄrraudzÄ«tu meklÄtÄjprogrammu brÄ«dinÄjumus.
Ar to nepietiek. PilnÄ«gai indeksÄÅ”anai ir jÄpievieno arÄ« fails robots.txt un sitemap.xml. Bet atkal Å”is ir studentu projekts. Es viÅiem pastÄstÄ«Å”u, kas jÄdara, un, ja viÅi gribÄs, viÅi to darÄ«s.
Jums jÄpievieno SSL sertifikÄts. Darbosies arÄ« bezmaksas Let's Encrypt. Es to izdarÄ«ju Spring Boot. Tas nav grÅ«ti izdarÄms, un PS uzticÄ«ba pieaug.
Kas bÅ«s tÄlÄk par projektu?
Tad patiesÄ«bÄ izvÄle ir puiÅ”u ziÅÄ. Projekta sÄkotnÄjÄ ideja ietvÄra arÄ« produktu datubÄzi ar saitÄm uz piedevÄm.
Ievadiet āSnickersā un skatiet, kÄdas uztura piedevas tas satur.
Jau projekta sÄkumÄ zinÄju, ka mums nebÅ«s nekÄdu produktu :) TÄpÄc sÄkÄm tikai ar piedevÄm.
Tagad jÅ«s varat pievienot produktus un ieviest papildu produktus. maizÄ«tes. Ja tÄ ir plaÅ”a datu bÄze, lietotÄji bÅ«s.
IzvietoŔana
Projekts tika izvietots VPS, Aruba Cloud. Å is ir lÄtÄkais VPS, ko mÄs varam atrast. Å o pakalpojumu sniedzÄju saviem projektiem izmantoju vairÄk nekÄ gadu, un esmu ar to patÄ«kami apmierinÄts.
VPS raksturlielumi: 1 GB RAM, 1 CPU (par frekvenci nezinu), 20 GB SSD. MÅ«su projektam ar to pietiek.
Projekts ir veidots, izmantojot parasto mvn tÄ«ro paketi. RezultÄts ir tauku burka - izpildÄms fails ar visÄm atkarÄ«bÄm.
Lai to visu nedaudz automatizÄtu, es uzrakstÄ«ju pÄris bash skriptus.
Pirmais skripts izdzÄÅ” veco jar failu un izveido jaunu.
Otrais skripts palaiž salikto burku, nododot tai vajadzÄ«gÄ profila nosaukumu. Å is profils satur datu bÄzes savienojuma informÄciju.
DB ā MySQL tajÄ paÅ”Ä VPS.
KopÄjÄ projekta restartÄÅ”ana ietver:
- piesakieties VPS, izmantojot SSH
- lejupielÄdÄjiet jaunÄkÄs git izmaiÅas
- palaist local-jar.sh
- nogalinÄt darbojoÅ”os lietojumprogrammu
- palaist launch-production.sh
Å Ä« procedÅ«ra aizÅem trÄ«s minÅ«tes. Man tÄ Å”Ä·iet gudra izvÄle tik mazam projektam.
Grūtības
GalvenÄs grÅ«tÄ«bas, veidojot projektu, bija organizatoriskas.
Ir cilvÄku grupa, kas it kÄ prot programmÄt, bet ne pÄrÄk labi. ViÅi kaut ko zina, bet joprojÄm nevar to Ä«sti pielietot. Un tagad viÅiem projekts jÄpabeidz mÄneÅ”a laikÄ.
Es identificÄju nosacÄ«tu komandas vadÄ«tÄju Å”ajÄ grupÄ. ViÅÅ” uzturÄja Google dokumentu ar uzdevumu sarakstu, sadalÄ«ja uzdevumus un kontrolÄja to pieÅemÅ”anu. ViÅÅ” arÄ« pieÅÄma vilkÅ”anas pieprasÄ«jumus.
Es arÄ« lÅ«dzu studentus katru vakaru uzrakstÄ«t Ä«su ziÅojumu par darbu, ko viÅi veica projektÄ. Ja jÅ«s neko nedarÄ«jÄt, labi, vienkÄrÅ”i ierakstiet āneko nedarÄ«juā. Å Ä« ir lieliska prakse un nedaudz sasprindzina. DiemžÄl ne visi ievÄroja Å”o noteikumu.
Visas Ŕīs kustÄ«bas mÄrÄ·is bija vienkÄrÅ”s. Izveidojiet komandu, pat ja tikai uz Ä«su laiku, lai strÄdÄtu kopÄ.
GribÄju, lai puiÅ”i jÅ«t, ka viÅu darbs ir svarÄ«gs. Saprotiet, ka viÅi neraksta sfÄrisku kodu vakuumÄ. Un tas, ko viÅi dara kopÄ, ir projekts, ko cilvÄki pÄc tam izmantos.
PirmÄ vai divas nedÄļas bija uzkrÄÅ”anÄs. VienÄ«bas un nelielas saistÄ«bas tika veiktas gausi. PamazÄm es viÅus uzbudinÄju, un darbs kļuva jautrÄks. SaziÅa ÄatÄ kļuva dzÄ«vÄka, studenti piedÄvÄja savus papildinÄjumus.
Uzskatu, ka mÄrÄ·is ir sasniegts. Projekts ir paveikts, puiÅ”i ieguva nelielu pieredzi strÄdÄjot komandÄ. Ir redzams, taustÄms rezultÄts, ko var parÄdÄ«t draugiem un attÄ«stÄ«t tÄlÄk.
Atzinumi
MÄcÄ«ties ir interesanti.
PÄc katras nodarbÄ«bas es atgriezos emocionÄli satraukta. CenÅ”os padarÄ«t katru pÄri unikÄlu un nodot pÄc iespÄjas vairÄk zinÄÅ”anu.
PatÄ«kami, kad manis vadÄ«tÄ grupa iekļūst finÄlÄ. Tas ir Ä«paÅ”i forÅ”i, kad puiÅ”i raksta: "Es dabÅ«ju darbu, viss ir kÄrtÄ«bÄ, paldies." Pat ja tas ir juniors, pat ja sÄkotnÄji tÄ nav lielÄkÄ nauda. Bet vissvarÄ«gÄkais ir tas, ka viÅi spÄra soli pretÄ« savÄm vÄlmÄm, un viÅiem tas izdevÄs.
Lai gan raksts izrÄdÄ«jÄs diezgan apjomÄ«gs, noteikti nebija iespÄjams aptvert visus punktus. TÄpÄc rakstiet savus jautÄjumus komentÄros.
Avots: www.habr.com