TAE art1



Programmering

Triks og tips med programmering

Her vil jeg legge ut diverse programtips jeg har lært meg opp igjennom årene. Så heng på.

Men også litt selvstudie i diverse programspråk og programmer

Generelle temaer i ett programspråk

Det var Blaise Pascal (Født 19. juni 1623) som mente at ett programspråk skulle være som ett vanligspråk, derfor er det ett programspråk PASCAL som hyller ham. Må heller ikke glemme Ada Byron Lovelace (Født 10. desember 1815) som hadde ideer om å kunne mate maskinen med instruksjoner. Hun er definert som den første dataprogrammerer og ADA er programspråket som hyller henne.

Et programspråk  basert på noen enkle tankesett som dette:

- Parameter deklarasjon (var, set , declare osv)

- Matematiske operasjoner (+,-,*,/ osv)

- Matematiske funksjoner (cos, sin osv)

- Betingelse (if-then-else, case/switch, BNE osv)

- Hoppe i kode (Goto, JMP)

- Sløyfer (for, while, do osv)

- Korte programmer som kan returnere informasjon (funksjoner, subrutiner)

- Hendelser (onClick, IRQ osv)

- Innlesning av informasjon (Input osv)

- Skriv ut informasjon (Print, document.Write osv)

- Grafiskefunksjoner (Drawline, fillStyle)

- Objekt (class) - Ikke alle

- Bibliotek (Include, lib) - Ikke alle

Men så har vi assembler ordtaket: "gud er død, alt er tillat".

Skal man enda lengre ned i koden, har vi prosessorens programspråk. Det er to typer CISC og RISK. Med det ordtaket "Hvorfor ta en RISK når du kan velge CISC".

Det finnes prosessorer som tillater at man endrer mikroprogrammer. Men normalt er det for spesielt interesserte.

Programmering eller skripting?

Driver man med programmering eller skripting? I gamle dager skilte man mellom EDB (Elektronisk databehandling) og ADB (Administrativ databehandling). EDB var C og Assembler, der fikk man ikke noe gratis. Mens ADB var å gjøre noe kode i Word eller Excel og alt var tilrettelagt. EDB folk så ned på ADB folkene, fordi ADB folkene drev med enkel kode. EDB folkene prøvde å kode så kompakt og avansert som mulig. Det var når man ikke hadde mye minne, lav mikroprosessorhastighet og ganske liten diskplass.

Enkel kan man si at programmering er EDB og skripting er ADB. Men verden er ikke så enkel. Nå er det meste av programmering en blanding av gammel type av programmering og skripting. Man ser dette også godt i spillprogrammering. Tidligere måtte man lagt alt fra bunnen av. Nå er det egne spillgeneratorer, der man driver med noe skriptkode. Det er grunnen til at mange spill er like, fordi dem gjør ikke alt fra bunnen av.

Det er fordeler med at man bruker mer "moduler" er at man kan lage ett program i en fei. Ulempen er at man ikke har 100% kontroll over programmet og kan være en sikkerhetsrisiko.

Hvorfor må man skrive ToString eller lignende i koden?

Ofte må man legge inn en "forklaring" hvis man skal skrive ut en parameter i forskjellige programspråk. 


int i = 75;
Console.WriteLine(i.ToString());


Man kan lure på hvorfor man må gjøre slikt? At man må knote inn informasjon som virker innlysende for den som skriver kode.

Det er tre grunner:

- Latskap av dem som lager interpreter eller kompilatoren. Det var litt i gamle dager.
- I moderne programspråk kan interpreter eller kompilatoren bli forvirret, fordi man kan gi forskjellige "egenskaper" til de forskjellige konverterings typene. 
- Forenkler programmering fordi de oppfører seg som en funksjon.

 

Hvis interpreter eller kompilatoren ikke er 100% sikker på hva som skal skje, kan vi få SISO (søppel inn, søppel ut) problem.

Enkel kodefeil kan gi humoristiske utslag

Det har vært vanlig å flette informasjon fra en database inn i ett dokment, for så å lage mange brev. Det eldste metoden jeg har brukt var Enable. Ett produkt som hadde både database, regneark og dokument editor. Metoden er blitt brukt av veldig mange firmaer. Det man trenger å gjøre er kun å bytte ut navn og adresse i hvert av dokumentene. Dette er veldig besparende. Men det er i visse tilfeller at det kan gå litt feil. Er man litt ukritisk med det som ligger lagret i databasen, kan man få litt humoristiske utslag. Her er ett eksempel som jeg mottok for noen år siden. 

 AktivKvinne

 

