31 May

Sinatra və Ruby.

Ruby on Rail möhtəşəm bir Web Frameworkdır. O Ruby programlaşdırma dilinin güclü və effektiv tərəflərini isitfade edib gısa bir zamanda web saytları hazırlamag imkan verir. Lakin Ruby ilə ancag o yox, başka bir Frameworkda işləyir. Söhbət indi Sinatra gedəcək. Qısa, lakonik web applikeyşnları yaratmag üçün ideal bir instrumentdir. Desəm ki Ruby nin en güclü GUİ lərdən biridir – yanılmaram. Bəli, web GUİ. İndiki zaman web aplikeyşnlar digər GUİləri sıxışdırır. Programı yükləyib install eləmə vaxtları keçib gedəcək. Lazım olan şeylər isə ancag Brouser və İnternetdir. Bunlar isə indi hamıda var.

Sinatra barədə bir dəfə blogumda yazmışdım. Məsələn bu saytı əskərlikdən əvvəl yazmışdım – “Небольшое веб приложение”. Yada bu programı – Sinatra ilə brauserdən Arduinonu idarə etməsi.

Bir neçə gün Procam Hesablama Cədvəli ilə tanış oldum. Bu hesablama cədvəli Tibbdə istifadə olunur və bir neçə bədən faktorları cəmləyib İnfarktın gələcəkdə yaranması barədə məlumat verir. Bir neçə parametr daxildir, lakin hər dəfə onlarin hesablaması vaxt aparır. Ona görə gərara gəldim ki bir web program yazım bunu hesablasın. Sinatra bunun üçün əla yaraşır. Esas kod belə alındı – rb file : Read More

04 Oct

Java + Ruby = JRuby

Salam. Yəginki Java programlaşdırma dili ilə tanış olmusunuz, və ya hardasa eşitmisiniz, bəlkədə bir professional programçısınız. Ruby isə mənim ən sevdiyim programlaşdırma dillərdən biridir. Ola bilərki Ruby on Rails barədə bilirsiniz. JRuby isə Javanın və Rubynin mükəmməl bir mixtura – qarışıgıdır. Bəlkədə fikirləşərsiniz, axı mən əla Java/Ruby Programmistəm və mən Java/Rubydə istədiyi programmı sərbəst yaza bilirəm – mənə bunların odlu miksturası nəyə lazım? Amma əslində bu hər iki dilin, bütün programlaşdırma dillərdə oldugu kimi mənfi və müsbət cəhətləri var.(JRubynin özünündə – amma bir az sonra).
Deməli Javanın Ruby ilə müqaisədə dərinliyə getməyərək gözə çarpan mənfi cəhətləri bir gədər təzə başlayanlar üçün çətin sintaksisi, open source olmadıgı(söhbət java-sundan gedir, open-jdkdan yox) və sairədir. Rubynin isə Javakimi geniş yayılması, çoxlu kitabxanaların(javadaki kimi) olmaması və sairə. (Onların geniş müqayisəsi internetdə doludur). Amma JRuby bunların müsbət cəhətlərini bir yerə dolduran bir programlaşdırma dilidir. Və o mükəmməl Ruby sintaksisi ilə Java kitabxanaları istifadə etməyə getdikcə inkişafla cəld göstərir. Bu postdada Javanın və Rubynin birlikdə istifadə etdii JRuby dən bir misal gətirmək istərdim.(Misallar “The Pragmatic Bookshelf | Using JRuby” kitabdan götürülmüş və dəyişilmişdir).
Əvvəlcə bir Java classı yazag:

1
2
3
4
public class Regem{
private int birRegem = 0;
public Regem() {}
}

Onu jar fayla köçürdək(Əslində bizim rb faylda Java class faylı da istifadə etmək olar, lakin əsas kitabxanalar jaroldugu üçün elə jar ilə istifadə etməyi öyrənmək məqsədə uygundur) Read More

19 Aug

Nesta CMS ilə blog.

Tempus edax rerum. Bəli, vaxt şimşək kimi keçib gedir. Nəsə çatdirmag bu həyatda geyri mümkün olur. Axırıncı postdan sonra mən hətta Bakiya uçub geri qayitdim. Baki dəyişməyib, hətta gözəlləşib. Həmin dostlar, həmin məhlə.
Qeyri adi nə yazım – heçnə. Hamı işlə məşgul, mən isə yenədə geyri adi şeylər axtarıramki bloga yazım. Bəzən məndən soruşurlarki:

  • Axı sən bunu nəyə görə yazırsan.
  • Bilmirəm. Mənə maraqlıdır.

