Programiranje

C# - Problemi i rješenja

Friday ned 25.8.2019 09:27
Arsenalboy kaže...

Pozdrav ekipa, treba mi mala pomoc

Napravio sam winform aplikaciju i preko publisha instaliram na racunalu i sve radi normalno

I sad zelim aplikaciju prebaciti na drugo racunalo , al ne zeli da je pokrene, a na racunalu kojem sam radio aplikaciju sve normalno radi. I uz navedeni problem ,kako cu ja namjestit connection string sql servera od drugog racunala ako na njemu nemam visual studio

 

Pretpostavljam da si cnn string zapisao u settingse aplikacije. Ako je tako - oni ti se nalaze u .config fajlu i mozes ih rucno mijenjati

Hamburger of death sri 2.10.2019 09:36

U zadnje vrijeme sam dosta učio programiranje na C# i ako želim naći zaposlenje u nekoj tvrtki kao C# programer da li moram prvo položiti neki certifikat? I na kraju što se uopće radi ako i nađem neko zaposlenje? Predpostavljam uglavnom neke web stranice ili kod nas rade i nešto drugo?

PzKpfw sri 2.10.2019 14:02

 

@Hamburger of death 

 

Hm, gle sve ovisi što neka kompanija traži. Ovisi kako će te netko prepoznati. U mojoj bivšoj co. je radio lik kao vanjski suradnik, a imao je samo srednju školu. Nikakvi fakulteti, nikakvi cerfikati, nikakvi tečajevi.

Drugim riječima, ne moraš imati neki papir, nego znanje. Ako imaš neki papirek to je po meni uvijek dobrodošlo. Međutim, ono što definira potencijalnog kandidata za posao je to znanje ili koliko je netko spreman, sposoban 

da primi nova znanja, da nauči posao u nekome vremenu i tome slično.

 

Po meni prestani si momentano postavljati ovakva pitanja, te kreni tražiti posao. Napravi CV, motivacijsko pismo, neke sakupi radove ako ih imaš, te se počni uporno i konstatno javljati na oglase za posao i preko otvorenih molbi za

posao co. koje rade ili ima,ju veze sa IT. Znači, svaki dan se negdje javi, da te poslodavci upoznaju kao izvjesnog kandidata za posao. 

Nema veze što traže ne znam kakva znanja, a tebe ne košta ništa da im se javiš kao netko tko traži enter-level ili junior poziciju za posao. Budi aktivan po svim mogućim socijalnim mrežama koje imaju veze sa traženjem posla.

I kada čovjek ne očekuje ništa, dogodi se neočekivano.

Hamburger of death sri 2.10.2019 15:41
andrijam kaže...

Ne moraš imati certifikat, ovisi o firmi čime se bavi i koji projekt te dopadne. Poznavanje samo programiranja nije dovoljno, barem ako se mene pita.

 

Da, još trebam znati SQL koji je kao jako važan ali se ne programira. Za sada sam samo malo gledao neko predavanje o tome ali mi točno nije jasno kakve to ima veze sa programiranjem, očito se moram dublje udubiti u to.

@pzkpf ok hvala na informaciji. Možda napravim neku aplikaciju/ igricu za Android kao kakvu "vizit kartu".

andrijam sri 2.10.2019 16:08
Hamburger of death kaže...
andrijam kaže...

Ne moraš imati certifikat, ovisi o firmi čime se bavi i koji projekt te dopadne. Poznavanje samo programiranja nije dovoljno, barem ako se mene pita.

 

Da, još trebam znati SQL koji je kao jako važan ali se ne programira. Za sada sam samo malo gledao neko predavanje o tome ali mi točno nije jasno kakve to ima veze sa programiranjem, očito se moram dublje udubiti u to.

 

Eto zbog ove rečenice svaki ispitivač bi završio razgovor i pokazao ti vrata. 

Friday sri 2.10.2019 16:56
Hamburger of death kaže...
andrijam kaže...

Ne moraš imati certifikat, ovisi o firmi čime se bavi i koji projekt te dopadne. Poznavanje samo programiranja nije dovoljno, barem ako se mene pita.

 

Da, još trebam znati SQL koji je kao jako važan ali se ne programira. Za sada sam samo malo gledao neko predavanje o tome ali mi točno nije jasno kakve to ima veze sa programiranjem, očito se moram dublje udubiti u to.


 

SQL je deklarativni programski jezik. I to JEST programiranje

fredii čet 3.10.2019 10:53
Friday kaže...
Hamburger of death kaže...
andrijam kaže...

Ne moraš imati certifikat, ovisi o firmi čime se bavi i koji projekt te dopadne. Poznavanje samo programiranja nije dovoljno, barem ako se mene pita.

 

Da, još trebam znati SQL koji je kao jako važan ali se ne programira. Za sada sam samo malo gledao neko predavanje o tome ali mi točno nije jasno kakve to ima veze sa programiranjem, očito se moram dublje udubiti u to.


 

SQL je deklarativni programski jezik. I to JEST programiranje

 

Svaki SQL (MySQL, Oracle, M$ npr.) se razlikuju jer su pripadajući određenoj bazi podataka.

 

Ja sam doduše na Oracle.

