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

22 Dec

Wieder mit OpenSuse.

Nach meiner Tauschung des Notebooks habe ich jetz Ultrabook von Acer – Acer Aspire S3. Ja, sicher ein alter Model aber mit Core i5-3317 und sehr leicht, was für mich besonders wichtig ist. Endlich habe ich mich mit Broadcom Wlan Driver verabschiedet. OpenSuse 13.1 funktioniert sehr gut und ohne Problem mit Driver. Auch möchte ich sagen, das OpenSuse stheht bei mir auf SSD und mit Start “brennt” sich so schnell wie es möglich ist – ungefähr 3 sek für die Login und plus 3-4 Sekunden für KDE. Das ist super. Und unmöglich – 2 sek für die Ausschaltung. Jetz meine lieblingste Programmierungssprache – Ruby ist auch im OpenSuse, weil YAST vollständig auf Ruby umgeschrieben wurde.
PS: Jetz habe ich Windows 8 auch =)

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

03 Oct

Небольшое веб приложение на Sinatra.

Пользуясь оставшим временем, которое мне дал военкомат, решил рассмотреть фреймворк на Ruby – Sinatra. Доносились слухи, что он в настоящее время – во времена облачных вычислений займет достойное место представителя Ruby. А в некоторых источниках пишется, что это даже лучщий GUI каркас для приложений на Ruby, представляя всю его мощь. Поэтому задача была такая – написать веб приложение, которое будет расчитывать количество дней до прибития домой из армии. Алгоритм очень прост. Привожу его тут:

1
2
3
4
5
 t0=Time.now #задаем настоящее время
 t1=Time.local(2012,10,01)# точка рассчета
 sec0=t1-t0 #вычисляем разницу в секундах
 sec1=sec0.round #округляем
 @dni=(((sec1/60)/60))/24 #вычисляем количество дней

Теперь нам нужно этот код использовать в самом фреймворке. Для этого сначала читаем мануал Sinatra, даже не нужно углубляться(пока не нужно) – информация на главной странице нам уже достаточна. Для начала надо установить gem sinatra. А далее записываем : Read More

16 Sep

AZN Converter.

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

16 Sep

AZN Converter.

Salam hamiya. Chox vaxtdir ki koddinge aid bir teze megale gorunmur. Chaliwag bunu dulezdek. Ona gore de gelin birlikde bir programm yazag. Menim en sevimli programming dillerde biri – Rubydir. Ruby chox gesheng ve lakonik bir dildir. Yukxiro Macumoto terefinden yaradilib. Etrafli wikipediada oxumag olar.
Bizim meqsedimiz ise www ile ishleyen ve lazim gelen bir program yazmagdir. Ela olardiki onu GUI(graphical user interface) ile temin edek. Program Valyutalari convert etmelidir. Yeni biz meblegi daxil etdikden sonra program onu AZN chevirmelidir. Ve valyutani hansi sa bir saytdan goturmelidir. Bunu uchun men Azerbaijan Beynalxalg Bankin – ibar.az sayti goturdum. Birinci ishimiz ele bu olmalidir. Gelin bunu uchun Rubyde kod yazag.

1
2
3
4
require 'open-uri' # www ile iwleyen bibliotekani goshag.
file=open('http://www.ibar.az/currency/') # burada fayl obyekte html seifeni yukleyek
string= file.readlines.join # ve butun seifeni bir setr kimi duzeldib string adli ibyekte verek
output = string.scan(/-?d+.d+/) # regular extensions ile html filedan bize lazim gelen butun valutalari massivde saxlayag, yeni parsing edek.

Bura kimi, neticemiz bele olajag: Read More

14 Aug

GitHub и Bitbucket.

В настоящее время файлы с локального компьютера разработчиков давно уже переместились в удаленные хранилища, представляющие собой отличные вебсервисы со специализированными утилитами для работы с ними. Эта идея, идея размещения файлов на этих вебсервисах, способствуют более тесному взаимодействию разработчиков, обмену кода. А особо они полезны при крупных проектах. Кроме того что они представляют собой улучшенное взаимодействие между девелоперами, они также способствуют оптимизации кода. В том смысле, что позволяют посредством нескольких несложных манипуляций откатить проект назад, на определенный уровень начальной разработки. А также позволяют фиксировать каждое добавление, изменение кода.
Наиболее крупными веб-сервисами в этом плане являются github.com и bitbucket.org . Первый основан на Ruby on Rails и собственно там хостится большое количество разработок на Ruby(различные гемы, дополнительные утилиты, сам Ruby ob Rails и даже Django). Пользуеться большой популярностью у Ruby разработчиков. Но вебсервис не ограничивается только Ruby(к примеру количество кода на JavaScript давно уже перешло количество кода на Ruby на этом веб-сервисе). Как и на другом вебсервисе, можно добавлять любые файлы на любом языке программирования. На данный момент являеться “динозавром” по популярности среди таких веб-сервисов.
Система контроля версий – Git позволяет безболезненно управлять проектами. У него пожалуй очень много плюсов. Но из минусов стоит отметить чуть усложненную настройку, процессы авторитизации с ключами и прочее c github. Но разобравщись с ними, оно больше не представляет быть проблемой.
Второй, с которым я недавно познакомился, создан для работы с merkurial. Это собственно bitbucket.org. Привязка mercurial к bitbucket по сравнению с git к github намного легче. А стиль работы полностью одинаков в обоих вебсервисах и в системах контроля версий сходится.
Похоже отличительным аргументом является – “Кто к чему привык”.