Amma çox az adam bilirki, bu cavabın arxasında mindənə fikir bir birinə dolaşıb. Ümumiyətlə nəsə yazanda mən elə bilki rahatlaşıram. Heç bilmirəm bunları oxuyan olur və yox. Ola bilər. Bir iki məni həyatda tanıyan dostlarım..
Fəlsəfə bu günə bəsdir. İnternetdə bir xəbər oxudum. De domeyni cəmi 5 avroya. Nə gəşəng. Fikrim məni oyatdı. Ruby de blog CMSı axtardım. Nesta CMS.
Ruby üçün free hosting – Redhatdan Openshift gəldi. Əla. İndi isə gəlin Ruby də yazılmış Sinatra da düzəldilmiş Blog CMSi guraşdırag. Bunula biz pulsuz HTML5 Blog Saytı yaradaq.
Əvvəlcə Nestanı lokal yükləyib guraşdıraq:

1
2
$ gem install nesta
$ gem install bundler

Lokal saytın şablonu yaradag: Read More

02 Jul

Parser ilə işləmək.

Crack – sadə Json və XML parseridir. Nümunədə Linux terminalda Hava haqqında məlumatı göstərməkdir. Məlumatı http://openweathermap.org/ saytından alırıg. Request – şəhərin adı, celsiy və ya kelvin, əlavə məlumatı hansı dildə təgdim olunmasını da seçmək olur.
Cavabda isə Hava haqqında məlumat: temperatur, küləkin sürəti, buludların olub olmaması və sairə məlumatı almag olur.
Düzdür bu sadə parserdi, və məsələn Nokogiri kimi güclü parserə çatmaz, lakin sadə proektlərdə işlətmək olur.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
require 'crack'    # Crack və net/http gemin əlavə olunması.
require 'net/http'

uri = URI('http://api.openweathermap.org/data/2.5/weather?q=Baki&mode=xml&units=metric&') # lazım olan məlumat
xml = Net::HTTP.get(uri) # openweather saytın apidən xml formatda məlumatın alınması
xml_pars = Crack::XML.parse(xml) # XML Parsingi

print "Location: " # Parsing olunan məlumatın göstərilməsi
puts xml_pars['current']['city']['name']
print  "Temperature Max in Celsius: "
puts xml_pars['current']['temperature']['max']
print "Temperature Min in Celsius: "
puts xml_pars['current']['temperature']['min']
print  "Weather: "
puts xml_pars['current']['weather']['value']

Və nəticə:

1
2
3
4
5
6
$> ruby hava.rb
 Location: Baki
 Temperature Max in Celsius: 25.6
 Temperature Min in Celsius: 23.0
 Weather: few clouds
$>
27 Mar

Arduino və Ruby.

Axırki məndə bir Arduino istifadiəçisi oldum. Arduino UNOnu ələ keçirdim. Ruby isə ən xoşladigim programlaşdırma dili oldugu üçün, çalışdım onları bir bir ilə tanış edim. Lakin İnternetdə onların birgə istifadəsi üçün çoxdan və cür-bəcür gemlər, programmlar yazılıb. Məsələn onlardan çoxusunu burda tapmag olar – ruby and arduino. Bunlardan arduino_firmata gemi mənə ən yaxın görsəndi. Ona görədə onu istifade etdim. Esas tələblərimiz:
* Ruby
* Arduino İDE
* arduino_firmata gem

Ruby 2 versiya təzə çixdıgını görə elə onu işlədək.

[biotin@lenovo][~/arduino]% ruby -v 
ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-linux]

Arduino İDEni arduino saytından pulsuz yükləmək olar.
Arduino_firmata gemi isə belə install edək:

gem install arduino_firmata

Read More

16 Sep

AZN Converter.

Давно не писал о коддинге, поэтому попытаюсь восполнить эту оплошность. НА данный момент задачей является написание программы на Ruby с графическим интерфейсом, которая умелабы соединиться с интернетом и брать некоторые коэффициэнты валют со страницы Международного банка ibar.az и подставляя их в значения давало бы возможность конвертровать в AZN.
Для графического интерфейса я остановился на Shoes, потому что он очень удобен. И как никто другой подходит для таких маленьких приложений.
Собвстенно приведу пример кода, а паралельно с ним в комментариях разьяснение к нему. Read More

15 Jul

Mysql и Ruby.