Friday čet 3.10.2019 11:11
fredii kaže...

 

Svaki SQL (MySQL, Oracle, M$ npr.) se razlikuju jer su pripadajući određenoj bazi podataka.

 

Ja sam doduše na Oracle.

 

SQL kao takav je standard i trebao bi biti isti svuda. Ja sam konkretno na tsql sto je MS-ova varijanta.

fredii čet 3.10.2019 11:17
Friday kaže...
fredii kaže...

 

Svaki SQL (MySQL, Oracle, M$ npr.) se razlikuju jer su pripadajući određenoj bazi podataka.

 

Ja sam doduše na Oracle.

 

SQL kao takav je standard i trebao bi biti isti svuda. Ja sam konkretno na tsql sto je MS-ova varijanta.

 

Koliko sam uspio do sada shvatiti (nema niti 2 tjedna kako se s time zajebavam), SQL se razlikuje od baze do baze. U smislu ima sve što ima original SQL, ali da SQL koji pripada Oracle bazi, ima komande koje se razlikuju od M$ baze.

Friday čet 3.10.2019 11:23
fredii kaže...

 

Koliko sam uspio do sada shvatiti (nema niti 2 tjedna kako se s time zajebavam), SQL se razlikuje od baze do baze. U smislu ima sve što ima original SQL, ali da SQL koji pripada Oracle bazi, ima komande koje se razlikuju od M$ baze.

 

Ne, SQL kao takav je isti ali su ekstenzije razlicite. To su njihove implementacije dodatnih stvari. Sve sto je standardni SQL mora raditi svuda

fredii čet 3.10.2019 11:33
Friday kaže...
Ne, SQL kao takav je isti ali su ekstenzije razlicite. To su njihove implementacije dodatnih stvari. Sve sto je standardni SQL mora raditi svuda

 U biti, da se lakše prešaltaš na određenu bazu u slučaju potrebe. Sve isto, samo su drugačije nijanse.

Friday čet 3.10.2019 11:35
fredii kaže...
Friday kaže...
Ne, SQL kao takav je isti ali su ekstenzije razlicite. To su njihove implementacije dodatnih stvari. Sve sto je standardni SQL mora raditi svuda

 U biti, da se lakše prešaltaš na određenu bazu u slučaju potrebe. Sve isto, samo su drugačije nijanse.

 

Paaaaaa, recimo to tako. Iako razlike stvarno znaju biti goleme. Ja sam upravo poceo uciti postgres zbog novog projekta pa sam poprilicno sokiran razlikama u odnosu na mssql

fredii čet 3.10.2019 11:40
Friday kaže...

 

Paaaaaa, recimo to tako. Iako razlike stvarno znaju biti goleme. Ja sam upravo poceo uciti postgres zbog novog projekta pa sam poprilicno sokiran razlikama u odnosu na mssql

 

Dobro ti si daleko iskuskniji, ovo je moje bilo samo primjećivanje. N00b jbg. Sad osobno prvo sam krenuo s bazom podataka, a kada se tu malo stabiliziram planiram Python, plus literaturu potrebnu za Data Analyst.

Top Bugovac čet 3.10.2019 11:45
Hamburger of death kaže...

Ma da, kao što sam pokušao objasniti još učim to programiranje na samom c# tipa Paskalov trokut, Flyodova piramida, jaki brojevi, Armstrongovi brojevi... da još nisam došao do SQL-a. Da li trebam u isto vrijeme raditi i SQL?

 Ne, idi redom.

 

Nakon sto prodjes C# (i osnove OOPa) te SQL (ali ne jos tako skoro), odmori koji dan od programiranja praveci korak u nazad i napravi pregled podrucja. Pogledaj malo teorije i kakvi su to imperativni (C#), a kakvi deklarativni jezici (SQL), kakvi jos koncepti postoje unutar ta dva podrucja i pogledaj malo sto ti koncepti omogucuju

 

Daleko od toga da je to najbitnije, ali pisem ovo samo zato sto ljudi cesto to zaborave, a nije lose znati :) 

fredii čet 3.10.2019 11:47
Top Bugovac kaže...

 Ne, idi redom.

 

Nakon sto prodjes C# (i osnove OOPa) te SQL (ali ne jos tako skoro), odmori koji dan od programiranja praveci korak u nazad i napravi pregled podrucja. Pogledaj malo teorije i kakvi su to imperativni (C#), a kakvi deklarativni jezici (SQL), kakvi jos koncepti postoje unutar ta dva podrucja i pogledaj malo sto ti koncepti omogucuju

 

Daleko od toga da je to najbitnije, ali pisem ovo samo zato sto ljudi cesto to zaborave, a nije lose znati :) 

 

Ja sam počeo prvo s SQL-om, a onda kako sam naveo kada se tu malo stabiliziram, planiram na Python. To je uredu?

andrijam čet 3.10.2019 12:09

Moraš biti svijesan da su neki ljudi cijeli radni vjek samo na bazama, jer je jako kompleksno područije, nije to nešto što možeš savladati u dva tjedna, potrebne su godine. Moraš razlikovati dvije stvari, a to je administracija baze i programiranje baze.

