Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  71 20631
Long time no see. Kom plutselig på at jeg savnet tråden, så here goes.

Hva
En kommando for å liste ut alle mediefiler i en katalog med informasjon om container og codecs. Laget ut fra eget behov for å identifisere filer som Plex-oppsettet mitt hadde problemer med å spille av. Krever ffprobe (følger som regel med ffmpeg) installert og tilgjengelig i path. Testet på OS X, bør funke fint på Linux også.

Språk
Shell-script med PHP som interpreter.

Kildekode
https://github.com/fuzzy76/medials
Spennende tråd

Hva
En uptime teller til windows da den innebygde bare tar sessjon og ikke totalt.
Installasjonsfil med automatisk oppstart ved start. Jeg lagde det fordi som server admin er det greit å vite kjøretid på en maskin, sessjon og totalt. programmet ligger på vektøylinjen.

Språk
Vb.net
(Skal skrives om i C#)

http://vu.zz.mu/image.php?di=8PZO
Sist endret av Seaturtle5; 24. august 2015 kl. 09:00.
Sitat av Seaturtle5 Vis innlegg
En uptime teller til windows da den innebygde bare tar sessjon og ikke totalt.
Vis hele sitatet...
Ikke for å knuse drømmene dine, men det er bare å skrive "net statistics server" i cmd/powershell så får du datoen maskinen sist restartet tilbake i en av de første linjene som outputtes.

Men for all del, folk som programmerer løsninger for problemer de har > folk som ikke gjør det. Så stå på!
Sitat av moridin Vis innlegg
Ikke for å knuse drømmene dine, men det er bare å skrive "net statistics server" i cmd/powershell så får du datoen maskinen sist restartet tilbake i en av de første linjene som outputtes.

Men for all del, folk som programmerer løsninger for problemer de har > folk som ikke gjør det. Så stå på!
Vis hele sitatet...
Den forteller ikke hvor mange timer windows har kjørt totalt over alle sessjonene. WinUptime lagrer tiden mellom omstarter osv.
▼ ... noen uker senere ... ▼
Hva?
Practical Music Search a.k.a. PMS, et ncurses-frontend til Music Player Daemon, med Vim-aktig interface.

Språk
C++

Skjermbilder
Finnes et her: https://ambientsound.github.io/pms/

Kildekode
Finnes på Github
sindre@puse.cat:~$
Synderen's Avatar
Hva?
Taskmanager - tasksm er en task manager jeg bestemte meg for å lage i sommer i forbindelse med å lære meg Go. Det er ikke en task manager som htop for prosesser på maskinen, men ting jeg skal gjøre.

Språk
Go

Skjermbilder
Eldre versjon finnes her, men ser ikke mye anderledes ut nå http://i.imgur.com/YVa02lB.png

Kildekode
https://github.com/DownGoat/tasksm
Sitat av Synderen Vis innlegg
Taskmanager - tasksm er en task manager
Vis hele sitatet...
Her er også en kraftig task manager som kanskje kan være verdt å ta en titt på: http://taskwarrior.org/
Hvorfor?
Egentrening + at det er morsomt å se på når det funker. Utover det så er det egentlig helt meningsløst.

Hva?
MS Paint - Copy and not paste but draw manually. Et lite script som leser inn fargeverdiene på alle piksler innafor et visst område, enten et skjermvindu eller et egendefinert rektangulært område

Språk
Autohotkey

Skjermbilder
Nei, det er meningsløst å legge ut stillbilde av MS paint.

Kildekode
http://pastebin.com/nd59TAUH
Hva?
nrk_downloader, et program skrevet i Python for å laste ned programmer fra NRK TV og Radio med command line interface. I prinsippet gjør det samme jobben som snippsat sitt wx_nrk, men med noen praktiske forskjeller fra et brukerperspektiv. nrk_downloader har som sagt ikke GUI, og bruker heller ingen eksterne programmer som ffmpeg eller avconv, men lagrer heller MPEG transport streamen direkte som en .ts-fil, som lar seg spille av i de aller fleste avspillere.

Jeg jobber også litt på si med støtte for HDS-streams som nrk.no/skole bruker (i motsetning til HLS, brukt på tv.nrk.no, radio.nrk.no og nrksuper.no), men det krever porting til python og delvis omskriving av en annen persons php-prosjekt, og fritiden min er rimelig begrenset i omfang for tiden.

Merk at formålet med programmet ikke er å bryte programeiernes rettigheter, men å gjøre det mulig for de med en ustabil eller treg internettlinje å kunne se programmene i god kvalitet uten bufringsavbrudd eller lagre dem på et medium for enkel avspilling på TV eller liknende.

Språk
Python

Skjermbilder
Er ikke så veldig spennende med skjermbilder av et CLI.

Kildekode
https://github.com/kvolden/nrk_download
Hva?
CloudAudio, ett nettside som skal være ett alternativ til SoundCloud. Har kjørt en public beta tidligere, og jobber nå med finpuss av responsivt design, og bugfixing. Håper å rekke en lansering før året er omme.

Språk
php 5.6 (backend), javascript (frontend, ajax calls mm), html5 (frontend), css3 (design), c++ (backend, konvertering av lydfiler, og parsing av wav filer til arrays med punktdata for å tegne waveforms), bash script (opprydding av temp filer mm), og SQL (backend, database MySQL).

Skjermbilder
http://imgur.com/a/iIp4E

Offentlig beta
http://cloudaud.io/explore

Kildekode
Proprietær/lukket. Kommer til å gi ut noen av komponentene som åpen kildekode etterhvert, men det er ikke klart enda.
▼ ... noen måneder senere ... ▼
Hva?
En webapp som kan ta et filbasert backend (foreløpig kun GIT-repositories med markdown-filer, men Evernote står også på ønskelista) og presentere det som et nettsted inni en theme (bruker Plates som template motor). Støtter oppdateringer via webhooks fra f.eks Github. Er ikke i en release-utgave enda, men det nærmer seg.

Språk
PHP 5.4. Mitt første prosjekt hvor jeg har prøvd å bruke composer-packages for alt det er verdt.

Kildekode
https://github.com/fuzzy76/Sire
▼ ... noen måneder senere ... ▼
Hva:
Python api for nrk/script for å laste ned fra nrk

Hvorfor:
Det er en hel haug av script for å laste ned stuff fra nrk men jeg endte opp med mitt eget pga jeg fant ikke noe som hadde alle krav

Must:
- CLI
- enkelt å last alle episoder (hovedgrunn)
- parallell nedlasting
- subs
- søk
- url
- virke på super og på nrk
- må virke på nix og windows
- Dama må klare å bruke det...

Heldigvis er det mye python kode for nrk så jeg har kunne hentet mye "inspirasjon" fra: kvolden/nrk_download, TheSimoms/NRK-Downloader, snippsats og tamland/xbmc-addon-nrk
Språk:
Python

"Screenshot":

Kode

> python nrkdl.py -s "lille jack"
  4: Når lysene tennes...
  3: Visittid
  2: Frieren
  1: På kino i kveld
  0: Lille Jack

Select a number or use slice notation
0

  2: Lille Jack 29:52
  1: Lille Jack 31:52
  0: Lille Jack 32:52

Select a number or use slice notation
::

Downloads starting soon.. 3 downloads to go
100%|############################################################################| 3/3 [03:57<00:00, 79.09s/it]
Kildekode:
https://github.com/Hellowlol/nrkdl
Hva:
En iPhone-app lagd i React-Native for å kontrollere en Raspberry Pi jeg planlegger å plassere i bilen.

Språk:
Node.js/Javascript + Python på RaspberryPien. Planen er å kommunisere via websockets.

Kildekode:
Har planer om å få lagt det på Github etter hvert.
ओम नमो नारायण
Dodecha's Avatar
DonorCrew
Hva:
"Proof of concept" til backend for raspberry pi, kontrollering av projektor, koden blir nok veldig overhalt etterhvert. Jeg har også stjelt initialiseringsparametrene som ble brukt fra WiringPI.
Språk:
C/C++
Kildekode:

Kode

#include <stdio.h>
#include <unistd.h>           
#include <fcntl.h>               
#include <termios.h>         
#include <string.h>
#include <string>
using namespace std;

int sendData(int fdOut,unsigned char *command, int size) 
{
        if (fdOut != -1)
        {	
                int count = write(fdOut, command, size);   
                if (count < 0)
                {
                        printf("UART TX error\n");
                        return 2;
                }
	printf("Data string sent\n");
	return 0;
	}			
}





int main(int argc,char *argv[])
{

int a = 0;
int chNumber = 0;
int _fdOut = -1;
int _fdIn = -1;
int _peek = -1;
bool fRtsCts = false;
//Projector commands
unsigned char Pr_pwrOn[] = {"\xBE\xEF\x03\x06\x00\xBA\xD2\x01\x00\x00\x60\x01\x00\r\n"};
unsigned char Pr_inputSel[] = {"\xBE\xEF\x03\x06\x00\xAE\xD1\x01\x00\x00\x20\x05\x00\r\n"};
unsigned char Pr_pwrOff[] = {"\xBE\xEF\x03\x06\x00\x2A\xD3\x01\x00\x00\x60\x00\x00\r\n"};


struct termios tc;
// If open then close
if (_fdOut != -1) {
	close(_fdOut);
	_fdOut = -1;
}

if ((_fdOut = open("/dev/ttyAMA0", O_RDWR | O_NOCTTY | O_SYNC | O_NONBLOCK)) == -1)
{
	printf("Open failed.. Do you have the right privileges?\n");
	return false;
}


if (tcgetattr(_fdOut, &tc))
{
	return false;
}
/* input flags */
    tc.c_iflag &= ~ IGNBRK; /* enable ignoring break */
    tc.c_iflag &= ~(IGNPAR | PARMRK); /* disable parity checks */
    tc.c_iflag &= ~ INPCK; /* disable parity checking */
    tc.c_iflag &= ~ ISTRIP; /* disable stripping 8th bit */
    tc.c_iflag &= ~(INLCR | ICRNL); /* disable translating NL <-> CR */
    tc.c_iflag &= ~ IGNCR; /* disable ignoring CR */
    tc.c_iflag &= ~(IXON | IXOFF); /* disable XON/XOFF flow control */
    /* output flags */
    tc.c_oflag &= ~ OPOST; /* disable output processing */
    tc.c_oflag &= ~(ONLCR | OCRNL); /* disable translating NL <-> CR */
    /* not for FreeBSD */
    tc.c_oflag &= ~ OFILL; /* disable fill characters */
    /* control flags */
    tc.c_cflag |= CLOCAL; /* prevent changing ownership */
    tc.c_cflag |= CREAD; /* enable reciever */
    tc.c_cflag &= ~ PARENB; /* disable parity */
    tc.c_cflag &= ~ CSTOPB; /* disable 2 stop bits */
    tc.c_cflag &= ~ CSIZE; /* remove size flag... */
    tc.c_cflag |= CS8; /* ...enable 8 bit characters */
    tc.c_cflag |= HUPCL; /* enable lower control lines on close - hang up */
    if (fRtsCts)
        tc.c_cflag |= CRTSCTS; /* enable hardware CTS/RTS flow control */
    else
        tc.c_cflag &= ~ CRTSCTS; /* disable hardware CTS/RTS flow control */
    /* local flags */
    tc.c_lflag &= ~ ISIG; /* disable generating signals */
    tc.c_lflag &= ~ ICANON; /* disable canonical mode - line by line */
    tc.c_lflag &= ~ ECHO; /* disable echoing characters */
    tc.c_lflag &= ~ ECHONL; /* ??? */
    tc.c_lflag &= ~ NOFLSH; /* disable flushing on SIGINT */
    tc.c_lflag &= ~ IEXTEN; /* disable input processing */

    /* control characters */
    memset(tc.c_cc,0,sizeof(tc.c_cc));

    /* set i/o baud rate */
    cfsetspeed(&tc, B19200);

    tcsetattr(_fdOut, TCSAFLUSH, &tc);

    /* enable input & output transmission */
    tcflow(_fdOut, TCOON | TCION);


    while (chNumber == 0) {
	    printf("Choose operation\n");
	    printf("1. Power on\n");
	    printf("2. Select input\n");
	    printf("3. Power off\n");
	    printf("4. Quit\n");
	    printf("[?]: ");
	    scanf("%d", &a);
	    switch (a) {
			case 1:
		    	// Turn on projector
			
        		sendData(_fdOut, Pr_pwrOn, sizeof(Pr_pwrOn));
			break;
			case 2:
			sendData(_fdOut, Pr_inputSel, sizeof(Pr_inputSel));
			break;
			case 3:
			sendData(_fdOut, Pr_pwrOff, sizeof(Pr_pwrOff));
			break;
			case 4:
			chNumber = 1;
			break;
			default:
			chNumber = 1;
			break;
	    }
    }
			

printf("Bye..\n");
close(_fdOut);
return 0;
}
Hva?

En genetisk algoritme som løser n x n queens problem samt visuell representasjon av løsning.

Måtte klippe en del kode - passerer godt over 15.000,- tegn

Kun implementert crossover - med påfølgende prematur konvergering

Kode

    private List<GameObject> GaList = new List<GameObject>();
    public List<GameObject> MateList = new List<GameObject>();
    public List<float> FitnessList = new List<float>();
    public List<int> pair_i = new List<int>();
    public List<int> pair_k = new List<int>();
    private List<GameObject> QueenList = new List<GameObject>();
    public int[] bestGeneSequence;
    public int[] pairI;
    public int[] pairK;
    public int[] rankedFitness;

 
    void Awake()
    {
 
        bestGeneSequence = randomizeGenes();
        pairList = new Vector2[populationSize / 2];
        ave_Fitness = 50f;
        boardParent = new GameObject("Board");
 
        queenParent = new GameObject("QueenParent");
 
        populationParent = new GameObject("PopulationParent");
 
        //    float[] FitnessList = new float[problemSize];
        float[] rankedFitness = new float[problemSize];
        lowest = 1;
        bestFitness = 10;
 
    }
    public void OnGUI()
    {
        // GUI.contentColor = Color.black;
 
 
        GUI.Label(new Rect(150, 40, 40, 40), "bestGeneSequence  " + bestGeneSequence, "black");
 ck");
        GUI.Label(new Rect(350, 80, 40, 40), "ave_Fitness " + ave_Fitness, "black");
        GUI.Label(new Rect(350, 100, 40, 40), "conflicts1gen " + conflicts1gen, "black");
        GUI.Label(new Rect(350, 120, 40, 40), "conflicts2gen " + conflicts2gen, "black");
    }
 
 
 
 
    void initBoard()
    {
        Vector3 worldPos = new Vector3();
        bool nextWhite = true;
 
        for (int width = 0; width < problemSize; width++)
        {
 
            if (nextWhite)
            {
                nextWhite = false;
            }
            else
            { nextWhite = true; }
 
            for (int height = 0; height < problemSize; height++)
            {
 
                worldPos.x = width+1;
                worldPos.y = -0.5f;
                worldPos.z = height+1;
 
 
                if (nextWhite)
                {
                    nextWhite = false;
                    var brick = Instantiate(squarePrefab, worldPos, Quaternion.Euler(0, 0, 0)) as GameObject;
                    brick.transform.parent = boardParent.GetComponent<Transform>();
                    bricks++;
                    brick.GetComponent<Renderer>().material.color = Color.white;
 
                }
                else
                {
                    nextWhite = true;
                    var brick = Instantiate(squarePrefab, worldPos, Quaternion.Euler(0, 0, 0)) as GameObject;
                    bricks++;
                    brick.transform.parent = boardParent.GetComponent<Transform>();
                    brick.GetComponent<Renderer>().material.color = Color.black;
 
                }
            }
 
        }
    }
 
 
    void rankFitness()
    {
        conflicts2gen = conflicts1gen;
        conflicts1gen = ave_Fitness;
        sum_Fitness = 0;
        //  for (int i = 0; i < FitnessList.Count; i++)
        for (int i = 0; i < problemSize; i++)
        {
            float val = FitnessList[i];
            sum_Fitness += val;
 
            if (val < lowest)
            {
                lowest = val;
            }
        }
 
        ave_Fitness = sum_Fitness / problemSize;
        checkFitness();
        createPairs();
    }
 
    void callCreatePairs()
    {
        while(offspringCount < (populationSize+1))
        {
            createPairs();
        }
    }
    void createPairs()
    {
 
        // Vector2[] pairList = new Vector2[populationSize];
        int K = Mathf.RoundToInt(Random.Range(0f, populationSize));
        int I = Mathf.RoundToInt(Random.Range(0f, populationSize));
 
        float probI = MateList[i].GetComponent<Individual>().breedProb;
        float intGenI = MateList[i].GetComponent<Individual>().intGen;
 
        float probK = MateList[K].GetComponent<Individual>().breedProb;
        float intGenK = MateList[K].GetComponent<Individual>().intGen;
 
        float breedRoll = (probK + probI) / 2;
 
        if (offspringCount < (populationSize / 2))
        {
            if (Random.value > breedRoll)
            {
                pairI[offspringCount] = I;
                pairK[offspringCount] = K;
 
                offspringCount++;
            }
        }
        else
        {
        //    checkFitness();
       //     rankFitness();
        }
    }
       
           //     float probK = MateList[k].GetComponent<Individual>().breedProb;
               //     float ingGenK = MateList[k].GetComponent<Individual>().intGen;
 
                 
 
                    // pair.x = eneParam;
                    // pair.y = andreParam;
                    //   pairList.GetLowerBound(indexer);
     
                    //  pairI.SetValue(eneParam, offspringCount);  
                    //  pairK.SetValue(andreParam, offspringCount);
 
 
 
 
        //int I = Mathf.RoundToInt(Random.Range(0f, problemSize));
       
 
 
        //  probK = (MateList[K].GetComponent<Individual>().fitness - lowest) / (bestFitness - lowest);
        //  probI = (MateList[i].GetComponent<Individual>().fitness - lowest) / (bestFitness - lowest);
 
        //   float det = Random.value * probK * probI;
 
        //breedPairs();
   
 
 
 
 
 
    void breedPairs()
    {
        int[] geneSeqI = new int[problemSize];
        int[] geneSeqK = new int[problemSize];
 
 
        for (int i = 0; i < (populationSize / 2); i++)
        {
            Vector2 pair = new Vector2();
            pair = pairList[i];
            //     int I = Mathf.RoundToInt(pair.x);
            //     int K = Mathf.RoundToInt(pair.y);
            int I = pairI[i];
            int K = pairK[i];
            geneSeqI = MateList[i].GetComponent<Individual>().geneSequence;
            geneSeqK = MateList[K].GetComponent<Individual>().geneSequence;
 
            crossOver(geneSeqI, I, geneSeqK, K);
        }
 
    }
 
    void crossOver(int[] geneSeqI, int i, int[] geneSeqK, int k)
    {
        int setCrossPoint = Mathf.RoundToInt(problemSize * Random.value);
 
        int[] geneSeqOffspringI = new int[problemSize];
        int[] geneSeqOffspringK = new int[problemSize];
        int fitnessK;
        int fitnessI;
 
        for (int ii = 0; ii < setCrossPoint; ii++)
        {
            geneSeqOffspringI[ii] = geneSeqK[ii];
            geneSeqOffspringK[ii] = geneSeqK[ii];
        }
        for (int ii = setCrossPoint; ii < problemSize; ii++)
        {
            geneSeqOffspringK[ii] = geneSeqI[ii];
            geneSeqOffspringI[ii] = geneSeqI[ii];
        }
 
        fitnessK = counterExt_Loop(geneSeqOffspringK);
        fitnessI = counterExt_Loop(geneSeqOffspringI);
 
        av_fit += (fitnessK + fitnessI);
        int nextGen = generation + 1;
       
        instantiateNewGen(geneSeqOffspringK, fitnessK, geneSeqOffspringI, fitnessI, offsrpingNr, nextGen);
    }
 
 
void instantiateNewGen(int[] geneSeqOffspringK, int fitnessK, int[] geneSeqOffspringI, int fitnessI, int offspringNr, int nextGen)
        {
 
            GameObject ga = Instantiate(individuals) as GameObject;          
            ga.GetComponent<Individual>().geneSequence = geneSeqOffspringI;
            ga.tag = "gaTag";
            ga.GetComponent<Individual>().myNumber = offsrpingNr;
            ga.GetComponent<Individual>().fitness = fitnessI;
            if (fitnessI > ave_Fitness)
        {
            ga.GetComponent<Individual>().breedProb = 0.75f;
        }
        else
        {
            ga.GetComponent<Individual>().breedProb = 0.25f;
        }
        GaList.Add(ga);
             ga.name = "Generation" + nextGen + "Nr " + offspringNr;
             MateList.Add(ga);
            ga.GetComponent<Individual>().generation = nextGen;
            ga.transform.parent = populationParent.GetComponent<Transform>();
 
            GameObject ga2 = Instantiate(individuals) as GameObject;
            ga2.GetComponent<Individual>().geneSequence = geneSeqOffspringK;
            ga2.tag = "gaTag";
            ga2.name = "Generation" + nextGen + "Nr " + (offsrpingNr + 1);
            ga2.GetComponent<Individual>().myNumber = (offsrpingNr+1);
            ga2.GetComponent<Individual>().fitness = fitnessK;
        if (fitnessK > ave_Fitness)
        {
            ga2.GetComponent<Individual>().breedProb = 0.75f;
        }
        else
        {
            ga2.GetComponent<Individual>().breedProb = 0.25f;
        }
        GaList.Add(ga2);
            MateList.Add(ga2);
              ga2.GetComponent<Individual>().generation = nextGen;
            ga2.transform.parent = populationParent.GetComponent<Transform>();
 
            offsrpingNr += 2;
           
            if(offsrpingNr == populationSize)
        {
            ave_Fitness = av_fit / populationSize;
            av_fit = 0;
            offsrpingNr = 0;
            destroyParents();
        }
 
        }
    void destroyParents()
    {
        generation++;
        foreach(GameObject gaTag in MateList)
        {
           int g = gaTag.GetComponent<Individual>().generation;
           if(g != generation)
            {
                Destroy(gaTag);
                clearList();
            }
        }
    }
 
 
    //  MateList[k].GetComponent<Individual>().geneSequence = geneSeqOffspringK;
    //  MateList[k].GetComponent<Individual>().intGen += 1;
    //  MateList[k].GetComponent<Individual>().fitness = fitnessK;
    //  MateList[k].GetComponent<Individual>().generation += 1;
    //    MateList[k].GetComponent<Individual>().rankFitness();
    // FitnessList[k] =
    // MateList[k].GetComponent<Individual>().rankFitness();
 
    //   MateList[i].GetComponent<Individual>().geneSequence = geneSeqOffspringI;
    //  MateList[i].GetComponent<Individual>().fitness = fitnessI;
    //  MateList[i].GetComponent<Individual>().intGen += 1;
    //  MateList[i].GetComponent<Individual>().generation += 1;
    //  MateList[i].GetComponent<Individual>().rankFitness();
    //FitnessList[i] =
    //  MateList[i].GetComponent<Individual>().rankFitness();
 
 
 
    int counterExt_Loop(int[] geneSequence)
    {
       
       int numberOfConflicts = 0;
        for (int i = 0; i < problemSize; i++)
        {
            current_i = i;
            numberOfConflicts += counterInt_Loop(i, geneSequence[i], geneSequence);
        }
        int fit = (100 - numberOfConflicts);
 
        if (fit > bestFitness)
        {
            bestFitness = fit;
            bestGeneSequence = geneSequence;
            updateVisual();
        }
        return fit;
    }
 
    int counterInt_Loop(int x, int z, int[] geneSequence)
    {
        int posX = x;
        int posZ = z;
        int n = problemSize;
        //Calc steps each quadrant
        int collCount = 0;
        //NW
        int stepsNW = Mathf.Min(posX, (n - posZ));
        int stepsNE = Mathf.Min((n - posX), (n - posZ));
        int stepsSW = Mathf.Min(posX, posZ);
        int stepsSE = Mathf.Min(posZ, (n - posX));
 
        //4 points create "hitzone"
 
        int pnt_NW_X = (posX - stepsNW);
        int pnt_NW_Z = (posZ + stepsNW);
        int SE_Steps = (stepsNW + stepsSE);
 
        int pnt_SW_X = (posX - stepsSW);
        int pnt_SW_Z = (posZ - stepsSW);
        int NE_Steps = (stepsSW + stepsNE);
 
        //Calculated diags, checking collisions (also with vertical axis
        for (int i = 0; i < problemSize; i++)
        {
            //xt/zt = target
            int xt = 0;
            int zt = 0;
            if (i == current_i)
            {
                i++;
                if (i == problemSize)
                {
                    return collCount;
                }
            }
            xt = i;
            zt = geneSequence[i];
 
            if ((pnt_NW_X + xt) == (pnt_NW_Z - zt))
            {
                collCount++;
            }
            if ((pnt_SW_X + xt) == (pnt_SW_Z + zt))
            {
                collCount++;
            }
            if (z == zt)
            {
                collCount++;
            }
        }
        return collCount;
    }
 
 
    void checkFitness()
    {
        for (int i = 0; i < GaList.Count; i++)
        {
            float contender = GaList[i].GetComponent<Individual>().fitness;
            int gen = GaList[i].GetComponent<Individual>().intGen;
            if (gen != generation) { Debug.Log("generation of individual # " + i + " not correct"); }
            if (bestFitness < contender)
            {
                bestFitness = contender;
                bestGeneSequence = GaList[i].GetComponent<Individual>().geneSequence;
                updateVisual();
            }
        }
    }
 
 
 
 
    void Start()
    {
        initGAindividuals();
        bestGeneSequence = new int[problemSize];
        rankedFitness = new int[GaList.Count];
        pairI = new int[populationSize/2];
        pairK = new int[populationSize/2];
 
        initBoard();
        initQueens();
        started = true;
    }
 
 
 
    void initGAindividuals()
    {
        for (int i = 0; i < populationSize; i++)
        {
            GameObject ga = Instantiate(individuals) as GameObject;
            ga.GetComponent<Individual>().geneSequence = randomizeGenes();
            ga.tag = "gaTag";
            ga.GetComponent<Individual>().myNumber = i;
            GaList.Add(ga);
            MateList.Add(ga);
            ga.transform.parent = populationParent.GetComponent<Transform>();
        }
    }
 
    int[] randomizeGenes()
    {
        int[] geneSequence = new int[problemSize];
        for (int i = 0; i < problemSize; i++)
        {
            geneSequence[i] = Mathf.RoundToInt(Random.Range(0f, problemSize));
        }
        return geneSequence;
    }
 
 
    void initQueens()
    {
        for (int i = 0; i < problemSize; i++)
        {
            Vector3 spawnPos = new Vector3(i, 0, bestGeneSequence[i]);
            GameObject queen = Instantiate(queenPrefab) as GameObject;
            queen.transform.position = spawnPos;
            queen.name = "Queen #" + i;
            QueenList.Add(queen);
 
            queen.transform.parent = queenParent.GetComponent<Transform>();
        }
    }
 a
windows screenshot
Hva?

Audiovisualizer med story. Egenprogrammert bevegelse av kamera, enten "flytrough" eller azimuth (rotasjon om punkt hhv origo)

Hvorfor jeg ikke gidder mer?

Ingen av kodene mine får plass i 15.000,- char limiten.


Kode

    0, 0, 0);
    // Enable the assignment of the buffer object to the attribute variable
    gl.enableVertexAttribArray(a_attribute);

    gl.bindBuffer(gl.ARRAY_BUFFER, null);

    return true;
}
var newArray = [];
// Note: These variables need to be global, since then need to
// maintain their value between invocations of the event handlers:
var g_dragging = false;          
var g_lastX = -1, g_lastY = -1;   // Last position of the mouse

