Akvariehelg 2018

Varje år anordnar Nordiska Ciklidsällskapet en akvariehelg tillsammans med en lokal förening. Denna gång Göteborgs Ciklid- och Akvariesällskap. Det blev ett lyckat och utsålt evenemang. Jag bidrog med att göra hemsida och allt reklammaterial

www.akvariehelg.se

Genom att ha samma adress varje år så byggs det upp ett varumärke kring akvariehelg. Detta år var lila temat på allt reklammaterial.

Många kända föredragshållare

Statistik under perioden för reklamsiten

IT-arkitektur 2018 – 2021

Nästkommande tre år fokuseras på att jobba med tre grundläggande områden:

  • Information – Hur hanterar vi vår viktigaste information?
  • Integration – Hur flödar information mellan system?
  • Användare – Hur kan vi ha god struktur och säkerhet på användarinformationen?

Genom att ha ordning och struktur men också säkerhet inom dessa områden är vi förberedda för framtida utmaningar. Denna IT-arkitektur går i linje med Alingsås kommuns IT-program och eStrategi. Den tar även hänsyn till nationella initiativ från E-delegationen och SKL.

Läs den bifogade pdf-filen. Observera att den inte är antagen av Alingsås kommun än, men att du gärna får ta om du hittar något bra.

Ladda hem den här: IT-arkitektur 2018-2021

Inläsningstjänst – skapa importfil

Det kan vara riktigt jobbigt att skapa en importfil som en leverantör vill ha. Inläsningstjänst är bra då de har en bra specifikation som man får av dem, samt att de har sftp-servrar där man kan skicka upp filerna så eleverna automatiskt åker in.

Jag gjorde så här

1/ Installera Ubuntu 16.04 med en LAMP server. 

Jag valde att installera den i Vmware Fusion på min dator. Då blir det en lokal server. Den behöver komma åt LDAP-katalogen du vill läsa från.

2/ Kolla igenom scriptet nedan och bygg ett eget. Det är ganska logiskt och är inte så svårt. Du anropar scriptet med http://localhost/inlasningstjanst.php i webbläsaren.

Vad kan man göra mer? Någon form av felhantering kan vara bra att ha med. Jag har en metakatalog så alla konton är skapade med automatik så det är inte lika nödvändigt hos oss.

Hur ska vi kommuner slippa detta i framtiden?

Alingsås har två spår:

1/ En integration som klarar av att läsa LDAP och automatiskt skapa en .csv enligt styrfiler. Den håller Pulsen på att bygga åt oss och den kommer köras i Mule.

2/ SCIM och skolfederationsprojektet är så spännande . Det skulle lösa hela provisioneringsfrågan och standardisera om vi får snurr på det. Här kan du läsa mer om det: https://www.skolfederation.se/nyheter/2017/08/22/pocen-puttrar-pa/

Älmhults kommun är föredömliga och Max har gjort ett kanonjobb ni kan läsa mer om här: https://github.com/MaxWallstedt/SimpleSCIM

 

—> Scriptet <—

<?php

// Inställningar

$server = ’192.168.1.200’; // IP-adress till LDAP server i mitt fall eDirectory
$dn = ’cn=readonlyuser,ou=services,o=alingsas’; // Användare med rätt att läsa från LDAP
$pw = ’ToyotaIsBest4Ever’; // Lösenord
$searchbase = ’o=alingsas’; // Från vilken nivå ska vi söka. Här är översta nivån definerad

// Searchstring är ditt LDAP-filter där du ställer in vad du vill ha.
// Först tar jag med alla som är användare, sedan väljer jag ut elever och personal inom skolan
// Skolor kan byta namn så jag använder SCB’s skolkoder för att göra ett urval. Här får jag enbart med grundskolan i Alingsås