Programiranje baze  do neke razine ne razlikuje se značajnije, jer postoje SQL standardi koje svi više manje koriste.

Al kad se krene s optimizacijom i "specijalnim" funkcijama/funkcionalnostima i načinima na koje su implementirane, onda zna biti zanimljivo.   

Top Bugovac čet 3.10.2019 12:10
fredii kaže...
Top Bugovac kaže...

 Ne, idi redom.

 

Nakon sto prodjes C# (i osnove OOPa) te SQL (ali ne jos tako skoro), odmori koji dan od programiranja praveci korak u nazad i napravi pregled podrucja. Pogledaj malo teorije i kakvi su to imperativni (C#), a kakvi deklarativni jezici (SQL), kakvi jos koncepti postoje unutar ta dva podrucja i pogledaj malo sto ti koncepti omogucuju

 

Daleko od toga da je to najbitnije, ali pisem ovo samo zato sto ljudi cesto to zaborave, a nije lose znati :) 

 

Ja sam počeo prvo s SQL-om, a onda kako sam naveo kada se tu malo stabiliziram, planiram na Python. To je uredu?

 Nemam toliko iskustva u poucavanju drugih (brat, sestra, par frendova), ali ono sto sam vidio je da pocetnici najbolje uce dok se zabavljaju i rjesavaju fora stvari

"Koristiti" petlje sam ih ucio primjenjivanjem kernel konvolucije nad slikama, unaprijedjenje tog koda bi im pokazalo sto, kako i koliko znaci bolje dizajnirati kod. 

Nakon toga bi ucili OOP tako da bi zajedno radili krizic kruzic tako da igra covjek protiv covjeka, nakon toga implementaciju minimax algoritma preko kojeg racunalo igra protiv covjeka.

Definiranje grafa i BFS kretanje po grafu. Pronalazenje najblizeg puta izmedju gradova

Nakon toga bi ih natjerao da implementiraju svoju jednostruko i dvostruko povezanu listu, array listu i hashset te ih natjerao da analiziraju slozenosti ubacivanja, pretrazivanja i brisanja

Nakon toga bi radili frekvencijsku analizu teksta i osnovni spell check http://norvig.com/spell-correct.html

Slijedio bi GUI, rewrite krizic kruzica da ima GUI, pacman bez duhova pa pacman s duhovima koji se krecu po BFSu tako da zele sto blize doci do covjeka.

 

Uvijek sam nekako planirao tu ubaciti i Chat s GUIjem, ali nisam nikad.

Svatko bi prije nego sto bi dosao do mene znao napraviti osnovne zadatke s jednostavnim petljama i petljama u petlji (ono, racunaj potencije, faktorijel i slicno), a neki su zagrebali i u rekurziju :)

 

Iskreno uzimalo mi je jako puno vremena, ali se isplati :) 

 

Ukratko, ako ti je zanimljivo onda je u redu. SQL i python su jezici s potpuno razlicitim pristupom (deklarativni i imperativni) pa nije problem. Iako ja mislim da je bolje krenuti s imperativnim jezicima (dakle ne SQLom).

ihush čet 3.10.2019 15:33
fredii kaže...
..

 

Ja sam počeo prvo s SQL-om, a onda kako sam naveo kada se tu malo stabiliziram, planiram na Python. To je uredu?

 -ovisi što je cilj.. tj karikirat ću ali vjerojatno razumljivo :) .. mozak ti može pogrešno izrasti-razviti se. tj način mišljenja ili prilaženju problemu, ovisno hoćeš li se više baviti bazama-sqlom ili programiranjem kao C-dev..

mada je to sve ''isto'' isti su tako i auti, traktori i kamioni, isti je trkač (čovjek) šprinter na 100m ili maratonac-- no nije isti, drgačije vježbe i sasvim drgi sklop mišića kao i cilj. Možeš opet karikirano koristiti pohotoshop za napisati text umjesto worda, možeš koristiti švicarski možić umjesto posebne gedore, no svaki alat je ipak specijaliziran za nešto i tad (naj)bolji ali istovremeno gubi univerzalnost i postaje lošiji za nešto drugo.

tao je s programiranjem, sve je to ista osnova kao i matematika 2+2.. ali se razlikuju softwareaši igara, office alata, knjigovodstvenog softa, upravljačkog, cnc bušilice ili nekog eeprom displaya-semafora.. mada svi rade ''istu stvar'' tj neke nule-jedinice pretvaraju u nešto i to nam prikazuju.

 