// Note: These variables are made global in urder to print them on
// screen in the draw() function:
var transformedEyeDirection = new Vector4();

function initEventHandlers(document, canvas) {
	
    if (camMode == FlyThroughCam) {
        document.onkeydown = function (ev) {
            startTime = Date.now();
            var dx = 0.0, dy = 0.0, dz = 0.0, odx = 0.0, ody = 0.0, odz = 0.0;
            if (ev.keyCode == 33) { // The PgUp key was pressed
                dx = 0.0; dy = 0.1; dz = 0.0;

       

            if (camMode == AzimuthCam) {
                g_camera.elevation = Math.max(Math.min(g_camera.elevation + dy, 90.0), -90.0);
                startTime = Date.now();
                g_camera.azimuth = (g_camera.azimuth + dx + 360.0) % 360.0;
            }

            else if (camMode == AzimuthScreensaver) {
               // g_camera.elevation = 45;
               
              //  g_camera.azimuth = (g_camera.azimuth + dx + 360.0) % 360.0;                       
            }

            else if (camMode == FlyThroughCam) {
                // Limit x-axis rotation angle to -90 to 90 degrees
                g_eye.pitch = Math.max(Math.min(g_eye.pitch - dy, 90.0), -90.0);
                // Limit y-axis rotation angle to 0 to 360 degrees
                startTime = Date.now(); 
                g_eye.heading = (g_eye.heading - dx + 360.0) % 360.0;
            }
        }
		setViewProjectionMatrix(g_projMatrix, g_eye);
        g_lastX = x, g_lastY = y;
    };

    canvas.onmousewheel = function (ev) { 
        if (camMode == AzimuthCam) {
            var dm = ev.deltaY * 0.01;
            g_camera.distance = Math.max(2.0, g_camera.distance + dm); 				
			setViewProjectionMatrix(g_projMatrix, g_eye);
        }
    };
	
}


var powArray = [];
var thisPowArray = [];
var historyArr = [];
var historyArr2 = [];
var reducedArray = [];
var vpM = new Matrix4();
function setViewProjectionMatrix(projMatrix, eye){
	
		if (camMode == AzimuthCam) {       
       // g_mvpMatrix.set(projMatrix);
        g_viewMatrix.setTranslate(0.0, 0.0, -g_camera.distance);
        g_viewMatrix.rotate(g_camera.elevation, 1.0, 0.0, 0.0);
        g_viewMatrix.rotate(g_camera.azimuth, 0.0, 1.0, 0.0);
       // g_mvpMatrix.multiply(g_viewMatrix);    
        vpM = new Matrix4();
        vpM.set(g_projMatrix).multiply(g_viewMatrix);
    }
	
    else if (camMode == AzimuthScreensaver) {            
        g_camera.azimuth = screensaverRotation % 360.0;       
     
        g_viewMatrix.setTranslate(0.0, 0.0, -g_camera.distance);
        g_viewMatrix.rotate(g_camera.elevation, 1.0, 0.0, 0.0);
        g_viewMatrix.rotate(g_camera.azimuth, 0.0, 1.0, 0.0);
    
        vpM = new Matrix4();
        vpM.set(g_projMatrix).multiply(g_viewMatrix);
    }

    else if (camMode == FlyThroughCam) {
  
        g_viewMatrix.setRotate(-eye.pitch, 1.0, 0.0, 0.0); 
        g_viewMatrix.rotate(-eye.heading, 0.0, 1.0, 0.0); 
        g_viewMatrix.translate(-eye.x, -eye.y, -eye.z);
     
        vpM = new Matrix4();
        vpM.set(g_projMatrix).multiply(g_viewMatrix);
    }
}

function powerDraw(gl, n, gu_MvpMatrix, g_outputParagraph, array){

    g_outputParagraph.innerHTML = getPowPara(); 
	
	var start = Date.now(); 
	gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); 	
	var startComp = Date.now(); 
	

	var xStart = -barCrossection * Math.pow(2,(powTwo -1)); 
	var xMove = Math.pow(2,(7-powTwo)); 
	for(var i = 0; i < historyLength; i++){
		var thisPos = powArray.length - i; 
		var thisArray = historyArr[thisPos]; 
		
		for(var i = 0; i < thisArray.length; i++){  //Math.pow(2,powTwo); i++){
			var pVolume = thisArray[i]; 
			var xPos = xStart + i * barCrossection; 
					
			pushMatrix(g_modelMatrix);
			g_modelMatrix.setTranslate(xPos,pVolume/2,thisPos); 		
			drawBox(gl, n, barCrossection, pVolume, barCrossection, vpM, gu_MvpMatrix);
			g_modelMatrix = popMatrix();
		}
	}
	var endComp = Date.now();
				
		var compInterval = Date.now() - lastCompUpdate; 
		if(compInterval > 2){
		lastCompUpdate = Date.now(); 
		computationTracker = Date.now() - startComp; 
		}
			//	for(var i = 0; i < (numOfBars-1); i++){
			//			placementBarX = xArr[i];
			//			placementBarY = yArr[i];
			//			thisArrayZ = zArr[i];
			///		xArr.push(placementBarX);
			//		yArr.push(placementBarY);
			//		zArr.push(thisArrayZ
        // Draw X-axis
		
        pushMatrix(g_modelMatrix);
        g_modelMatrix.setTranslate(5.0, 0.0, 0.0);
		g_modelMatrix.translate(-5.0, 0.0, -5.0);
        drawBox(gl, n, 10.0, 0.1, 0.1, vpM, gu_MvpMatrix);
        g_modelMatrix = popMatrix();


        // Draw Y-axis
        pushMatrix(g_modelMatrix);
        g_modelMatrix.setTranslate(0.0, 5.0, 0.0);
		g_modelMatrix.translate(-5.0, 0.0, -5.0);
        drawBox(gl, n, 0.1, 10.0, 0.1, vpM, gu_MvpMatrix);
        g_modelMatrix = popMatrix();

        // Draw Z-axis
        pushMatrix(g_modelMatrix);
        g_modelMatrix.setTranslate(0.0, 0.0, 5.0);
		g_modelMatrix.translate(-5.0, 0.0, -5.0);
        drawBox(gl, n, 0.1, 0.1, 10.0, vpM, gu_MvpMatrix);
        g_modelMatrix = popMatrix(); 
		
		var endFrame = Date.now();
				
		var frameInterval = Date.now() - lastFrameTimeUpdate; 
		if(frameInterval > 2){
		lastFrameTimeUpdate = Date.now(); 		
    	frameTracker = Date.now() - frameStart;
		}
	}	
