SmartDuck

Linux en andere hobbies...

Geany IDE kleuren schema

jan 182017

Voor het ontwikkelen van web en Python projecten gebruik ik de Geany IDE. Wanneer het desktop thema donker is kunt u het thema in Geany aanpassen via het menu Beeld -> Kleurenschema wijzigen... zodat Geany beter matched met de rest van de programma's.

Ik heb een eigen schema gemaakt. Deze past o.a. goed bij het Xfce-dusk theme wanneer u XFCE als desktop manager gebruikt.
Bij Linux plaatst u het schema bestand in de map van de gebruiker ~/.config/geany/colorschemes/ . Bij herstarten van Geany ziet u het theme verschijnen in het kleuren schema dialoogvenster via  Beeld -> Kleurenschema wijzigen...

Bestand: SmartDuck scheme

Voorbeeld schema:

undefined

 

 

 

PyGame installeren in Antergos (Arch)

jan 152017

Ik ben momenteel groot fan van Arch Linux. Ik ben een luie Linux gebruiker en heb niet zo'n zin om voor mijn laptop een Arch systeem van scratch op te bouwen. Vandaar dat ik Antergos gebruikt, Arch met een eenvoudige installer. De laatste tijd heb ik me helemaal gevonden in de programmeertaal Python. Intussen is een deel van MijnTuinkas applicatie herschreven in Python. Ik ben ook bezig met te kijken of ik een simpel spelletje in elkaar kan zetten met PyGame, een Python game bibliotheek.

Om PyGame te installeren in Antergos moet u de volgende stappen doen:

- Open een terminal,

- Type sudo pacman -S python , wanneer u nog geen Python heeft geinstalleerd,

- Type sudo pacman -S portmidi , om geluid te kunnen gebruiken in PyGame,

- Sluit de terminal,

- In Antergos zit een package manager, open deze, (te vinden in het menu  Toepassingen -> Systeem -> Software installeren/verwijderen of rechts klikken op het update icoon in de taakbalk),

- Kies het tabblad AUR en zoek daar op pygame,

- Installeer python-pygame,

- Volg de instructies,

- Bij PKGBUILD bewerken kies N (nee),

- Bij installeren J (hierbij moet u uw wachtwoord opgeven).

Python met PyGame is nu geinstalleerd.

Lighttpd in Arch Linux

nov 152016

Deze instructie laat zien hoe een webserver met PHP en SQLite op Arch Linux te installeren en werkend te krijgen. Voor een productie omgeving is deze basisconfiguratie niet geschikt, wel voor testdoeleinden of ontwikkeling van webapplicaties.

 

Pakketten installeren

Open een terminal en type de volgende commando's om
de lighttpd webserver met PHP en SQLite te installeren:

sudo pacman -S lighttpd
sudo pacman -S php
sudo pacman -S php-gd
sudo pacman -S php-sqlite
sudo pacman -S php-cgi
sudo pacman -S sqlite

Start de service met het volgende commando:

sudo systemctl start lighttpd

Kijk in de browser of de service werkt.
In de adresbalk typt u dan http://localhost.

 

Configuratie voor PHP

Maak een backup van de lighttpd.config in de map /etc/lighttpd/

sudo cp /etc/lighttpd/lighttpd.config /etc/lighttpd/lighttpd.config.backup

Open lighttpd.config en vervang alle inhoud met onderstaande:
(ik gebruik vaak nano als editor of geany)

sudo nano /etc/lighttpd/lighttpd.config

CTRL-O voor opslaan en CTRL-X voor afsluiten.

# Dit is een minimale configuratie om de meest gangbare scripttalen te ondersteunen.
# Kijk voor documentatie in /usr/share/doc/lighttpd
# en op http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions
server.port = 80
server.username = "http"
server.groupname = "http"
server.document-root = "/srv/http"
server.errorlog = "/var/log/lighttpd/error.log"
dir-listing.activate = "enable"
index-file.names = ( "index.html" )
mimetype.assign = (
".html" => "text/html",
".txt" => "text/plain",
".css" => "text/css",
".js" => "application/x-javascript",
".jpg" => "image/jpeg",
".jpeg" => "image/jpeg",
".gif" => "image/gif",
".png" => "image/png",
"" => "application/octet-stream"
)

server.modules = (
"mod_access",
"mod_accesslog",
"mod_cgi",
)

accesslog.filename = "/var/log/lighttpd/access.log"

cgi.assign = ( ".pl" => "/usr/bin/perl",
".cgi" => "/usr/bin/perl",
".rb" => "/usr/bin/ruby",
".erb" => "/usr/bin/eruby",
".py" => "/usr/bin/python",
".php" => "/usr/bin/php-cgi" )

