16 April, 2016

Ruby server: the long and winding road

Not elegant, mostly try and error. Eventually everything seems to work, here's the history:

 234  sudo apt-get install build-essential
  235  rails server
  236  rails
  237  ls
  238  cd rails
  239  bin/rails server
  240  ls
  241  cd blog
  242  bin/rails server
  243  gem install bundler
  244  sudo gem install bundler
  245  bin/rails server
  246  bundle install server
  247  bundle install
  248  gem install json
  249  sudo gem install json
  250  rails server
  251  bundle install
  252  sudo apt-get install libgmp-dev
  253  sudo apt-get install libgmp-dev
  254  rails server
  255  bundle install
  256  sudo apt-get install ruby-full build-essential
  257  sudo apt-get install apache2 apache2-mpm-prefork apache2-prefork-dev
  258  sudo apt-get install rubygems
  259  rails -v
  260  sudo apt-get install rails
  261  sudo gem install rails
  262  rails -v
  263  gem update --system
  264  \curl -L https://get.rvm.io | bash -s stable --rails
  265  rails -v
  266  bundle install
  267  rails -v
  268  rails server

03 April, 2016

Lyx and Bibtex: convert .bib file to 8859-1


  1. Install KbibTex.
  2. Open your .bib file.
  3. Save as  ....bib - and remember so set the fileformat to 8859-1.


26 March, 2016

Processing - cross platform

Processing can export to Windows and Linux. For a Mac you need a developer license. Alternative: publish in Python. In the wiki it's said that you need to run OS X in order to export to that OS.

02 March, 2016

WordPress Xampp on Mac - how to install themes or plugins

On a Mac WordPress via Xampp you cannot install themes or plugins because of the settings. In a terminal do like this:

# sudo -i
# (write your password)
# cd /Applications/Xampp/xamppfiles

Now find out where your WordPress files are and cd to the relevant folder, then do something like this:

# chmod -R 777 wordpress/
# chown daemon:daemon wordpress/

Now ... this is a quick and very, very dirty fix. In a production environment the folders should have chmod 755 and the files chmod 644.

24 February, 2016

Linux Evening

Reconstructed my 8 year old server, now it serves as file server. Removed Cinnamon and the slowwww wifi manager. Installed wicd, KDE and lightdm. Added WordPress for tomorrows class.

Linux Antix Missing Icons

Solution: install some icon themes via Synaptic. QED.

15 February, 2016

MySQL World Database

I had some issues with international characters. Solution: install directly from the zip file.

If you try to install the tables at one.com:

  1. Unzip the file.
  2. Edit these lines (from line 18) like this:
-- DROP SCHEMA IF EXISTS world;
-- CREATE SCHEMA world;
-- USE world;
-- SET AUTOCOMMIT=0;

06 February, 2016

Texturepacker - no thanx

Tried the texturepacker for Linux. The result was a total waste of time. Here is the result:


The pictures did were turned up and down, and most of them were covered with an embarassing ad.

Verdict: apt-get remove.

Adobe Flash - or the Image Magick is much better, see my article on Multimusen.dk.

02 February, 2016

Fooling around with Modernizr and Foundation

Modernizr is an easy to use framework consisting of tests like "can my browser _____ "? You'll get a true or false.

Foundation is very much like Bootstrap. However the code seems less bloated. Foundation makes heavy use of Sass. And that's nice.

There are several tutorials e.g. on Youtube, where developers are building Foundation solutions for WordPress.


28 January, 2016

Pandoc - very old version in Linux Mint repo

Tried to follow this guide. Downloaded the Debian packet and installed it from the download page:

 Now pandoc and pandoc-citeproc seems to work.

27 January, 2016

Pandoc error

Looking for at solution for this pandoc error message:

pandoc-citeproc:
Error at "source" (line 1, column 94):
unexpected end of input
expecting new-line
http://student.bus.olemiss.edu/files/conlon/others/others/semantic%20web%20papers/roadmap.pdf


Python and MySQL on Linux Mint