function soloDraw(gl, n, gu_MvpMatrix, g_outputParagraph, array) { 
    	   takeTime();
		   
		   

       // g_mvpMatrix.set(projMatrix);
       // g_mvpMatrix.multiply(g_viewMatrix);
        //g_outputParagraph.innerHTML = "Screensaver enabled"; 
		
    g_outputParagraph.innerHTML = getOutPara(array); 
	
	var start = Date.now(); 
	gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); 	
	var startComp = Date.now(); 
	
	
	
	var breadthBars = totalBreadth/numOfBars; 			
			secondsShown = historyFrequency * historyLength;
			var stepsToShow = Math.min(historyArr.length, historySteps);			 
			var stepsZdir = historyLength/(stepsToShow+1);	
			stepPrII = Math.round(array.length/numOfBars); 
			var totalNrArrays = historyArr.length;
			var firstStepNr = totalNrArrays - stepsToShow;
			if (firstStepNr< 0){firstStepNr = 0;}
			var firstStepLength = -stepsToShow+1;	
			for(var i = 0; i < stepsToShow; i++){
				var thisArrayNr = firstStepNr + i; 
				var thisArrayZ = firstStepLength + stepsZdir * i;				
				var thisArray = historyArr[thisArrayNr]; 
									
				for(var ii = 0; ii < numOfBars; ii++){
					var k = stepPrII*ii; 
					if(thisArray[k] > 0.2){
					var volume = (thisArray[k])/(heightFactor); 
					var placementBarX = -totalBreadth/2 + ii*breadthBars;
					var placementBarY = volume/2; 
					
					pushMatrix(g_modelMatrix);
					g_modelMatrix.setTranslate(placementBarX, volume/2, thisArrayZ);
					drawBox(gl, n, breadthBars, volume, stepsZdir, vpM, gu_MvpMatrix);
					g_modelMatrix = popMatrix();					
					}				
					}
				}
				var endComp = Date.now();
				
		var compInterval = Date.now() - lastCompUpdate; 
		if(compInterval > 2){
		lastCompUpdate = Date.now(); 
		computationTracker = Date.now() - startComp; 
		}
			//	for(var i = 0; i < (numOfBars-1); i++){
			//			placementBarX = xArr[i];
			//			placementBarY = yArr[i];
			//			thisArrayZ = zArr[i];
			///		xArr.push(placementBarX);
			//		yArr.push(placementBarY);
			//		zArr.push(thisArrayZ
        // Draw X-axis
		
        pushMatrix(g_modelMatrix);
        g_modelMatrix.setTranslate(5.0, 0.0, 0.0);
		g_modelMatrix.translate(-5.0, 0.0, -5.0);
        drawBox(gl, n, 10.0, 0.1, 0.1, vpM, gu_MvpMatrix);
        g_modelMatrix = popMatrix();


        // Draw Y-axis
        pushMatrix(g_modelMatrix);
        g_modelMatrix.setTranslate(0.0, 5.0, 0.0);
		g_modelMatrix.translate(-5.0, 0.0, -5.0);
        drawBox(gl, n, 0.1, 10.0, 0.1, vpM, gu_MvpMatrix);
        g_modelMatrix = popMatrix();

        // Draw Z-axis
        pushMatrix(g_modelMatrix);
        g_modelMatrix.setTranslate(0.0, 0.0, 5.0);
		g_modelMatrix.translate(-5.0, 0.0, -5.0);
        drawBox(gl, n, 0.1, 0.1, 10.0, vpM, gu_MvpMatrix);
        g_modelMatrix = popMatrix(); 
		
		var endFrame = Date.now();
				
		var frameInterval = Date.now() - lastFrameTimeUpdate; 
		if(frameInterval > 2){
		lastFrameTimeUpdate = Date.now(); 		
    	frameTracker = Date.now() - frameStart;
		}
}