index-file.names += ( "index.pl", "default.pl",
"index.rb", "default.rb",
"index.erb", "default.erb",
"index.py", "default.py",
"index.php", "default.php" )

Zoals u ziet in de configuratie werken andere scripting talen ook direct mits geinstalleerd via Lighttpd.

Herstart lighttpd met:

sudo systemctl restart lighttpd

Plaats in de web server root (/srv/http/) het volgende bestand index.php met als inhoud:

sudo nano /srv/http/index.php

--
<?php
echo 'Hello world!';
?>
--

Ga naar de browser en ververs de http://localhost pagina en kijk of Hello world! verschijnt.
Als dit zo is werkt PHP scripting.

 

PHP ini aanpassen

Open het bestand /etc/php/php.ini

sudo nano /etc/php/php.ini

Zoek de sectie Dynamic extensions op.
Pas de volgende regels aan om SQLite en GD aan te zetten.

extension=gd.so
extension=pdo_sqlite.so
extension=sqlite3.so

Maak vervolgens in de map /srv/http het bestand info.php aan:

sudo nano /srv/http/info.php
--
<?php
echo phpinfo();
?>
--

Ga naar de browser en vul in de adresbalk het volgende in http://localhost/info.php
Druk op de enter toets.

Een hele lijst met PHP configuratie gegevens verschijnt. Kijk in deze lijst of u GD, PDO en SQLite kunt vinden.
Komen deze voor in de lijst dan zijn alle modules goed geinstalleerd en geconfigureerd.


Juiste user configuratie


Standaard staan de bestanden in de map /srv/http met root rechten. Dit is niet verstandig. Mocht het test/ontwikkel systeem toch worden gehacked dan heeft de hacker direct root rechten.
Door met:

sudo chown -R http:http *

de bestanden onder de http user te brengen vangt u dit af.

 

Trouble shooting

Het kan zijn dat GD ondanks een goede configuratie niet lijkt te werken. Controleer dan of een van de libraries freetype2, libpng of libjpeg zijn geinstalleerd. U kunt deze met pacman (her)installeren:

sudo pacman -S libjpeg
sudo pacman -S libpng
sudo pacman -S freetype2

 

C# ontwikkelaar verrast door Django

okt 152016

Als webontwikkelaar ben ik ooit begonnen te programmeren in PHP3. Na een aantal jaren in PHP te hebben geprogrammeerd heb ik d.m.v. van een baanwissel kennis gemaakt met C#. Tot nu is dit de programmertaal waar ik het meeste kennis van heb. Voor mijn hobby projecten gebruik ik nog steeds PHP. PHP hosting is goedkoop en ontwikkelen op een laptop met Linux Lite gaat wat makkelijker met PHP dan met C#. PHP is veelzijdiger dan veel ontwikkelaars denken, het is ook prima geschikt als scripting taal voor allerlei jobs op een server (php-cli). Het is ok mogelijk desktop applicaties te schrijven met PHP met bibliotheken zoals PHP-GTK of wxPHP.

Afgelopen tijd ben ik gaan kijken naar andere talen. Zo heb ik (Object)Pascal herontdekt en de Lazarus IDE waarmee je wel echt cross-platform applicates kunt ontwikkelen o.a. voor Apple, Windows en GNU/Linux. Object Pascal is net als C# een statische taal waarbij u variabele moet declareren voordat u er een waarde aan toe kunt kennen. Ik snap de theorie er achter, als C# ontwikkelaar doe ik niets anders. Echter de laatste tijd geef ik de voorkeur voor dynamische talen. Dynamische talen zorgen er voor dat ik bezig ben met een idee te realiseren en niet met overhead die veel statische talen met zich meebrengen. Met PHP ben ik dit gewend, echter heb ik nog geen goed framework gezien voor PHP wat ontwikkeling van een site eenvoudiger maakt.

Ik ben dus gaan kijken naar Python en Ruby en heb hier wat online cursussen in gevolgd om een idee te krijgen wat de mogelijkheden zijn. Ik heb met zowel Ruby on Rails een test applicatie gebouwd als met Django, de Python tegenhanger. Beide frameworks zijn gebaseerd op het MVC princiepe zoals ik die gewend ben met C#. Wat me blij maakte is Django, dit framework neemt echt werk uit handen. Het is minder strikt en doet ontzettend veel werk voor me.