-sve je file, sve je baza, tj soft, binarno postoji samo nula-jedan, a ovisno o interperatciji podjela je na aplikativni soft koji nešto radi i podatak-data nad kojim se nešto radi, u formuli 2+2=4 operacija je funkcia tj app a znameke su podaci, jedno s drugim ima smisla, jedno bez drugog nema. Podaci su u bazi ali moramo imati app tj relaciju tj SQL upit da bi s tim podatkom nešto mogli da bi bio koristan. Pri tome to može biti adresar-ime, može biti textura skina u igri ili koordinata bušilice, može biti pjesma, slika ili bilo što, možemo pixele slike korigirati svjetlosnim efektima ili izoštravati, možemo ekvilizerom pojačati baseve slabe muzike ili pronaći nečiji oib u policijskoj bazi preko registracije automobila ili otiska prsta.. možemo sve što se radi na računalima, sve što se može digitalizirati ili prikazati kao podatak, kao binarni zapis (a to je sve što ti padne na pamet, pa i izmisliti novo pismo-oznake-morzeovu abecedu i sl..) i osnova svake baze su podaci kao najvažnjiji dio, njih se čuva-arhivira.. obrađuje, dok je app ono što nam omogućuje samo korištenje. Kad čitaš knjigu app je tvoja ruka koja drži i lista, oko koje 'OCRom' skenira i pretvara informacije u humanreadible format.. i mozak koji to obrađuje.. to je stvar appsa, guija, logike, pravila koja učiš, kao što učiš pisati ili neki jezik, strani jezik ili programski jezik .. a sve je to isto, samo što računala imaju svoj 'binarni' jezik tj kompajlerom im prevodimo human u strojno.. kao što obrnuto strojnu obradu vga prevodi u ljudski čitljivo na ekranu itd itd..

 

-sve je to isto, ali je ogromno, preveliko kao Zemlja, pa se ne vidi da je zapravo mala kugla.. i da je sve to isto-slično i drugačije ovisi što gledaš. Baze su same za sebe ogromna tema, dovoljno knjiga za zatrpati jakušavac na tu temu, dok je sql osnova kao i C .. ali naravno, svaka baza ima neki svoj poseban fičer, robustnost, proširivanje ili npr dimenzioniranje za male-velike korisnike, male servere ili farme.. mada sva računala rade na istoj osnovi kao i najslabiji calculator, nakupina tranzistora-chipova i u osnovi se nisu promijenili od doba tkalačkog stroja (prve bušene vrpce za uzorak tkanja) ili commodorea i ostalih računala.

-ako znaš programirati u Cu znaš i u javi-pythonu i obrnuto, ako znaš raditi na oracle bazi tad znaš i na ibmovoj i msovoj.. kao što znaš voziti auto ili bicikl neovisno o brandu, kao što možeš naučiti i francuski-talijanski ili kineski jezik .. uz malu prednost, matematika je u startu univerzalna i matematička logika je identična ispod haube svih računala jer na tim principima rade (do quantuma).. pa tako imaš AND, OR, NOT, XOR.. ili imaš na faksu rješavanje matematičkih matrica ili u igri ljepljenje testure.. isto je, kao što ekonomist tom formulom računa kamate tako i fraunhoferovom transrofmacijom računaš dinamiku mp3ce i dekodiraš kompresirani signal u glazbu..

 

-loša svtar? nema 'najboljeg' puta, tj stalno se izmišlja novo a dok postaneš majstor u nečemu treba vrijeme, 5-10 godina bavljenja, može to biti programiranje, može nogomet, akrobatika ili igranje pikada.. isto je, no ostale stvari se ne mijenjaju tako brzo kao računala. Klavir je stoljećima isti, nogometna lopta i golovi.. uz problem pogađanja u budućnost što će za 10 godina biti traženo.. ali istovremeno, to je ok, tj nije realno problem, jer svako znanje programiranja je ipak zajedničko svim programiranjima neovisno o platformi-jeziku, slično i ne moraš sve od nule kao što bi bilo s nogometom-pikadom-pečenjem palačinki ili francuski-kinseki jezik.. kao što je zidanje ciglom ili strojasrki poslovi dovoljno univerzalno da ne moraš učiti kako kinez mješa beton tj radi to jednako kao bosanac-zagorac.. ili varenje željezne šipke na brodu, tako je s programiranjem ista osnova, matematika-logika .. ali da bi bio majstor moraš uložiti vrijeme-iskustvo, godine. Tj razilka između majstora seniora i početnika juniora je što senior sjedne, vidi problem i natipka rješenje.. ne zato jer je to lako, nego zato jer ima godine iskustva i jednako tako gimnastičar napravi trostruki salto dok ostalima to izgleda kao čarolija. Oboje su to vježbali godinama kao brucelee kungfu :) i tad su majstori, ne preko reda. Košarka (Dražen Prtrović..) koliko je godina vježbao i koliko je puta bacio loptu u koš? Rezultat, zato je bio majstor i tako je u svakom poslu. + u ITu moraš stalno pratiti novitete i nema nezamjenjivih. Dobra strana, ako znaš (imaš znanje, senior) tad to vrijedi, tad će te platiti ali tad moraš doći i riješiti problem, ''da radi'' ne tražiti yt klipiče ili listati hawto.. neovisno radiš li na oracle ili u pythonu kao što je nevažno imaš li dizel ili benzinca za vozačku ili kojom cestom ćeš doći do ''Rima'' (jer svi putevi vode..) :)

 

-sve je to isto, ali postoje razlike kao što postoje u svemu i ne postoje dva identična čovjeka pa tako ni odgovora, nego nešto kao standard-pravila a sve ostalo moraš izmisliti sam, kao novi film-glazbu, ne biti copypasteaš ili codemonkey.. :)) tad je kuhar u frenč restoranu = kuharu u mcdonaldsu.. za jedno moraš biti majstor, drugo može bilo tko nakon uputa koje dobije u par minuta.