$searchstring=”(&(objectClass=user)(|(pidEduPersonScopedAffiliation=student@edu.alingsas.se)(pidEduPersonScopedAffiliation=faculty@edu.alingsas.se))
(|(pidschoolunitcode=74064638)
(pidschoolunitcode=74064638)
(pidschoolunitcode=63452058)
(pidschoolunitcode=49115714)
(pidschoolunitcode=78832157)
(pidschoolunitcode=34338735)
(pidschoolunitcode=32478204)
(pidschoolunitcode=28639614)
(pidschoolunitcode=78273632)
(pidschoolunitcode=87109819)
(pidschoolunitcode=46546067)
(pidschoolunitcode=84581048)
(pidschoolunitcode=92770341)
(pidschoolunitcode=76908037)
(pidschoolunitcode=38957274)
(pidschoolunitcode=90924483)
(pidschoolunitcode=98272016)
(pidschoolunitcode=71895385)
(pidschoolunitcode=57136802)
(pidschoolunitcode=70153094)
(pidschoolunitcode=63399058)
(pidschoolunitcode=87109819)
(pidschoolunitcode=75101306)
(pidschoolunitcode=70304200)
(pidschoolunitcode=70079232)
(pidschoolunitcode=63399058)
(pidschoolunitcode=87109819)
(pidschoolunitcode=75101306)
(pidschoolunitcode=70304200)
(pidschoolunitcode=70079232)
(pidschoolunitcode=63399058)
))”; //LDAP searchstring

//Skicka ut huvudrubrikerna. I Alingsås är alla fyllda utom Office365ID som vi inte har
echo ”Name;Email;Username;Type;Class;Organization;SchoolfederationID;Office365ID;GSuiteEmail<br>”;

// Välj vilka attribut som ska returneras. Ni ser att Office365ID lämnas tomt
$attnames=array(”fullname”,”mail”,”cn”,”pidcategory”,”ou”,”pidschoolunitcode”,”pidedupersonprincipalname”,””,”mail”); //Returned attributes

// Koppla mot servern
$ds=ldap_connect($server);