Пользуясь свободным выпавшим мне временем, решил углубить свои знания из Ruby. В следующем скрипте нет ничего особенно сложного, обычный скриптик создающий новую базу данных и добавляющих туда информацию. Короче, задача была такова: создать базу данных некоторых персон куда можно вводить имя, возраст, пол  и соответствующая должность на работе. Работаем избирательно через Mysql. Далее предпологается уже установлено в системе собвстенно Mysql сервер и  Ruby гем. Скриптик будет выглядеть следющим образом:

#Загружаем нужные гемы для работы

require 'rubygems'
require 'mysql'

puts "Welcome to Database Manager Programm!"

#Соединяемся с базой данных
 db = Mysql.connect('localhost','db_user_name','db_user_password','db_name')
 puts "Connected to the Mysql DB"

#Создаем таблицу
db.query("create table people(id integer primary key auto_increment,age integer,name varchar(30),job varchar(50),gender varchar(6))")
#Здесь не забываем добавить auto_increment
#Вводим данные в таблицу
puts "Insert the name, what you wont to add in to the DB:"
name = gets.chomp

puts "Insert the age of this person:"
age = gets.chomp

puts "Insert the gender of this person:"
gender = gets.chomp
puts "Insert the job of this person:"
job = gets.chomp

#Вводим данные
db.query("INSERT INTO people(name,age,job,gender) VALUES('#{name}','#{age}','#{job}','#{gender}')")

#Выводи то что получилось
 begin
  query=db.query('SELECT * FROM people')
  query.each_hash do |h|
  puts h.inspect
 end
end
#Закрываем соединение
db.close

Сохраняем в файле, например mysql.rb и выполняем:

1
$ ruby mysql.rb
28 May

Ruby & Python на Windows Mobile.

Когда весь мир уже переходит на Android, Iphone на WindowsMobile7 в конце-концов, я решил запихать на свой Windows Mobile 6.1 (хотя уже давно перепрошился на Windows Mobile 6.5, но 6.1 шустрее на моем кпк) Ruby и Python.
C Python 2.5 при установке не возникает никаких проблем. Достаточно скачать cab файл с sourceforge.net. Для установки Ruby в сети можно найти много мануалов, но почему то не все полностью работают или уже старье. Описал всю последовательность как Ruby заработал у меня.
Для начала скачиваем сам Ruby для Pda. Берем его отсюда – ruby-mswince. Скачиваем Ruby 1.8.6 (2007-03-13) – правда старенькое но главное работает. Сохранил на карте памяти, для экономии места. Далее скачиваем консоль. Берем его отсюда 4pda.ru, самое главное берем версию первую а не вторую, со вторым для настройки нужно копаться в регистре. Я пробовал, но потом кпк переставал включаться, какие то глюки =) . Устанавливаем. Если на данном этапе проверить – то руби у нас запуститься, но на дисплее высветиться результат всего какую то долю секунды(неправильный вывод), поэтому скачиваем правильный cmd.exe тут и заменяем его на тот который в папке /windows. Перезагружаем кпк. Запускаем из списка программ – cmd. Набираем в консоли: Read More

02 Apr

PostgreSQL и ROR 3.

После разработки нашего приложения на Ruby on Rails 3 , необходимо развернуть его на более мощном РСУБД. Одним из таких являеться PostgreSQL. Дополнительную информацию можно найти на официальном сайте и в википедии.
Собственно для перехода к дальнейшим действиям, подразуемваеться что у нас в системе установлен:
1) PostgreSQL.
2) Создан пользователь.
3) Создана таблица(Можно эксперементировать с стандартным пользователем – postgres)
Если же нет – то рекомендую обратиться на официальную страницу(для Debian – в Debian wiki), где подробнейшим образом описана установка PostgreSQL. Создание юзера и пустой базы данных можно найти в официальной документации.
И так, у нас уже установлен PostgreSQL, Ruby 1.9.2 , стандартный набор гемов, rvm, Ruby on Rails 3.
Чтоб связать Ruby и PostgreSQL, необходимо установить дополнительные пакеты,если они у нас еще не установлены: Read More

23 Mar

Распознавание прав владения файла на Ruby в Unix.

В классе File::stat есть пару забавных методов. Предположим нам необходимо знать права на какой либо файл в системе. Для этого создадим обьект и передадим ему файл, указав ссылку.

1
2
biotin@debian:~$ irb
irb(main):001:08> b=File.stat("/home/biotin/links")

В данном случае здесь показывается uid и gid и можно догадаться. Но методы интересные. Дальше проверяем на права:
1)Чтение:

1
2
irb(main):002:0> r=b.readable?
=> true

Read More