FatMAN pon 2.12.2019 01:55

Može li mi netko molim vas pomoći. Na ovome sam zapeo i ne mogu se već danima izvući...

Naime pokušavam pristupiti Microsoftovom Face APIu preko svoje windows forms aplikacije, a slike koje saljem nalaze se u folderu, a pathovi su zapisani u text fileu(kasnije cu dodati snimanje kamerom ali prvo ovo mora proraditi). Također, ima točno 8 slika, ali to je sve sada prototip tako da ću mogućnost za više skika dodati kasnije.

Stvar je u tome da se ne mogu povezati sa PostAsyncom na Microsoftov API koliko god se trudio, jednostavno zapinje na tom koraku dok iz Console aplikacije to radi normalno i bezprijekorno (app je u windows forms ali linije za debugiranje i provjeravanje progressa se pišu u konzolu).

Pokušao sam i sa proxy disabled, ali nije pomoglo...

//Kod cijele forme:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Collections.Specialized;
using System.IO;
using System.Windows.Forms;
using Emgu.CV;
using Newtonsoft.Json.Linq;

namespace Codename_FM
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();

}

private void LogoutButton_Click(object sender, EventArgs e){
try
{
using (WebClient client = new WebClient())
{

byte[] response =
client.UploadValues("http://127.0.0.1:8000/desktop/desktop_logout/", new NameValueCollection()
{
{ "token", GetToken },
});

string result = System.Text.Encoding.UTF8.GetString(response);
MessageBox.Show(result);
Application.Exit();

 

}
}
catch (Exception) {
MessageBox.Show("Trenutno ne možemo uspostaviti vezu sa serverom, pokušajte ponovno kasnije.");
}
}

private void SubmitButton_Click(object sender, EventArgs e){

int snapshots_n = Convert.ToInt32(Snapshots.Text);
string classroom = Classrooms.Text;
string school = Schools.Text;
string subject = Subjects.Text;
try
{
using (WebClient client = new WebClient())
{

byte[] response =
client.UploadValues("http://127.0.0.1:8000/desktop/capture_class/", new NameValueCollection()
{
{ "token", GetToken },
{"classroom", classroom },
{"school", school },
{"subject", subject},

});
string result = System.Text.Encoding.UTF8.GetString(response);
if (result != "Error"){
int pk = Convert.ToInt32(result);
Send_Snapshots(snapshots_n, pk);
}
else MessageBox.Show("Imamo nekih tehničkih poteškoća. Pokušajte ponovno kasnije!");
}
}
catch (Exception exception) {
MessageBox.Show(exception.ToString());
}


}

public string GetToken { get; set; }

private void Form2_Shown(object sender, EventArgs e){
try
{
using (WebClient client = new WebClient())
{

byte[] response =
client.UploadValues("http://127.0.0.1:8000/desktop/get_info/", new NameValueCollection()
{
{ "token", GetToken },
});

string result = System.Text.Encoding.UTF8.GetString(response);
try {
var json = JObject.Parse(result);
foreach(JToken i in json["schools"])
{
Schools.Items.Add(i.ToObject<string>());
}
foreach (JToken i in json["classrooms"])
{
Classrooms.Items.Add(i.ToObject<string>());
}
foreach (JToken i in json["subjects"]) {
Subjects.Items.Add(i.ToObject<string>());
}
}
catch (Exception ex) {
MessageBox.Show(ex.ToString());
}


}
}
catch (Exception exc)
{
MessageBox.Show(exc.ToString());
}
}

const string subscriptionKey = "Key namjerno nije napisan ali je valjan";//NA MJESTO OVOGA IDE PRAVI SUBSCRIPTION KEY
const string uriBase = "https://westcentralus.api.cognitive.microsoft.com/face/v1.0/detect";


static byte[] GetImageAsByteArray(string imageFilePath)
{
using (FileStream fileStream =
new FileStream(imageFilePath, FileMode.Open, FileAccess.Read))
{
BinaryReader binaryReader = new BinaryReader(fileStream);
return binaryReader.ReadBytes((int)fileStream.Length);
}
}
static async Task<string> MakeAnalysisRequest(string imageFilePath){
Console.WriteLine("Got to analyzing the picture");
HttpClient client = new HttpClient();

// Request headers.
client.DefaultRequestHeaders.Add(
"Ocp-Apim-Subscription-Key", subscriptionKey);

// Request parameters. A third optional parameter is "details".
string requestParameters = "returnFaceId=true&returnFaceLandmarks=false" +
"&returnFaceAttributes=age,gender,headPose,smile,facialHair,glasses," +
"emotion,hair,makeup,occlusion,accessories,blur,exposure,noise";

// Assemble the URI for the REST API Call.
string uri = uriBase + "?" + requestParameters;

HttpResponseMessage response;

// Request body. Posts a locally stored JPEG image.
byte[] byteData = GetImageAsByteArray(imageFilePath);
Console.WriteLine(byteData);

using (ByteArrayContent content = new ByteArrayContent(byteData))
{
// This example uses content type "application/octet-stream".
// The other content types you can use are "application/json"
// and "multipart/form-data".
content.Headers.ContentType =
new MediaTypeHeaderValue("application/octet-stream");
Console.WriteLine("Zadan mediatypeheader");

// Execute the REST API call.
response = await client.PostAsync(uri, content);//PROGRAM ZASTAJE OVDJE
Console.WriteLine("Vracen response");

// Get the JSON response.
Console.WriteLine("Deklarirana varijabla");
var contentString = await response.Content.ReadAsStringAsync();

Console.WriteLine("String returned");
return contentString;

}

}


