Search This Blog

Tuesday, December 3, 2013

Arquillian WebSite Ruby HAML use textile filter plugin ERROR

I forked the source code for website from arquillian - code.
It uses several technologies under the hood - starting from Ruby, Bootstrap-sass, HAML and end awestruct.

HAML can interpret textile fragments. Recently, however, the textile and maruku plugin filters have been moved to another gem - haml-contrib.
(news)

After installing ruby 1.9.3 and haml with haml-contrib I received the following error when interpreting *.haml files with the ":textile" fragment:

> haml test.html.haml
Haml error on line 261: To use the "textile" filter, please install the haml-contrib gem.
Use --trace for backtrace.

I tested the application on Ubuntu 12.10. The only way I got it to work is when I compiled yaml, ruby and rubygems from source. The following tutorial from CentOS should be of help:



#preparing packages
$ sudo yum groupinstall 'Development Tools'
$ sudo yum install -y httpd-devel openssl-devel zlib-devel gcc gcc-c++ curl-devel expat-devel gettext-devel patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel make bzip2 zlib1g mysql-server
#compaling libyaml
$ wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz
$ tar xzvf yaml-0.1.4.tar.gz
$ cd yaml-0.1.4
$ ./configure --prefix=/usr/local
$ make
$ sudo make install
#compiling ruby 1.9.3
$ wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz
$ tar xvzf ruby-1.9.3-p194.tar.gz
$ cd ruby-1.9.3-p194
$ ./configure
$ make
$ sudo make install
#rubygems
$ wget http://rubyforge.org/frs/download.php/76073/rubygems-1.8.24.tgz
OR http://production.cf.rubygems.org/rubygems/rubygems-2.1.7.zip
$ tar xvzf rubygems-1.8.24.tgz
$ cd rubygems-1.8.24
$ sudo /usr/local/bin/ruby setup.rb

sudo gem install bundler

Go to your arquillian directory and:
sudo bundle install


Simulate INTERMEC EA15 barcode scanner via UDP packages

The EA15 intermec barcode scanner sends barcodes as UDP packages. To simulate its behaviour without actually owning the device you can send appropriate packages to the device.

PORT: 4080
barcode prefix: 0000

So to send barcode: 5900116011295
You actully need to send: 00005900116011295
which in HEX is: 30 30 30 30 35 39 30 30 31 31 36 30 31 31 32 39 35

On Windows there is Packet Sender.



On Linux you can easily send udp packages from terminal to simulate barcode scanning:

sudo sendip -p ipv4 -is 10.255.255.14 -p udp -us 5070 -ud 4080 -d "0x3030303035393030313136303131323935" -v 10.255.255.125

where 30 30 30 30 35 39 30 30 31 31 36 30 31 31 32 39 35
is the HEX: 00005900116011295
-is  output IP address
-us  output port number
-v destination ip address
-ud destination port address

to send a simple string do:
sudo sendip -p ipv4 -is 10.255.255.14 -p udp -us 5070 -ud 4080 -d "Hello this is a string" -v 10.255.255.125

The same result can be achieved with the socat command on linux:

echo "00005900116011295" | socat - udp-datagram:10.255.255.125:4080

The scanner looks like this:


Friday, November 15, 2013

Android/IntelliJ - ADB display only debugging lines from logcat that DO NOT contain a phrase

Does not contain regexp

^((?!your_phrase).)*$


In the Android tab, go to: "Logcat" and create a new filter.
enter the above string in the
"by Log Message (regex):"
 field.



Android Java - Convert day year month hour minute second to miliseconds since epoch / convert to java.util.Date

public Date getDate()
{
    final Calendar cal = Calendar.getInstance();
    cal.set(2013, 12 - 1, 7, 17, 33, 01);
    long secondsSinceEpoch = cal.getTimeInMillis();
    Date date = new Date();
    date.setTime(secondsSinceEpoch);
    return date;
}

Saturday, October 19, 2013

Ubuntu 12.04 - create a simple daemon (service) for your application

Creating a daemon in Linux is as simple as creating a BASH/SH script in /etc/init.d. BASH is NOT part of this short tutorial so I won't go into the details of the script itself.

To create a daemon create a script in /etc/init.d. To simplify the creation you can copy the skeleton script in /etc/init.d/skeleton. Your script need to handle the following daemon commands:
start
stop
restart/reload
force-reload
status

cp /etc/init.d/skeleton /etc/init.d/daemonName
sudo chmod 775 /etc/init.d/daemonName

To enable the daemon to start at boot:
update-rc.d daemonName defaults 97 03

http://manpages.ubuntu.com/manpages/hardy/man8/update-rc.d.8.html


To disable the daemon from starting at boot:

update-rc.d -f daemonName remove

Tuesday, October 15, 2013

Git - tips for console users

Get the tree-like view of commits in terminal

git log --graph --oneline --all

Get current branch name

git branch

Pull and rebase local changes

git pull --rebase



Revert all local changes in a GIT managed project

git reset --hard HEAD

or

git checkout .
git reset
git revert ...

and

git clean -df & git checkout -- .
(and press enter)



Check whether there are any uncommited branches

git log --branches --not --remotes

Extract three topmost commits from the current branch 

git format-patch -3


Check if there are any conflicts before applying the patch

git apply --check patch_name.patch

Apply a patch file to the local work-space

git apply patch_name.patch




Archlinux setting up VPN - couldn't open the /dev/ppp device: No such device or address

While configuring VPN on archlinux I followed the guide on:
https://wiki.archlinux.org/index.php/PPTP_VPN_client_setup_with_pptpclient


archlinux couldn't open the /dev/ppp device: No such device or address


SOLUTION:
add a new file:

nano /etc/modprobe.d/modules.conf

with the line:
alias char-major-108 ppp_generic