Min riktigta klass heter inte FileWriter utan CsvFileWriter, så det är inget problem (bara exempel koden ovan), sedan har jag även dubbel kollat StreamWriter (nyss bara för att vara säker).
En annan fråga är inte visual studio "smart" nog att säga att "denna class finns redan"?
kolla så att disken med grub körs först i boot ordningen -> visa dator måste du kolla att grub disken är fysiskt inkopplad på disk port1 i ditt moderkort, medan andra räcker en UEFI/BIOS inställning för välja disk.
Se till så grub är updaterat och känner till rätt ubuntu/windows på dina diskar -> om ej går det att fixa med live-OS som till exempel boot repair (tror de även går med ubuntu live-OS).
(om du installera om båda OS tips) om du väljer att installera om båda operativsystemen är det att rekommendera Ubuntu sist, Så slipper man sedan gå in och fixa grub som boot target.
C# arv från StreamWritter och -Reader || base constructor problem.
Hej Sweclockers.
Så jag börja lek med C# för första gången i går. Så jag tänkte att jag skulle bygga en telefonbok för att lära mig lite mer. Hur som helst så som jag har förstår det ska jag kunna göra så här:
public class FileWritter : StreamWritter{
public FileWritter(Stream stream): base (stream) { } // Sätter StreamWritter's stream constructor.
public FileWritter(string path) : base (path) {} // sätter StreamWritter's path constructor.
}
Men då klagar kompilatorn på den andra constructorn att den inte kan göra om string till System.IO.Stream, jag förstår inte varför då StreamWritter har redan en egen constructor som är string path, varför försöker ens kompilatorn göra denna "konvering"? Hur ska jag få det att fungera?
Så jag och några kompisar tänkte testa leka lite med sc2api som jag har byggt via deras instruktioner (se länk innan). Hur som helst, jag lekt med andra tredje part bibliotek (SFML, gnutls, boost m.m.) tidigare har dock haft turen att de lagt in dem in /usr/include samt skapa en länk flagga till g++ via deras cmake/make filer. Denna gång hade jag inte sådan tur. Då jag vet var alla filer är (headers: /home/user/src/s2client-api/include/ och .cc: /home/user/src/s2client-api/src/). Antar jag kan "kopiera"/"flytta" dessa filer will /usr/... men hur kan jag få som t,ex. gnutls en länk flagga (-lgnutls) till dessa för g++?
Det ända sättet jag har fått det att fungera "bra" är via att gör två trådar en send och en ta emot tråd för samma socket alternativt non-blocket socket. Båda dessa metoder har då gjort att CPU:n på servern fått för mycket trådar (leder till att CPU jobbar sönder sig själv), jag testade med att "söva" trådarna någon milli sek när de inte hade något att göra, men så fort man ökar klienterna från 1 till 3-4 så blev det otroligt mycket CPU användning hur som helst. Troligen så går det bra med en socket per client, bara jag som inte hittat en bra lösning på detta där full duplex fungerar.
c++ || sys/socket.h (select x2 (sender och receiver select socket) || Smart sätt att sköta "pairingen" mellan sockets
Hej SweC.
Så ni kanske har sätt någon av mina många trådar gällande sys/socket.h. Iaf jag kom fram till att jag gjort en dålig metod (använda induella trådar för varje en skild socket (vart för många trådar och cracha servern)) Så nu har jag tänkt om min server har nu två "mastersockets" som använder select (konceptuellt kan ni se denna sida) för nya anslutning osv. dvs bara två trådar: en för mastersocket för skicka till client och en för mastersocket som tar emot från client. Då jag nu skulle vilja "paira" skicka och ta emot sockets för en specifik client så känner jag att de metoderna jag har kommit fram till (se nedan) är lite långsökta och att det borde finnas bättre metod. Är det så att någon har en bättre metod skriv gärna ner det i tråden.
Min metod går nu ut på att innan resten av programmet kan skicka/(ta emot) till en client så måste server genomföra en pairing som görs på följande sätt (repeteras varje gång när ett nytt meddelande ska skickas eller tas emot):
(Server): kollar upp alla icke "pairade" skicka subsocket's.
(Server): till varje icke pairade som hittas skickas då: "Token:[ServersSkickaSubsocketIndex]:[RandomgenereratNummer]:xxyyxx:" (detta meddelande sparas tills pair med det är gjort).
(Client): ta emot meddelandet (Token:[ServersSkickaSubsocketIndex]:[RandomgenereratNummer]:xxyyxx:)
(Client): Skickar tillbaka samma meddelande till servern på clientens skicka socket.
(Server): Upptäck all icke "pairade" ta emot subsocket's
(Server): Kolla om den fått ett "token" meddelande från en eller flera av subsocket's (om ja gå vidare, om nej "return")
(Server): Parsa ut [ServersSkickaSubsocketIndex].
(Server): Hitta Skickar subsocket:en och kontrollera att "token" meddelandet den skicka är det samma som den tog emot
(Server): Om steget innan ja: spara att dessa två subsockets är till samma client, annars logga och return.
När jag kollar upp nya sidor att köpa saker från brukar jag kolla recensionerna (vilket du har gjort) men jag bruka tänka att majoritet (så stor som möjligt) ska säga att det är bra och inte en scamersida. Hur som helst är det en marginell majoritet, 50/50 eller få recensioner brukar jag skippa den sidan och leta vidare. (DOCK aldrig köp annat än VPN tjänster med bitcoins).
För att "starta" ett företag så går man in på bolagsverketshemsida och registrera. Sedan innan du gör det bör du ha någon form av kunskap inom bokföring, sedan är ju alltid bra att ha koll på företagsformer och sådant för att välja det som passar dig bäst. Jag skulle rekommendera att hyra en ekonom för att få hjälp med pengar hantering tills du är varm i kläderna, då det kan vara mycket nya termer och ekonomiska saker att tänka på.
osäker: Jag har för mig att om företaget omsätter mindre en viss summa så behöver man inte redovisa lika hårt/mycket inför myndigheterna (kan vara ett sätt att testa verksamheten på).
Så länge du inte gör något olagligt så kanske du kan få någon av dina föräldrar eller nån kan stå på domänen. Då jag har för mig att valv är/var ganska emot tradingsidor kanske du inte vill att dit Steam-konto riskera att bli bannat eller nå sånt.
TOR har ju ett bibliotek för python så du kan du fixa direkt i din backend kod att den skapar en .onion adress också vidare. Här har du en kort kod snutt för detta om det är det du menar.
När jag använt mig av det har det bara varit att slagit på det via setings och det funkat direkt vet inte va jag ska säga. Kollat så dit wifi kort har support för det i Ubuntu?
God säkerhet är att man spara hash värdet med saltet (varje salt ska vara individuellt också) för varje individuellt pw i databasen -> vilket leder till att om de använder en vettig hash funktion så ska det inte gå att få ut lösenordet i klartext effektivt nog för att de ska kunna skicka ut lösenord i mejl till användare (dock inget lagkrav har jag för mig). När det kommer till PUL så kan man ta sig runt detta på olika sätt t,ex via användarpolicy genom att de har en sektion som säger du godkänner metoden hur de lagrar detta på osv, MEN det räcker inte med att de säger att du godkänner att de lagrar dina personuppgifter för då måste de lagras "säkert". Läs mer på datainspektionen sida och vad de räcka som personuppgifter.
P.S personnummer räckas som personuppgift enligt datainspektionen iaf.
Då alla redan hjälpt dig kan jag visa lite "modernare" metod för att göra detta:
#include <iostream>
#include <vector>
#include <chrono>
#include <random>
float medel(std::vector<int>& in){
if(in.size()<=0) // Om vektorn är tom skicka bara svar 0.0 direkt.
return 0.0;
int sum=0; // Vi gör en cast vid return därav kan vi ta emot större vektorer att ta medelvärdet på.
for(auto& i:in)
sum+=i; // bara plussar alla element från vektorn till sum variablen.
return (float)sum/in.size(); // dela summan med antal element i vektorn, sedan returera vi denna divsions "svar".
}
// Auto test....
int main(){
std::vector<int> test(10); // Skapar en vektor med 10 element.
std::mt19937 generator (std::chrono::system_clock::now().time_since_epoch().count()); // init slumpgenerator.
for(auto& i:test){ // Loopar igenom vektor
i=generator()%100; // setter element i from vektorn till ett slumptal (mellan 0-99).
}
std::cout << "The mean value iss: " << medel(test) << std::endl; // kalla på vår medelvärdes funktion, som vi skriver ut det vi fått tillbaka från.
return 0;
}