public void Send_Snapshots(int snapshots_n, int pk) {
Console.WriteLine("Prvi milestone");
//Example kod dok jos nisam postavio snimanje kamerom
string imageFilePath;
//string[] images = new string[snapshots_n];
string[] jsons = new string[snapshots_n];
StreamReader f = new StreamReader("filenames.txt");
for (int i = 0; i < snapshots_n; i++){
imageFilePath = f.ReadLine();
if (File.Exists(imageFilePath))
{
try{
Console.WriteLine("Pokrenuta funkcija");
Task<string> json = MakeAnalysisRequest(imageFilePath);

jsons[i] = json.Result;

}
catch (Exception exception){
MessageBox.Show(exception.ToString());
}
}

}


}

static string JsonPrettyPrint(string j)
{
if (string.IsNullOrEmpty(j))
return string.Empty;

j = j.Replace(Environment.NewLine, "").Replace("\t", "");

StringBuilder sb = new StringBuilder();
bool quote = false;
bool ignore = false;
int offset = 0;
int indentLength = 3;

foreach (char ch in j)
{
switch (ch)
{
case '"':
if (!ignore) quote = !quote;
break;
case '\'':
if (quote) ignore = !ignore;
break;
}

if (quote)
sb.Append(ch);
else
{
switch (ch)
{
case '{':
case '[':
sb.Append(ch);
sb.Append(Environment.NewLine);
sb.Append(new string(' ', ++offset * indentLength));
break;
case '}':
case ']':
sb.Append(Environment.NewLine);
sb.Append(new string(' ', --offset * indentLength));
sb.Append(ch);
break;
case ',':
sb.Append(ch);
sb.Append(Environment.NewLine);
sb.Append(new string(' ', offset * indentLength));
break;
case ':':
sb.Append(ch);
sb.Append(' ');
break;
default:
if (ch != ' ') sb.Append(ch);
break;
}
}
}

return sb.ToString().Trim();
}
}
}

 

FatMAN pon 2.12.2019 02:22

Problem sam rješio prepravljanjem funkcije SendSnapshots u Async funkciju i poziv za Makeanalasysrequest funkcijom await pozivom.

Kod:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Collections.Specialized;
using System.IO;
using System.Windows.Forms;
using Emgu.CV;
using Newtonsoft.Json.Linq;

namespace Codename_FM
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();

}

private void LogoutButton_Click(object sender, EventArgs e){
try
{
using (WebClient client = new WebClient())
{

byte[] response =
client.UploadValues("http://127.0.0.1:8000/desktop/desktop_logout/", new NameValueCollection()
{
{ "token", GetToken },
});

string result = System.Text.Encoding.UTF8.GetString(response);
MessageBox.Show(result);
Application.Exit();

 

}
}
catch (Exception) {
MessageBox.Show("Trenutno ne možemo uspostaviti vezu sa serverom, pokušajte ponovno kasnije.");
}
}

private void SubmitButton_Click(object sender, EventArgs e){

int snapshots_n = Convert.ToInt32(Snapshots.Text);
string classroom = Classrooms.Text;
string school = Schools.Text;
string subject = Subjects.Text;
try
{
using (WebClient client = new WebClient())
{

byte[] response =
client.UploadValues("http://127.0.0.1:8000/desktop/capture_class/", new NameValueCollection()
{
{ "token", GetToken },
{"classroom", classroom },
{"school", school },
{"subject", subject},

});
string result = System.Text.Encoding.UTF8.GetString(response);
if (result != "Error"){
int pk = Convert.ToInt32(result);
Send_Snapshots(snapshots_n, pk);
}
else MessageBox.Show("Imamo nekih tehničkih poteškoća. Pokušajte ponovno kasnije!");
}
}
catch (Exception exception) {
MessageBox.Show(exception.ToString());
}


}

public string GetToken { get; set; }

private void Form2_Shown(object sender, EventArgs e){
try
{
using (WebClient client = new WebClient())
{

byte[] response =
client.UploadValues("http://127.0.0.1:8000/desktop/get_info/", new NameValueCollection()
{
{ "token", GetToken },
});

string result = System.Text.Encoding.UTF8.GetString(response);
try {
var json = JObject.Parse(result);
foreach(JToken i in json["schools"])
{
Schools.Items.Add(i.ToObject<string>());
}
foreach (JToken i in json["classrooms"])
{
Classrooms.Items.Add(i.ToObject<string>());
}
foreach (JToken i in json["subjects"]) {
Subjects.Items.Add(i.ToObject<string>());
}
}
catch (Exception ex) {
MessageBox.Show(ex.ToString());
}


}
}
catch (Exception exc)
{
MessageBox.Show(exc.ToString());
}
}