Ruby on Rails en C# .NET MVC maken de directory structuur voor u aan. In Visual Studio kunt u een standaard MVC site kiezen aanmaken die een admin login en about pagina voor u aanmaakt. Bij Rails moet u het meeste werk zelf doen. Wat het databases betreft wordt er veel automatisch voor u gedaan. Echter met Django wordt ook het standaard CRUD werk (back-end cms) uit handen genomen. Met een paar eenvoudige commando's maakt u een user/groups admin sectie aan. De models binnen het project worden automatisch herkent en er worden automatisch pagina's in de admin sectie aangemaakt om de data voor de models te beheren. Met het dynamische karakter en eenvoudige syntax van Python en Django wordt het ontwikkelen van websites een stuk sneller.

Dit is ook de reden waarom ik mij me nu voorlopig naast C# en MVC focus op Django.

Firefox alternatieven

sep 272016

Firefox is een fijne browser met vele plugins die het surfen op het web fijner maken. Met o.a. de FireBug plugin maakt het ook een van de beste browsers voor webdevelopers. Waarom dan kijken naar alternatieven? De laatste jaren zijn er veel fratsen in Firefox gebouwd waardoor de browser een langzamer opstart en web pagina's laad. Kwa privacy is er ook wat aan te merken op de laatste versies. Veel mensen weten niet dat Firefox op de achtergrond gegevens naar andere sites stuurt. Type maar eens about:config in de adresbalk waar u normaal gesproken een link naar een website in vult. U krijgt dan eerst een waarschuwing te zien dat u voorzichtig moet zijn met eventuele wijzigingen die u in de config kunt maken. Wanneer u door de lijst met instellingen scrollt ziet u bij de safebrowsing regels vele links die naar Google gaan. Dus met andere woorden wanneer dit aan staat (enabled) gaat elke pagina die u bezoekt ook naar Google ter controle of het geen "foute" website is. Ik vindt deze methode zeer dubieus, ik zie het meer als een verkapt trackingsysteem.

Midori

Dit is een prima alternatief voor de doorsnee gebruiker. Het is een hele snelle browser. Ik heb het niet gemeten maar deze browser start sneller op en de pagina's laden een stuk sneller. De browser heeft ook plugins om advertenties te blocken net als Firefox. Echter heeft Mirdori niet de plugins die het leven van een webdeveloper makelijker maken. Een nadeel van deze browser is dat een enkele website niet goed werkt. Met name met HTML5 video plugins met de Linux versie geeft het nog wel eens wat problemen.

undefined

Midori voor zowel verschillende Linux distributies en Windows kunt u downloaden van http://midori-browser.org/download/choose/


Palemoon

Dit is een prima browser als alternatief. Palemoon heeft dezelfde code basis als de oude Firefox van een paar jaar geleden.
Dit wil niet zeggen dat de techniek verouderd is. De ontwikkelaar houdt de browser modern en slank onder de motorkap waardoor Palemoon vlotter werkt dan Firefox en een stukje veiliger en minder privacy gevoelig. Palemoon ondersteunt voor een groot deel dezelfde plugins als Firefox. Ja ook FireBug voor webdevelopers werkt hier prima.

undefined

Palemoon kunt u downloaden van http://www.palemoon.org/
De windows dowload staat direct op de eerste pagina vermeld.
Alternatieve downloads vindt u in het download menu.
Voor Linux zijn er geen distributie afhankelijke packages beschikbaar.
Palemoon heeft zijn eigen installer.

 

Tor Browser

Een prima alternatief. Deze browser is gebaseerd op de zelfde codebase als Firefox. Hiermee bent u redelijk annoniem op het web. Een nadeel is omdat het internetverkeer via nodes (een omweg) gaat het allemaal wat langzamer gaat. De browser is dan ook niet zo geschikt om films of muziek te streamen of grote bestanden te gaan downloaden.

undefined

Tor website: https://www.torproject.org/projects/torbrowser.html.en

 

Internet Explorer / Edge / Chrome

Ik beschouw deze als onveilig en een inbreuk op uw privacy. Dus geen alternatief.

HornReflex 1.0

aug 302016

Het tooltje om een HornReflex poort mee te berekenen heeft een nieuwe look gekregen. De stijl is nu aangepast in lijn met de andere applicaties die ik heb geschreven.

Deze applicatie is geschreven in Object Pascal in de Lazarus IDE. Het project is open source en dus vrij beschikbaar onder de Apache Licentie 2.0. Versie 1.0 is nu via GitHub al te downloaden https://github.com/SmartDuck/HornReflex/tree/1.0

Een debian package en windows installer zijn nog in de maak.

undefined

Atom

Licentie: Creative Commons Attribution-ShareAlike 4.0 International License.