var g_matrixStack = []; // Array for storing a matrix
function pushMatrix(m) { // Store the specified matrix to the array
    var m2 = new Matrix4(m);
    g_matrixStack.push(m2);
}

function popMatrix() { // Retrieve the matrix from the array
    return g_matrixStack.pop();
}
// Draw rectangular solid
function drawBox(gl, n, width, height, depth, viewProjMatrix, gu_MvpMatrix) {
    pushMatrix(g_modelMatrix);   
	
    g_modelMatrix.scale(width, height, depth);
    var g_mvpMatrix = new Matrix4();
    g_mvpMatrix.set(viewProjMatrix);
    g_mvpMatrix.multiply(g_modelMatrix);
	
    gl.uniformMatrix4fv(gu_MvpMatrix, false, g_mvpMatrix.elements);

    gl.drawElements(gl.TRIANGLES, n, gl.UNSIGNED_BYTE, 0);
    g_modelMatrix = popMatrix();  
}


var screensaverRotation = 0; 
var sinceLastInput = 0; 
var g_last = Date.now();
function takeTime() {

    var now = Date.now();
    var elapsed = now - g_last;
    g_last = now;
    sinceLastInput = (Date.now() - startTime)/1000;
    screensaverRotation = sinceLastInput * 20;
    if (sinceLastInput > timeToSaver) {
        //  var lastMode = camMode;        
        Screensaver();
        
    }
}
    