At jeg er kvinne er en litt drøy påstand. Hadde man lagt inn en enkel if - then - else linje som for eksempel her:

if (kjønn == "kvinne") {.. hent adresse ..} else {..ikke til denne personen ..}

Så hadde problemet være løst.

Kjernen til ett C# program

Når man programmerer er det viktig å kjenne til kjernen i programspråket. Her er kjernen til ett C# program. [1]

using System;
namespace YourNamespace
{
 class YourClass
 {
 }

 struct YourStruct
 {
 }

 interface IYourInterface
 {
 }

 delegate int YourDelegate();

 enum YourEnum
 {
 }

 namespace YourNestedNamespace
 {
  struct YourStruct
  {
  }
 }

 class YourMainClass
 {
 static void Main(string[] args)
  {
  //Your program starts here...
  }
 }
}

Litt ekstra. Retur av integer og tar imot parametere. Hvis det er ønskelig eller behov for.

static int Main(string[] args)
{
return 0;
}

[1] https://msdn.microsoft.com/nb-no/library/67ef8sbd.aspx

C# program - betingelse operatører

En viktig del i alle programspråk er å kunne skjekke en tilstand for så å handle ut i fra om tilstanden er sann eller ikke. [1]
Den mest kjente er if-then (hvis så).

if(boolean_expression)
{
/* statement(s) will execute if the boolean expression is true */
}

if statement

og if-then-else (hvis så ellers).

if(boolean_expression)
{
/* statement(s) will execute if the boolean expression is true */
}
else
{
/* statement(s) will execute if the boolean expression is false */
}

if else statement

Videre har vi noe som heter Switch, i andre språk heter det Case-Select, som kan utføre egne operasjoner avhengig case (tilfellet) verdien.

switch(expression) {
 case constant-expression :
  statement(s);
  break; /* optional */
case constant-expression :
  statement(s);
  break; /* optional */

/* you can have any number of case statements */
default : /* Optional */
statement(s);
}

switch statement

 

 [1] http://www.tutorialspoint.com/csharp/csharp_decision_making.htm

Finne IP adressen via MAC adressen til en enhet

Når man jobber med enheter som er tilkoplet til nettet, er det ofte vesentlig å vite IP-adressen til den. I tilfeller der man har sendt avgårde enheten som er satt opp med en fast IP-adresse, men av en grunn har mistet oppsettet og falt tilbake til fabrikkinstillinger. Er det ikke alltid like lett å finne hvilken IP-adresse den har nå. Pluss å veilede en person i den andre enden om å sette opp enheten korrekt. kan by på problemer. Så via tipset her kan man finne IP-adressen via MAC adressen. De fleste enheter har MAC adressen klistrert på baksiden og er unik. Man kan også ha notert opp MAC adressen før man sendte ut enheten.

Powershell tips

Mer og mer oppsett er fornuftig å kjøre via shell. Spesielt via PowerShell. Nedenfor er det en liste over noen enkle tips.

Liste ut alle installerte dot NET versjoner

Skrive ut, legge til og fjerne MIME utvidelse

Trekk ut informasjon på en PC
I dette tipset vil disse nyttige informasjon relatert til den aktive PC/Server man henter informasjonen fra.

UserName
ComputerName
FQDN
RegisteredTo
Domain
DomainRole
WindowsVersion
ServicePackVersion
OSArchitecture
BuildNumber
Manufacturer
Model
SerialNumber
ProductID
ProductKey

Sjekke status på utvalgte Windows tjenester
I dette tipset vil disse bli tjenstene sjekket
SQL Server (MSSQLSERVER)
SQL Server Agent (MSSQLSERVER)

Kjøre en sjekkliste av installerte roller og funksjoner om dem er installert eller ikke
I dette tipset vil disse bli sjekket om er installert eller ikke.

Application Server
ASP.NET 4.5
Named Pipe Activation
IIS 6 Management Compatibility
Web Server (IIS)
IIS 6 Metabase Compatibility
IIS 6 Management Console
Web Server (IIS) Support

Installasjon av IIS med ønskede roller og funksjoner
I dette tipset vil disse bli installert

Application Server
Web Server (IIS)
Web Server (IIS) Support
Named Pipes Activation
ASP
IIS 6 Management Compatibility
IIS 6 Metabase Compatibility
IIS 6 Management
ASP.NET 3.5
ASP.NET 4.5

© 2016 Tor Anders Engen