const string subscriptionKey = "PRAVI KEY NIJE UPISAN S RAZLOGOM";
const string uriBase = "https://westcentralus.api.cognitive.microsoft.com/face/v1.0/detect";


static byte[] GetImageAsByteArray(string imageFilePath)
{
using (FileStream fileStream =
new FileStream(imageFilePath, FileMode.Open, FileAccess.Read))
{
BinaryReader binaryReader = new BinaryReader(fileStream);
return binaryReader.ReadBytes((int)fileStream.Length);
}
}
static async Task<string> MakeAnalysisRequest(string imageFilePath){
Console.WriteLine("Got to analyzing the picture");
HttpClient client = new HttpClient();

// Request headers.
client.DefaultRequestHeaders.Add(
"Ocp-Apim-Subscription-Key", subscriptionKey);

// Request parameters. A third optional parameter is "details".
string requestParameters = "returnFaceId=true&returnFaceLandmarks=false" +
"&returnFaceAttributes=age,gender,headPose,smile,facialHair,glasses," +
"emotion,hair,makeup,occlusion,accessories,blur,exposure,noise";

// Assemble the URI for the REST API Call.
string uri = uriBase + "?" + requestParameters;

HttpResponseMessage response;

// Request body. Posts a locally stored JPEG image.
byte[] byteData = GetImageAsByteArray(imageFilePath);
Console.WriteLine(byteData);

using (ByteArrayContent content = new ByteArrayContent(byteData))
{
// This example uses content type "application/octet-stream".
// The other content types you can use are "application/json"
// and "multipart/form-data".
content.Headers.ContentType =
new MediaTypeHeaderValue("application/octet-stream");
Console.WriteLine("Zadan mediatypeheader");

// Execute the REST API call.
response = await client.PostAsync(uri, content);
Console.WriteLine("Vracen response");

// Get the JSON response.
Console.WriteLine("Deklarirana varijabla");
var contentString = await response.Content.ReadAsStringAsync();

Console.WriteLine("String returned");
return contentString;

}

}


public async void Send_Snapshots(int snapshots_n, int pk) {
Console.WriteLine("Prvi milestone");
//Example kod dok jos nisam postavio snimanje kamerom
string imageFilePath;
//string[] images = new string[snapshots_n];
string[] jsons = new string[snapshots_n];
StreamReader f = new StreamReader("filenames.txt");
for (int i = 0; i < snapshots_n; i++){
imageFilePath = f.ReadLine();
if (File.Exists(imageFilePath))
{
try{
Console.WriteLine("Pokrenuta funkcija");
string json = await MakeAnalysisRequest(imageFilePath);

jsons[i] = json;

}
catch (Exception exception){
MessageBox.Show(exception.ToString());
}

for (int j = 0; j < snapshots_n; j++){
Console.WriteLine(jsons[j]);
}
}

}


}

static string JsonPrettyPrint(string j)
{
if (string.IsNullOrEmpty(j))
return string.Empty;

j = j.Replace(Environment.NewLine, "").Replace("\t", "");

StringBuilder sb = new StringBuilder();
bool quote = false;
bool ignore = false;
int offset = 0;
int indentLength = 3;

foreach (char ch in j)
{
switch (ch)
{
case '"':
if (!ignore) quote = !quote;
break;
case '\'':
if (quote) ignore = !ignore;
break;
}

if (quote)
sb.Append(ch);
else
{
switch (ch)
{
case '{':
case '[':
sb.Append(ch);
sb.Append(Environment.NewLine);
sb.Append(new string(' ', ++offset * indentLength));
break;
case '}':
case ']':
sb.Append(Environment.NewLine);
sb.Append(new string(' ', --offset * indentLength));
sb.Append(ch);
break;
case ',':
sb.Append(ch);
sb.Append(Environment.NewLine);
sb.Append(new string(' ', offset * indentLength));
break;
case ':':
sb.Append(ch);
sb.Append(' ');
break;
default:
if (ch != ' ') sb.Append(ch);
break;
}
}
}

return sb.ToString().Trim();
}
}
}

ParaNO1d sri 4.12.2019 18:43

Pozdrav svima.

 

Napravio sam večinu posla za zadatak za posao. Dobio sam review da trebam još:

 

 

"Poštovani,

koliko mi je vidljivo, fali vam još jedan projekt (pored MVC-a). Trebali biste imati dva projekta (fali vam Service projekt). Service projekt vam sadrži business logiku, tako da biste trebali prebaciti paging, sorting, filtering u klase u servisu.
Također bi bilo potrebno da implementirate interface-e i automapper (primjetit ćete kada razdvojite projekt na Service i MVC kako vam je potreban - uz razdvajanje View i entity modela kako je zadano zadatku)."

 

Nisam siguran što dalje. Koliko sam shvatio od ovog svega što ja imam trebam implementirati Service projekt? Paging i sorting već imam na MVC, pa ako netko može pojasniti što konkretno da napravim. Git na projekt: https://github.com/ivanradunkovic/Vozila

 

Puno hvala

andrijam sri 4.12.2019 19:47

Pa odvoji poslovnu logiku. Vjerovatno kao rest/soap servisi. Zamisli da budući šef kaže. Sad ovo prebacujemo na React/Angular. Očeš baciti cijelu aplikaciju u smeće. Nečeš nego samo mvc front end. Zato se te stvari odvajaju.