var g_last = Date.now();
function animate(angle) {
  // Calculate the elapsed time
  var now = Date.now();
  var elapsed = now - g_last;
  g_last = now;
  // Update the current rotation angle (adjusted by the elapsed time)
  var newAngle = angle + (ANGLE_STEP * elapsed) / 1000.0;
   newAngle %= 360;
   currentRot += (rot_Step * elapsed) / 1000.0;
}
    
    



function setupAudioNodes() {

    g_scriptNode = g_audioCtx.createScriptProcessor(0, 1, 1);

    g_scriptNode.connect(g_audioCtx.destination);

    g_analyser = g_audioCtx.createAnalyser();

    g_analyser.smoothingTimeConstant = 0.3;

    g_analyser.fftSize = 256;

    g_source = g_audioCtx.createBufferSource();
    g_source.connect(g_analyser);
    g_analyser.connect(g_scriptNode);

    g_source.connect(g_audioCtx.destination);
}

function loadSound(url) {
    var request = new XMLHttpRequest();
    request.open('GET', url, true);
    request.responseType = 'arraybuffer';

    request.onload = function () {

      
        g_audioCtx.decodeAudioData(request.response, function (buffer) {
         
            g_audioBuffer = buffer;
            playSound();
        }, onError);
    }
    request.send();
}


