Web Development rasprave/preporuke/problemi
- Uređivano
Brijac OOP svakako (Što C# i jest), naučit kao prvo klase, vrste klasa, propertyje (private, public itd.), metode... Osnovne stvari, bez toga nećeš daleko jer sve što pišeš budeš pisao kao klasu unutar određenih namespaceova i onda pozivao odnosno instancirao istu i koristio reusabilne stvari. Ja ne znam sve napamet, ali znam što trebam za koju situaciju pa si pomognem na stack overflowu po potrebi. Kada znaš googlat problem, naći ćeš i rješenje
Preporučio bi ti Mosha:
Pogledaj što od njega ima na Udemyju ili nekom takvom sajtu, i uzmi full course, te ga prođi. Mosh je doktor za C# i objašnjava po meni najbolje od svih tih online učitelja. Mislim da ima i neke .NET projekte koje prolazi, znam da sam dizao .NET Core backend jednom prilikom, samo se ne sjećam više jel bio njegov tečaj ili neki drugi (previše sam ih prošao).
Edit:
Vidim da Traversy Media isto ima projekt, on mi je isto odličan lik (malo čudno priča, ali svi projekti su mu baš jebeni jer je sve aktualno što radi):
Radim ja nešto malo sa C#-om u Unity-u, ali iskreno nemam pojma jel to OOP ili nije. Hvala na savjetu, bacim oko na ovo što si rekao.
C# je oop, nije proceduralan kao c++
Imam već hrpu tutoriala + ovo gore od foggy-a tak da će se naći nešto da se nabrzinu prođe prije edukacije.
yakuza_stinger Među ostalim, C++ je objektno-orijentirani programski jezik, samo što je u isto vrijeme i proceduralni. Primjenjiv je na više načina. Kombinirano s time da je relativno low-level u usporedbi s C#-o, Javom ili Pythonom, C++ se smatra vrlo snažnim programskim jezikom.
S druge strane, da C# i Java bi bili potpuno objektno-orijentirani programski jezici. Iako gledanje na to je li nešto čisti OO jezik je po nekima cjepidlačenje. Neki traže i najsitnije razlike da se pokuša definirati što bi bio čisti OO jezik, drugi tvrde da je dovoljno zadovoljavati osnovne principe OOP-a da bi se smatrao OO jezikom. Uglavnom, komplikacije.
Fico Među ostalim, C++ je objektno-orijentirani programski jezik, samo što je u isto vrijeme i proceduralni. Primjenjiv je na više načina. Kombinirano s time da je relativno low-level u usporedbi s C#-o, Javom ili Pythonom, C++ se smatra vrlo snažnim programskim jezikom.
Ili ukratko; Ako znaš kodirati u C-u ili C++-u, znaš u svim ostalim jezicima Sve što automatikom rješavaš u C# i Javi, C i C++ to ne radi tako i moraš sve živo sam odraditi
C# mi je osobno najdraži programski jezik, ali pisao sam kod u dosta njih, i kad znaš jedan, znaš ih sve.
Nije bas post za ovaj topic, ali da ne otvaram drugi
@Fico, @foggy, bilo tko drugi...
Imam dva polja koja treba usporediti po jednoj zajednickoj kolumni odnosno stupcu. Radi se o email adresi gdje se gleda koji clanovi prvog polja nisu prisutni u drugom polju i obrnuto.
Za ovo sam napisao binary search algoritam i to sve radi. Medutim, kako bi binary search radio, inicijalno polje mora biti sortirano po email adresi.
Radi se o obicnom stringu i koristio sam Sort-object cmdlet u PWSu, ali sam primjetio da ne radi dobro svoj posao za pojedine entrye.
Onda sam napisao algoritam za quick sort (mozete na wiki pogledat o cemu se radi) i to radi ok... ALI samo na polju sa jednim stupcem.
Kako ja imam polje sa vise stupaca gdje primjerice ROW1 ima medusobno povezane podatke za stupac 1, 2, 3 i 4, ovaj quick sort bi trebao nakon sortiranja stupca 1, pretumbat adekvatno i ostale stupce polja.
Imate li kakav savjet, ideju kako primjeniti quicksort na polje sa vise stupaca?
chono U kojem formatu imas te kolone? Imas neki excel file ili nesto?
Quick solucija Javascript:
Array emal adresa jednom stupca, foreach petlja, contains metoda kroz drugi array u kojem gledas jel ga ima, ako ima, trpas u novi array ili sto zelis.
Ali zanima me izvor adresa. Excel ti ima VSLookup koji ti to odradi u 3 klika
@foggy i @sanzo problem je sto su ta dva polja zapravo dobivena exportom iz dva totalno odvojena sustava i enrichao sam dodatno podacima iz ADa. Nije baza, vec ta dva polja postoje samo unutar skripte.
Koristio sam powershell je u njemu znam delat.
Dakle contains i slicne metode rade, ali se skripta vrti po 5min. Sa binary search algoritmom to se radi u par sekundi. Imam vise ovakvih skripti, zbog stvari o kojima ne smijem pisati,, pa mi je 5min po skripti previse vremena za daily runove
chono Mozes skriptu rekreirat da sadrzi strukturu iz primjera i zakacit negdje da probamo nesto? Barem da napravis te kolone i objasnis jos tocnije sta iz koje i gdje vucem? Tesko mi je napamet pricat, moram uzet u ruke i probat, radio sam svasta kroz powershell i cudno mi je da ti traje dugo. Ali i dalje mi fali malo konteksta. Koristim TeamCity, poweshell i bash, pa znam neke stvari napisati, ali stvarno je tesko bez primjera.
foggy moze, modificirat cu polja sa filtivnim podacima i dati svoj kod da vidis.
Mislim, ja sam napisao quicksort algoritam (https://en.m.wikipedia.org/wiki/Quicksort) koji zaista sortira cijelo polje, ali nazalost samo po "Mail" kolumni, sve ostale izgubim nakon sorta. To bi trebao editirat i implementirat da se sortiraju i ostale kolumne polja.
Tipa da funkciji quicksort das parametre array i property, te da funkcija operira nad cijelim poljem po tom propertyu, ali da na tom istom indexu polja uzme u obzir i ostale propertye i sortira ih zajedno sa inicijalnim.
Do tada, evo malo dokumentacije
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/get-unique?view=powershell-7.2
Micanje duplikata iz arraya u powershellu:
https://stackoverflow.com/questions/1391853/removing-duplicate-values-from-a-powershell-array
Možda nešto bude potrebno. Ima i sort arrayeva, sve se da, sam trebamo primjer i zahtjeve.
Uglavnom, više ćemo nakon primjera, treba dovest podatke prvo u red da se lako s njima rade akcije. Isto tako, ako koristš Jenkins onda možeš rezultate spremat u Jenkins build varijable pa njih lako preneseš u sljedeći korak build pipelinea i radiš s njima šta treba. Ima 100 načina, naći ćemo najbolji.
- Uređivano
@foggy i @Fico
Hej ekipa, evo detaljnije objasnjena:
POLJE 1
Email
Date
POLJE 1 ENRICHED IZ AD-a
Date
SamAccountName
RealName
Office
Email
POLJE 2
ControllerId
EventTime
Username
UserToken
EventId
Znaci tek kada "obogatim" POLJE 1 sa podacima iz ADa, mogu raditi usporedbu po SamAccountNameu (username):
foreach ($Entry in $POLJE1) {
if ($POLJE2.username -notcontains $Entry.SamAccountName) {
$Difference += $Entry.Email
}
}
Problem je upravo to "obogacivanje" POLJA1, gdje koristenje "where-object", "contains" ili bilo cega drugog traje predugo, jer je AD uz sve filtere prevelik i to vrti jako dugo.
Ja sam sam tu potrebu koristio Binary Search algoritam:
function BinarySearch {
Param ($SortedArray, $Attribute, $SearchedObject)
$startIndex = 0
$endIndex = $SortedArray.length - 1
$Output = @()
if ( ( $SortedArray[$startIndex].$Attribute -gt $SearchedObject ) -or ($SortedArray[$endIndex].$Attribute -lt $SearchedObject ) ) {
return "Out of scope!"
}
while ($startIndex -le $endIndex) {
$middleIndex = $startIndex + [Math]::floor(($endIndex - $startIndex) / 2)
if ($SortedArray[$middleIndex].$Attribute -eq $SearchedObject) {
$Output += $SortedArray[$middleIndex]
for ($n=$middleIndex - 1;$SortedArray[$n].$Attribute -eq $SearchedObject;$n--) {
$Output += $SortedArray[$n]
}
for ($n=$middleIndex + 1;$SortedArray[$n].$Attribute -eq $SearchedObject;$n++) {
$Output += $SortedArray[$n]
}
}
if ($SortedArray[$middleIndex].$Attribute -lt $SearchedObject) {
$startIndex = $middleIndex + 1
}
else {
$endIndex = $middleIndex - 1
}
}
return $Output
}
Medutim, da bi binary radio, on mora operirati sa sortiranim poljem, a upravo to sortiranje u Powershellu ne radi kako spada:
UPOTREBA BINARY SEARCH da bi se obogatilo POLJE1 sa podacima iz ADa:
foreach ($Entry in $POLJE1) {
$UserEntry = BinarySearch -SortedArray $ADExport -Attribute Mail -SearchedObject $Entry.Email
AD Export i sortiranje PWS cmdletom "Sort-Object":
$ADExport = Get-ADUser -Filter 'Mail -like "XXX" -and Enabled -eq "True"' -SearchBase $Path -Properties Mail, extensionAttribute8 | Select-Object SamAccountName, Mail, Name | Sort-Object -Property Mail
Ono sto meni treba je Quicksort funkcija koja operira nad ADExportom i poslozi po propertyu (kolumni) Mail, ali isto to napravi nad propertyima SamAccountName, Name. Ovo je kako trenutno izgleda moja quicksort funkcija:
function quicksort($array) {
$less, $equal, $greater = @(), @(), @()
if( $array.Count -gt 1 ) {
$pivot = $array[0]
foreach( $x in $array) {
if($x -lt $pivot) { $less += @($x) }
elseif ($x -eq $pivot) { $equal += @($x)}
else { $greater += @($x) }
}
$array = (@(quicksort $less) + @($equal) + @(quicksort $greater))
}
$array
}