ParaNO1d čet 5.12.2019 10:21
andrijam kaže...

Pa odvoji poslovnu logiku. Vjerovatno kao rest/soap servisi. Zamisli da budući šef kaže. Sad ovo prebacujemo na React/Angular. Očeš baciti cijelu aplikaciju u smeće. Nečeš nego samo mvc front end. Zato se te stvari odvajaju.

 Jasno mi je da to moram odvojiti, ali kako? Trebam li kompletan novi projekt? Ili od postojeceg koda mogu prelraviti. Nisam to nikad radio, samo MVC

Trawis čet 5.12.2019 11:38
ParaNO1d kaže...
andrijam kaže...

Pa odvoji poslovnu logiku. Vjerovatno kao rest/soap servisi. Zamisli da budući šef kaže. Sad ovo prebacujemo na React/Angular. Očeš baciti cijelu aplikaciju u smeće. Nečeš nego samo mvc front end. Zato se te stvari odvajaju.

 Jasno mi je da to moram odvojiti, ali kako? Trebam li kompletan novi projekt? Ili od postojeceg koda mogu prelraviti. Nisam to nikad radio, samo MVC

 

Ne znam kak ti glasi zadatak, ali ako nije spomenuto da trebaš autorizaciju i autentifikaciju ja bi to izbacio iz igre. Pogledaj npr. moja dva projekta https://github.com/Trawis/CZD ili https://github.com/Trawis/CPM pa možda dobiješ ideju kako napravit, nije savršeno, ali je raslojeno i to je ono što tebi treba. MVC bi trebao gledat na service projekt, a service na repository koji dalje gleda na DB.

andrijam čet 5.12.2019 23:09

Želiš reći da nikad nisi radio solution s dva ili više projekata? Da treba ti novi projekt. Najčešće se radi unutar postoječeg solutiona. Koji tip projekta moraš odabrati to moraš sam odlučiti. Možda je najlakše kao nekakav web servis. Čije funkcije pozivaš iz glavnog projekta. Ako želiš impresionirati, onda češ napraviti lib. koji češ preko dependecy injectiona inicijalizirati. Ako želiš još više impresionirati, sve to složi kao Doker kontejner.

Samo se nemoj odustati i sretno.

ParaNO1d pet 6.12.2019 13:32
andrijam kaže...

Želiš reći da nikad nisi radio solution s dva ili više projekata? Da treba ti novi projekt. Najčešće se radi unutar postoječeg solutiona. Koji tip projekta moraš odabrati to moraš sam odlučiti. Možda je najlakše kao nekakav web servis. Čije funkcije pozivaš iz glavnog projekta. Ako želiš impresionirati, onda češ napraviti lib. koji češ preko dependecy injectiona inicijalizirati. Ako želiš još više impresionirati, sve to složi kao Doker kontejner.

Samo se nemoj odustati i sretno.

Da, nisam nikad. Ovo mi je prvi ASP.NET zadatak koji sam ikad radio. Dosad sam pratio tutoriale za MVC i StackOverflow i napravio sam sve što sam htio, ali nisam našao ništa konkretno za Service pa sam zato tu pitao. 

Badjo_5 pon 20.1.2020 21:55

Kratko pitanje, ne znam kako se može ovo pametno napraviti:

tablica A - proizvod_id može postojati samo jedan
proizvod_id, opis_glavnog_proizvoda

tablica B - (0, 1, 2, 3 ili više zapisa)
proizvod_id, opis_dijela_b

tablica C - (0, 1, 2, 3 ili više) isto kao B
proizvod_id, opis_dijela_c


Rezultat bi trebao izgledati ovako (stavim u klasu pa sa foreach ispis u grid ili u datoteku)

red iz tablice A
red/redovi iz tablice B (ako postoje)
red/redovi iz tablice C (ako postoje)
red iz tablice A
red/redovi iz tablice B (ako postoje)
red/redovi iz tablice C (ako postoje)
....

Ne koristim nikakve baze, potrpam podatke u klase (ulazni podaci su obične txt datoteke, par kb) i do sada sam preko LINQ-a povezao tablicu A i B (JOIN), ali sad mi se pojavila i tablica C (do sad sam u primjerima dobivao 'praznu' datoteku sa podacima za tablicu C).
Znam ovo riješiti na način da pročitam red iz prve tablice, stavim u grid, sa SELECT iz B WHERE B.id = A.id upišem podatke (ako ih ima) i opet SELECT iz C WHERE C.id = A.id, opet upišem podatke ako ih ima.
Zatim slijedeći red iz tablice A, ponovo SELECT sa B i SELECT sa C i tako do kraja.

Vjerujem da se ovo riješava u jednom select upitu, nisam baš na 'ti' sa bazama, LINQ i sličnim stvarima.
Jasno mi je kad su dvije tablice pa upisivanje vrijednosti, ali kad mi se pojavi i treća tablica gdje nju staviti?

Ako postoji zapis u A, onda postoji zapis u B ili C ili u B i C (ovo će biti automatski riješeno ako je ispravan upit), ne može se desiti da je zapis samo u A.