function playSound() {
    g_source.buffer = g_audioBuffer;
    g_source.start();
}

function restartSound() {
    if (g_source != 0) {
        g_source.stop();
    }
    setupAudioNodes();
    playSound();
}

function stopSound() {
    g_source.stop();
}

function onError(e) {
    console.log(e);
}

function timeToSaver() {
    dMElement.innerHTML = 'timeToSaver ( = ' + timeToSaver + ')';
}



function getOutPara(array) {
		var betweUpdates = (1/historyFrequency)*60*1000;
    var para = " t since last input: " + Math.round(sinceLastInput) +  "<p>"  + "With current input, there are: " + stepsShown + " steps shown, each represented by " + numOfBars + " bars. "
	 + "<p>" + " Time to complete all computations:  " + frameTracker + "<p>" +
	" Time to complete computation of bars loop:  " + computationTracker + "<p>"+" Set delay betwenUpdates (historyFrequency): " + betweUpdates;           
    return para;
}

	
function getPowPara() {	
    var powPara = " t since last interval: "  +interval+ +  " elemcount  " + elementCount +" <p>"  + "With current input, there are: " + reducedArray + " histRed" + historyArr2 + " steps shown, each represented by "+" bars. "
	 + "<p>" + " Time to complete all computations:  " + thisPowArray + "<p>" +
	" Time to complete computation of bars loop:  " + historyArr.length + "<p>"+" Set delay betwenUpdates (historyFrequency): ";           
    return powPara;
}
	function Azimuth() {
    camMode = AzimuthCam;
    dMElement.innerHTML = 'CamMode = AzimuthCam ( = ' + camMode + ')';
}
  