Got an error because the MySQLdb package wasn't found. Solution:

# apt-cache search MySQLdb

python-mysqldb - Pythongrænseflade for MySQL
python-mysqldb-dbg - Pythonbrugerflade til MySQL (fejlsøgningsudvidelse)
bibus - Bibliografisk database
mysql-utilities - collection of scripts for managing MySQL servers
petj-HP-EliteBook-850-G1 ~ # apt-get install python-mysqldb

Then

# sudo apt-get install python-mysqldb

Then everything worked like a charm. 

24 January, 2016

Tomboy Notes

My old laptop literaly crashed. Litterally. During the reconstruction efforts I found out, that one of my primary concerns was to get the Tomboy Notes.

The files are stored in:

~/.local/share/tomboy

Then:

  • #killall tomboy
  • copy the files from the backup
  • paste the files to ~/.local/share/tomboy
  • start tomboy
That's it.

13 January, 2016

How to make an icon for a Python App

The files and the icon.


So now I have some Python GUIs for my Philips HUE, but I'd like to have a nice Desktop Icon, like any other Linux App. How can I do this?

In Ubuntu - and probably most Linux systems the paths to executable programs are stored in hidden .desktop files.

First create a file and save it as .myApp.desktop

The content of the file could look like this:


[Desktop Entry]
Name=Test
Exec=/home/per/Dokumenter/bin/bin/hue/python/tkinterNoter/tkEntry.py
Icon=/home/per/Dokumenter/bin/bin/hue/python/tkinterNoter/multimusen.png
Terminal=false
Type=Application
GenericName="Python tkEntry Exp"

There are more possible setting, see here.

The next step is to make your file executable, write these commands in the terminal window:

# chmod a+x .myApp.desktop
# chmod a+x tkEntry.py
# cp .*desktop ~/.local/share/applications/

In order to give all system user access to your program, you can:

# cp .*desktop /usr/share/applications

Now you'll see an icon with the chosen picture in the folder. You can drag this icon to e.g. the menu. And now you can run your GUI as you would run any program.

The line Terminal can be true or false. If it's true the program will launch in a terminal window.

11 January, 2016

Json Parsing in Python (Philips Hue Sample)

Import libraries:

import requests
import json
from urllib import urlopen

Here's a class that will print out the names of the scenes:

    ''' AUTORUN METHOD '''
    def __init__(self,master):

        self.apiUrl = "http://192.168.0.11/api"
        self.user = "xxxxxxxxxxxxxxxxxxxxxxxxx"

        self.a = urlopen(self.apiUrl 
            + "/" 
            + self.user 
            + "/" 
            + "scenes").read()
        self.a = json.loads(self.a)
 
        for thing in self.a:
            self.theName = self.a.get( thing ).get('name')
            print self.theName

The function will print out a list of scene names.

27 December, 2015

View a Json Object in the console

At least in Google Chrome this works like a charm:

var xhr = new XMLHttpRequest();
responseObject = JSON.parse(xhr.responseText);
console.log(responseObject);
var openFile = "weather.json"; // sample file

xhr.open('GET',openFile,true);

xhr.send(null);

The Json Object in a Chrome Console

26 December, 2015

Intrduction to the Philips HUE API

The first impressions using the app from Philips was nice. But even better: there are tons of apps out there. Even better: you can hack your own interface using the fine API from Philips. Here are some starting points:

Json
You can program Philips Hue via the Json based API and methods like GET, POST and PUT. The bridge has a nice API interface on:

http://192.168.0.xyz/api/YOUR-NUMBER-HERE/lights/1/state

Here you'll get a testing GUI to use when experimenting with the API methods.

Experiment with JavaScript and Json

Copypasted a json sample from W3 Schools, and console.logged the result. Surprisingly the console got the json object.

console.log result
From this I should be able to figure out how to write the content to the screen.


Python: Idle session




Python 2.7.9 (default, Apr  2 2015, 15:33:21)
[GCC 4.9.2] on linux2

>>> import requests
>>> import json

>>> taend = json.dumps({"on":False})