//Koppla upp mot LDAP
if ($ds) {
$r=ldap_bind($ds, $dn, $pw);
if($r) //echo ”LDAP_bind gick bra<br>”;

//ldap_search söker från $searchbase och alla underkataloger
$r=ldap_search($ds,$searchbase, $searchstring, $attnames);

if($r)

$entries = ldap_get_entries($ds, $r);

//Snurra igenom alla träffar och välj vad som ska visas
for ($i=0; $i<$entries[”count”]; $i++) {
foreach($attnames as $attname){
if(is_array($entries[$i][$attname])){
$lastcount = $entries[$i][$attname][”count”] – 1;
for($j=0;$j<$entries[$i][$attname][”count”];$j++){

//Om det är en skolkod så vidar jag inte det. Jag visar inte heller pidcategory som kommer senare
if (($attname == ’pidschoolunitcode’) || ($attname == ’pidcategory’)) {
// Här visar vi inte något
}else{
// Skicka ut värdet
echo str_replace(”,”,””,$entries[$i][$attname][$j]);
}

//Om det är ett attribut som är en kategori så vill Inläsningstjänst ha andra namn. Stu blir lika med Student. Emp blir lika med Teacher
if ($attname == ’pidcategory’) {
if ($entries[$i][$attname][$j] == ’Stu’) {
echo ”Student”;
}
if ($entries[$i][$attname][$j] == ’Emp’) {
echo ”Teacher”;
}
}

//Här tar jag skolkoderna och skickar ut namnen istället
if ($attname == ’pidschoolunitcode’) {
if ($entries[$i][$attname][$j] == ’74064638’) {
echo ”Gustav Adolfsskolan”;
}
if ($entries[$i][$attname][$j] == ’63452058’) {
echo ”Hemsjö Kyrkskola”;
}
if ($entries[$i][$attname][$j] == ’49115714’) {
echo ”Ingaredsskolan”;
}
if ($entries[$i][$attname][$j] == ’78832157’) {
echo ”Kullingsbergsskolan”;
}
if ($entries[$i][$attname][$j] == ’34338735’) {
echo ”Lendahlsskolan”;
}
if ($entries[$i][$attname][$j] == ’28639614’) {
echo ”Långareds skola”;
}
if ($entries[$i][$attname][$j] == ’78273632’) {
echo ”Magra skola”;
}
if ($entries[$i][$attname][$j] == ’46546067’) {
echo ”Nolbyskolan”;
}
if ($entries[$i][$attname][$j] == ’84581048’) {
echo ”Nolhagaskolan”;
}
if ($entries[$i][$attname][$j] == ’92770341’) {
echo ”Noltorpsskolan”;
}
if ($entries[$i][$attname][$j] == ’76908037’) {
echo ”Sollebrunns skola”;
}
if ($entries[$i][$attname][$j] == ’38957274’) {
echo ”Stadsskogenskolan”;
}
if ($entries[$i][$attname][$j] == ’90924483’) {
echo ”Stora Mellby skola”;
}
if ($entries[$i][$attname][$j] == ’71895385’) {
echo ”Västra Bodarna skola”;
}
if ($entries[$i][$attname][$j] == ’57136802’) {
echo ”Ängaboskolan”;
}
if ($entries[$i][$attname][$j] == ’70153094’) {
echo ”Ödenäs skola”;
}
if ($entries[$i][$attname][$j] == ’63399058’) {
echo ”Östlyckeskolan”;
}
if ($entries[$i][$attname][$j] == ’75101306’) {
echo ”Nolhagaskolan”;
}
if ($entries[$i][$attname][$j] == ’70304200’) {
echo ”Noltorpskolan”;
}
if ($entries[$i][$attname][$j] == ’70079232’) {
echo ”Ängaboskolan”;
}
if ($entries[$i][$attname][$j] == ’63399058’) {
echo ”Östlyckeskolan”;
}
if ($entries[$i][$attname][$j] == ’75101306’) {
echo ”Nolhagaskolan”;
}
if ($entries[$i][$attname][$j] == ’70304200’) {
echo ”Noltorpskolan”;
}
if ($entries[$i][$attname][$j] == ’70079232’) {
echo ”Ängaboskolan”;
}
if ($entries[$i][$attname][$j] == ’63399058’) {
echo ”Östlyckeskolan”;
}

}
}
} else {
echo str_replace(”,”,””,$entries[$i][$attname]).””;
}
// En avgränsare efter varje värde då filen ska vara semikoloseparerad
echo ”;”;
}
// Ny rad efter en post
echo ”</br>”;
}
ldap_close($ds);

} else {
echo ”Kan inte koppla mot LDAP-servern”;
}
?>

Sluta göra om – gör nytt

Jag skulle så gärna se att fler tittade på detta exempel: https://standards.usa.gov/

Tänk om svenska kommuner och myndigheter kunde standardisera en sådan sak som e-tjänster. Att slippa göra saker igen som vi redan har en bra standard på. Både Helsingborg och Göteborg har gjort bra styleguides, men jag efterlyser den nationella.

Bättre att vi betalar pengar ihop till något som funkar riktigt riktigt bra och underhålls. Sedan anropar vi den och jag som medborgare känner igen mig vilken e-tjänst jag än går till. Just när det gäller e-tjänster tycker jag själv att funktion går före särprofilering.

Helsingborg: http://styleguide.helsingborg.se/accessibility
Göteborg https://goteborg.se/wps/portal/component-framework/

En instruktionsfilm för Zoopet

Det är väl inte alltid så kul att höra sin egen röst, men det är väldigt nyttigt. Förutom att det är en instruktionsfilm till en modul jag själv programmerat så är det just övning i att prata framför kameran.

Ta en titt på filmen och lägg framförallt märke till modulen jag byggt. Den gör att medlemmar kan lägga in sina egna akvarium. Den är kopplad till artregistret på ett smart sätt som ni ser framåt slutet på filmen.

Upphovsrätt © 2021 Christian Alfredsson

Tema av Anders NorenUpp ↑