function FlyThrough() {
    camMode = FlyThroughCam;
 dMElement.innerHTML = 'CamMode = FlyThroughCam ( = ' + camMode + ')';
}
function PowerOfTwoMode(){

	if(powTwoMode){
	  powTwoMode = false; 
  }
  else{
	  powTwoMode = true; 
  }
}
function setPow2(){
	powTwo = Number(document.getElementById("txt_powTwo").value);
if(powTwo < 8 && powTwo > 0){
	
	powTwo =  floor(powTwo); 
	interval = pow(2,(7-powTwo));
	elementCount = pow(2,powTwo); 
	}
else{
	powTwo = 4; 
	powTwo = floor (powTwo); 
	interval = pow(2,(7-powTwo));
	elementCount = pow(2,powTwo); 
}
}


function setBarCrossection(){
	barCrossection = Number(document.getElementById("txt_barCrossection").value);
}
function Screensaver() {
    camMode = AzimuthScreensaver;
 //   dMElement.innerHTML = 'CamMode = AzimuthScreensaver ( = ' + camMode + ')';
}

function Exam() {
    VisualMode = ExamGraph;
    dMElement.innerHTML = 'VisualMode = ExamGraph ( = ' + VisualMode + ')';
}

function tTSaver() {
    timeToSaver = Number(document.getElementById("txt_timeToSaver").value);
}

function numB() {
    numOfBars = Number(document.getElementById("txt_numOfBars").value);
}
function updates(){
    totalBreadth = Number(document.getElementById("txt_updatesPrSecond").value);
}

function updatesHeight(){
    heightFactor = Number(document.getElementById("txt_historyHeightFactor").value);
}
function updatesLength(){
    historyLength = Number(document.getElementById("txt_historyElementsInStory").value);
}
function updatesSteps(){
    historySteps = Number(document.getElementById("txt_historyStepsInStory").value);
}
function updateFrequency(){
    historyFrequency = Number(document.getElementById("txt_historyElementsPrSecond").value);
}
Sist endret av Tøffetom; 16. juni 2016 kl. 12:30.
http://nffimg.poopr.ru/f/e/c/webshot_postimg.org_20160615013235_fec777f0.png
Hva
2D PvP basert MMO med hovedfokus på gameplay og fast paced action.

Prosjektet har en server og en klient hvor begge pr nå er i fungerende stand. Ting som fungerer i spillet, over nettverk (i.e man kan spille sammen)
- Movement i verden
- Aggressive / passive mode
- Angripe andre spillere
- Hitpoints
- Death
- Chat

Som bildet viser er det påbegynt inventory og backback som selvsagt skal være drag and drop. Ganske mye som gjenstår før det er ett produkt man kan ha mye moro med.. men for øyeblikket er det faktisk ganske gøy å logge inn med andre testere og duellere. Interface er fluid og kan resizes/posisjoneres som man selv vil. Utseende pr nå baserer seg på skins og vil få en solid overhaling når mer funksjonaltiet er på plass.

Neste skritt i spillet er å implementere fungerende items som gir drag and drop slik at man kan equipe nye våpen/armor ol.

Språk
Java med LibGDX rammeverket

Skjermbilder
http://i.imgur.com/OeA1QhV.png

Kildekode
Privat
Gjennomfører et timing attack mot (den nå foreldete), men framdeles mye brukte DES-algoritmen. Bruker en metode der jeg utnytter at beregningstiden til hver subkey fra hver av de 8 substitusjonsboksene er avhengig av hammingvekten til subkeyen.


Språk
Python

Kildekode
https://pastebin.com/hxigYT38
Hva
En showcase nettside template. Kanskje ikke under kategorien "programming", men it's something.

Språk
HTML, CSS, Javascript m/Jquery

Skjermbilder


Kildekode
Privat
Sitat av datagutten Vis innlegg
Hva?
En funksjon for å vise alle domener et organisasjonsnummer har og hvem som er registrar

Språk
PHP

Skjermbilder


Kildekode
https://github.com/datagutten/Domeneregistrar
Vis hele sitatet...
Dette var lurt! Prøvde scriptet ditt, men får ikke noe resultater fordi man ikke kommer forbi captcha kontrollen. Hvordan løser man det?

EDIT: Ser at dette innlegget var fra 2011. Men hvis noen har tips til hvordan man kommer rundt dette så er jeg takknemlig for løsning
Sist endret av fulloggal; 18. juni 2016 kl. 00:57.
nso
popålol
nso's Avatar
Administrator
Hva?
Internt inventat-/styring-/prediction system for noe så kjedelig som et firma som driver med teknologi for rekefarmer.

Teknologi-highlights/nevneverdige funksjoner:
  • C# ASP.NET MVC
  • SQL Server
  • REST API med auth (MVC.NET WEB API)
  • SDK for enkel kommunisering med REST API
  • Redis cache i API
  • Sykroniserte/sammarbeidende polling AJAX-forespørsler og svar mellom browser-tabber hvis flere er åpne (via localStorage/sessionStorage) (tenk facebook chat som oppdaterer seg samtidig i alle tabber)
  • Web Notifications
  • Responsive design

Kodesnutter/rask eksempel på kontrakter/dataflyt/kommunikasjon mellom prosjektene:

REST API

Kode

using XXX.Api.Services;

namespace XXX.Api.Controllers
{
    public class FeedingStrategyController : BaseApiController<FeedingStrategyService>
    {
        // GET: feeding-strategy/123
        public Dto.FeedingStrategy.Get.ResponseDto Get(int id, Dto.FeedingStrategy.Get.RequestDto dto)
        {
            return Service.Get(id);
        }

        // POST: feeding-strategy
        public Dto.FeedingStrategy.Post.ResponseDto Post(Dto.FeedingStrategy.Post.RequestDto dto)
        {
            return Service.Post(dto.name, dto.stage_list);
        }

        // DELETE: feeding-strategy/123
        public Dto.FeedingStrategy.Delete.ResponseDto Delete(int id, Dto.FeedingStrategy.Delete.RequestDto dto)
        {
            return Service.Delete(id);
        }
    }
}
SDK:

Kode

using System.Collections.Generic;
using XXX.Api.Sdk.Helpers;

namespace XXX.Api.Sdk.Targets
{
    public interface IFeedingStrategy
    {
        Dto.FeedingStrategy.Post.ResponseDto Add(string name, List<Dto.FeedingStrategy.Post.RequestStageListItemDto> stageList);
        Dto.FeedingStrategy.Delete.ResponseDto Delete(int feedingStrategyId);
        Dto.FeedingStrategy.Get.ResponseDto Get(int feedingStrategyId);
        IFeedingStrategyList List { get; }
    }

    public class FeedingStrategy : BaseTarget, IFeedingStrategy
    {
        public FeedingStrategy(IAuthentication auth)
            : base(auth)
        {
            TargetPath = "feeding-strategy";
        }

        public Dto.FeedingStrategy.Post.ResponseDto Add(
            string name, 
            List<Dto.FeedingStrategy.Post.RequestStageListItemDto> stageList)
        {
            var requestParameters = new Dto.FeedingStrategy.Post.RequestDto
            {
                name = name,
                stage_list = stageList,
            };

            var result = new RestClient<Dto.FeedingStrategy.Post.ResponseDto>(Auth).Post($"{TargetPath}", requestParameters);

            return result;
        }