>>> r = requests.put("http://192.168.0.xxx/api/your-secret-code/groups/0/action", data=taend)

All lamps went out out, so a success it was.

Bash Experiment

curl -X PUT -d "{\"on\":true}" http://192.168.0.xxx/api/your-secret-code/groups/0/action

Since it's possible to use curl in PHP the same thing must be possible in PHP.


25 December, 2015

Philips HUE

So how do you discover the IP of your device. On linux the answer is arp-scan (if it's not on your system apt-get install it):

Using arp-scan --interface=wlan0 I got:

192.168.*.** *************** (Unknown)
192.168.*.11 00:17:88:20:e8:6e Philips Lighting BV
192.168.*.** *************** (Unknown)

So now I know my IP.

17 December, 2015

The Librarian

Visited the librarian. She recommended these urls:
Apart:

Lo and Behold! My BibTex compiler works ...

A (oh horror!) .docx file in Libre Office

In order to make a literature review I need to compile a MySQL table in the BibTex format.

Now I've got a file, that looks pretty much like a BibTex formatted file. It's compiled from a MySQL database and the output is formatted by PHP.


In the php code this loop will format the output:

while($row = $result->fetch_assoc()){
    $books[] = "\n@". $row['Type'] 
     ."{" . strtoupper( substr($row['Author'], 0,4)) 
     . "_" . $row['Year']
     . ",\n Author={" . $row['Author'] . "},\n"
     . "Title={" . $row['Title'] . "},\n"
     . "Publisher={" . $row['Where'] . "},\n"
     . "Year=" . $row['Year'] . "}\n";
   }

I made a simple markdown file and compiled it with pandoc. The result was a .docx file.

Here is the output from the database formatted via PHP:

@Book{ARIS_1958,
 Author={Aristoteles},
Title={Poetik},
Publisher={Hans Reitzels Forlag},
Year=1958}

etc. etc. etc. etc. etc.

The markdown contains a reference to a book in the BibTex file:

[@ARIS_1958]

Finally the markdown is compiled via pandoc thus:

# pandoc --bibliography=libri.bib test.md -o test.docx

The image above is a screendump from the docx-file in Libre Office. I only refered to Aristoteles, and that's the only work in the list of sources.

Ergo: Q.E.D.

That is: this is just a toolbox. The next step is literature research for the WordPress and Open Source CMS Research Project @ Business Academy Aarhus. And perhaps: come up with title with > x-factor.

16 December, 2015

WordPress and open source CMS research

I have to make a litterature review about open source CMS with focus on WordPress.

Yesterday and today I made a BibTex compiler for WordPress. I have to make a litterature review. By now I'm inspired by Umberto Eco's cardboard file cards. However, nowadays I think that a MySQL database is better suited for the storage.

Here is the system:

  • https://github.com/asathoor/libri
Today the final pieces came together. The database has all entries from my bibtex file. Via PHP I can convert the MySQL data to a bibtex format. Here's the trick:

while($row = $result->fetch_assoc()){     print "\n@Book{" . strtoupper( substr($row['Author'], 0,4)) . "_" . $row['Year']     . ",\n Author={" . $row['Author'] . "},\n"     . "Title={" . $row['Title'] . "},\n"     . "Publisher={" . $row['Where'] . "},\n"     . "Year=" . $row['Year'] . "}\n";   }

Some formatting may be done via SQL, here's a sample from my Github repo:

SELECT '@Book{' as 'Book',

concat(left(`Author`,3),`Year`,',') as 'slug',
concat('Author={{' , `Author`, '}},') as 'Author',
concat('Title={{' ,`Title`, '}},') as 'Title',
concat('Year=',`Year`,'}')

FROM `libri`

So the environment for developing the project is almost there. 

06 December, 2015

Brute force attacks on WordPress


It seems that sinister powers are lurking around one of my webpages. There are 501351 attempts to log in - in just one month. I guess the picture is quite normal for attacks on WordPress sites. So don't have a user called Admin - and make sure, that your password is hard to crack.