        public Dto.FeedingStrategy.Delete.ResponseDto Delete(int feedingStrategyId)
        {
            var requestParameters = new Dto.FeedingStrategy.Delete.RequestDto();

            var result = new RestClient<Dto.FeedingStrategy.Delete.ResponseDto>(Auth).Delete($"{TargetPath}/{feedingStrategyId}", requestParameters);

            return result;
        }

        public Dto.FeedingStrategy.Get.ResponseDto Get(int feedingStrategyId)
        {
            var requestParameters = new Dto.FeedingStrategy.Get.RequestDto();
            
            var result = new RestClient<Dto.FeedingStrategy.Get.ResponseDto>(Auth).Get($"{TargetPath}/{feedingStrategyId}", requestParameters);

            return result;
        }

        public IFeedingStrategyList List => new FeedingStrategyList(Auth);
    }
}
Consumer av API (web front)

Kode

using System.Web.Mvc;
using XXX.Website.Web.ActionFilters;
using XXX.Website.Web.ActionFilters.Login;
using XXX.Website.Web.Models.ActionDtos.FeedingStrategy;
using XXX.Website.Web.Models.ViewModels;
using XXX.Website.Web.Services;

namespace XXX.Website.Web.Controllers
{
    [RequireLogin]
    [SelectMenuItem(MenuItem.FeedingStrategy)]
    public class FeedingStrategyController : BaseController<FeedingStrategyService>
    {
        // GET: Feeding-strategy/123
        [PopulateFarmListViewData]
        public ActionResult Index(int id)
        {
            return View(Service.GetView(id));
        }

        // GET: Feeding-strategies
        [PopulateFarmListViewData]
        public ActionResult List(int? page)
        {
            return View(Service.ListView(page));
        }

        // GET: Feeding-strategy/Add
        [ImportModelStateData]
        [RequireManager]
        [PopulateFarmListViewData]
        public ActionResult Add()
        {
            return View(Service.AddView());
        }

        //
        // POST: Feeding-strategy/Add
        [HttpPost, ExportModelStateData]
        [RequireManager]
        [ModelStatePreValidationRedirectionAction]
        [ModelStatePostValidationRedirectionAction(successAction: "List")]
        public void Add(AddActionDto dto)
        {
            Service.Add(
                dto.Name,
                dto.StageList);
        }

        // GET: Feeding-strategy/123/Delete
        [ImportModelStateData]
        [RequireSuperManager]
        [PopulateFarmListViewData]
        public ActionResult Delete(int id)
        {
            return View(Service.DeleteView(id));
        }

        //
        // POST: Feeding-strategy/123/Delete
        [HttpPost, ExportModelStateData]
        [RequireSuperManager]
        [ModelStatePreValidationRedirectionAction]
        [ModelStatePostValidationRedirectionAction(successAction: "List")]
        public void Delete(int id, DeleteActionDto dto)
        {
            Service.Delete(id);
        }
    }
}

======

using System;
using System.Collections.Generic;
using System.Linq;
using XXX.Api.Sdk;
using XXX.Website.Web.Models.ActionDtos.FeedingStrategy;
using XXX.Website.Web.Models.ViewModels;
using XXX.Website.Web.Models.ViewModels.FeedingStrategy;

namespace XXX.Website.Web.Services
{
    public class FeedingStrategyService : BaseService
    {
        private readonly ISdk _sdk;

        public FeedingStrategyService(ISdk sdk)
        {
            _sdk = sdk;
        }

        public GetViewModel GetView(int feedingStrategyId)
        {
            var result = _sdk.FeedingStrategy.Get(feedingStrategyId);

            var viewModel = new GetViewModel
            {
                Name = result.name,
                FeedingStrategyId = result.feeding_strategy_id,
                IsDeleted = result.is_deleted,
                StageList = result.stage_list
                    .Select(i => new GetViewModelStageListItem
                    {
                        FeedingStrategyStageId = i.feeding_strategy_stage_id,
                        PercentageBodyMassOfShrimpsAsFeed = i.percentage_body_mass_of_shrimps_as_feed,
                        StageNumber = i.stage_number,
                        TargetShrimpSizeInGrams = i.target_shrimp_size_in_grams,
                    })
                    .ToList(),

                Added = new AddedData
                {
                    UserId = result.added_by_user_id,
                    UserFirstName = result.added_by_user_first_name,
                    UserLastName = result.added_by_user_last_name,
                    DateTimeUtc = result.added_date_time_utc,
                },
                Deleted = new DeletedData
                {
                    UserFirstName = result.deleted_by_user_first_name,
                    UserId = result.deleted_by_user_id,
                    UserLastName = result.deleted_by_user_last_name,
                    DateTimeUtc = result.deleted_date_time_utc,
                },
                Updated = new UpdatedData
                {
                    UserFirstName = result.updated_by_user_first_name,
                    UserId = result.updated_by_user_id,
                    UserLastName = result.updated_by_user_last_name,
                    DateTimeUtc = result.updated_date_time_utc,
                },
            };

            return viewModel;
        }

        public ListViewModel ListView(int? page)
        {
            var result = _sdk.FeedingStrategy.List.Get(usePaging: true, pageNumber: page);

            var viewModel = new ListViewModel
            {
                FeedingStrategyList = result.feeding_strategy_list
                    .Select(i => new FeedingStrategyListItemUi
                    {
                        Name = i.name,
                        FeedingStrategyId = i.feeding_strategy_id,
                    })
                    .ToList(),
                ListPagination = new ListPaginationData
                {
                    PageNumber = result.page_number,
                    TotalCount = result.total_count,
                    PageSize = result.page_size,
                },
            };

            return viewModel;
        }

        public AddViewModel AddView()
        {
            return new AddViewModel();
        }

        public void Add(
            string name,
            List<AddActionDtoStageListItem> stageList)
        {
            try
            {
                _sdk.FeedingStrategy.Add(
                    name,
                    stageList
                        .Select(i => new Api.Dto.FeedingStrategy.Post.RequestStageListItemDto
                        {
                            target_shrimp_size_in_grams = i.TargetShrimpSizeInGrams,
                            percentage_body_mass_of_shrimps_as_feed = i.PercentageBodyMassOfShrimpsAsFeed,
                        })
                        .ToList());
            }

            catch (Exception ex)
            {
                HandleErrorWithException(ex, "An error occured while trying to add the feeding strategy.");
                return;
            }

            HandleSuccess($"Successfully added feeding strategy {name}.");
        }

        public DeleteViewModel DeleteView(int feedingStrategyId)
        {
            var result = _sdk.FeedingStrategy.Get(feedingStrategyId);

            var viewModel = new DeleteViewModel
            {
                Name = result.name,
                FeedingStrategyId = result.feeding_strategy_id,
                IsDeleted = result.is_deleted,
            };

            return viewModel;
        }

        public void Delete(int feedingStrategyId)
        {
            try
            {
                _sdk.FeedingStrategy.Delete(feedingStrategyId);
            }

            catch (Exception ex)
            {
                HandleErrorWithException(ex, "An error occured while trying to delete the feeding strategy.");
                return;
            }

            HandleSuccess($"Successfully deleted feeding strategy #{feedingStrategyId}.");
        }
    }
}
Skjermbilder
http://imgur.com/RCJSSWo
http://imgur.com/1aI9SY7
http://imgur.com/zyFTUNd
Sist endret av nso; 20. juni 2016 kl. 00:14.