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

28 Aug

Java və PDF.

Bir neçə gün əvvəl, dostum sənədləri – CV, Diplom, tərcümələri yıgıb klinikaya göndərirdi. Lakin onlardan gələn şərt o idiki bütün sənədlər bir pdf faylda olmalıdır. Dostumda isə onlar bir neçə ayrı-ayrı pdf fayllarda idi. Məsələ elə program yazmag idi ki o iki pdf faylı bir birinə birləşdirsin və nəticədə bir pdf alınsın.

Bu ara boş vaxtım oldugu üçün bir ay fikirləşdim. Təzə öyrəndiyim Java programlaşdırma biliklərimi yoxlamaq üçün əla fürsət idi. İnternetdə axtarış verib pdf ile işləyən java library, onların istifadə gaydaları oxudugdan sonra – gərara gəldim ki iTextpdf library işlədim. Həmdə resenziyaları pis deyildi.

Ümumiyətlə iTextdf, standart FileChooser və GUİ üçün Swing işlətdim. Versiya 02 də GUI Netbeans/Intellij Idea ilə düzəldi. Versiya 01 dəki sadə kod : 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
26 Mar

Massivlər

Tez ya da gec hər bir proqramçı massiv deyilən bir anlayışla qarşılaşır. Massivi geniştərkibli dəyişən kimi başa düşmək olar. Massivlər array() konstruksiyası ilə müəyyən olunur. Mötərizə daxilində onun qiymətləri yazılır.

<?php 
  $arr = array('www', 'myscript', 'biz'); 
?>

Və ya

<?php 
  $arr[] = "www"; 
  $arr[] = "myscript"; 
  $arr[] = "biz"; 
?>

Read More

19 Feb

Fayllarla iş və ya “əlimiz işdən soyumasın :)”

Bu aralar php-yə vaxt ayıra bilmədiyim üçün çox təəssüfənsəmdə arada cızma-qara edirəm. Düşündüm ki, mən postlarımda fayllarla işə çox az yer verirəm. Buna görə özümüzə bir çalışma təyin edək. Saytımızda olan anonim qonaqların qeyd olunduğu skriptimizi yada salaq. Və əgər istifadəçi sayta daha öncədən daxil olmayıbsa onu bazaya yazmadan əvvəl tarixi, ip ünvanını və istifadəçinin bələdçisi (user agent browser) haqqında məlumatı ip.txt faylına yazdıraq. Read More

09 Jan

Səhifələrarası navigasiya

Bəzən saytımızda yazıların, postların, şəkillərin və s. sayı həddən çox olduqda, səhifəmiz çox uzun olur, yorucu görünür və səhifənin gec yüklənməsinə səbəb olur. Onun üçün səhifələrarası navigasiyadan istifadə olunur. Ona bir çox saytlarda, bloglarda rast gəlirik. O qədər də nəzərə çarpmayan kiçik, eyni zamanda vacib bir element sayılır. PHP-nin köməkliyi ilə bunu öz saytımızda necə edə bilərik? Təbii ki, bu əsasən sizin saytınızın strukturundan asılıdır, amma əsas prinsipə birgə nəzər salaq.

Tutaq ki, bizim bazamızda (burada – nav) post cədvəli var. ‘İd’, ‘post’ və ‘status’ sütunları var. Statusunda “active” olan postların sayına baxaraq, naviqasiyamızı hazırlayaq.

Yenə də qeyd edirəm ki, kodda sadəcə bu işi necə etmək lazım olduğunu göstərməyə çalışmışam, öz əlavələrinizi və proyektinizə uyğun modifikasiyanı etmək artıq sizə qalır.

Sualınız yaranarsa kommentlərdə cavablamağa hazıram. Read More

25 Dec

“Saytımızda kim var, kim yox” və ya qonaqlarımızın gəliş-gedişini necə izləyək?

Əsasən sosial şəbəkə, tanışlıq, çat kimi insanların ünsiyyət üçün müraciət etdikləri saytlarda hazırda saytda neçə nəfərin olması, istifadəçilərin siyahısı, gün ərzidə qonaqların sayı və s. Kimi göstəricilərin olması vacib sayılır. PHP haqda növbəti postumu da elə bə mövzuda yazmağa qərar verdim. Düşünürəm ki, maraqlananlar olacaq. Yenə də dərinliklərə getmədən işin əsas prinsiplərinin nədən ibarət olduğunu bildirəcəm. Mən hazır skript istifadə etməyin (copy-paste programçılığı) əleyhinə olduğumçün sizə də hazır heç nə təklif etmirəm. Oxuyun, strukturun necə qurulduğunu dərk edin və öz kodunuzu özünüz yazın. Uzunçuluq etməyib işə başlayaq.

HTTP protokolu istifadəçinin saytda olduğu müddəti tam əks etdirən sesiya yaratmaq imkanı vermir. Ancaq onun köməyi ilə biz istifadəçinin saytla son davranışını qeyd edə bilərik, hansı ki, bundan sonra istifadəçi yüklənmiş səhifəyə saatlarla baxar və ya onu tərk edə bilər.
Ona görə biz təxmini olaraq 10 dəqiqə (standart 20 dəq.) ərzində istifadəçinin heç bir yeniləmə işi etmədiyini nəzərə alıb, onun resursumuzu tərk etdiyi qərarına gələcəyik.

Read More

19 Dec

Установка Rails 3.0.3 на Calculate Linux 10.9(Gentoo)

Сегодня мы будем устанавливать Ruby(1.8.7) и Rails 3.0.3 на Calculate Linux 10.9. Задача не сложная. Но подробных описаний этого процесса в сети я не нашел, поэтому решил запостить в блог. Благо разработчики Rails 3 все еще поддерживают Ruby 1.8.7 ибо Ruby 1.9.2 в Gentoo не стабилен.

Ищем Ruby:

biotin@calculate ~ $ emerge -S ruby

Поиск дал результаты :

Searching...
[ Results for search key : ruby ]
[ Applications found : 266 ]
*  dev-lang/ruby
Latest version available: 1.8.7_p302 nd my
Latest version installed: [ Not Installed ]
Size of files: 4,088 kB
Homepage:      http://www.ruby-lang.org/
Description:   An object-oriented scripting language
License:       || ( Ruby GPL-2 )

Логинимся под root и устанавливаем: Read More

05 Dec

WEB-də təhlükəsizlik seriyasından – şifrələnmə

İnformasiyanın təhlükəsizliyində ən əsas mövzulardan biri şifrələnmədir. Bəzi proqramçılar bu işə nədənsə dırnaqarası baxırlar. Amma bildirim ki, İnternet kimi qlobal bir şəbəkədə heç nəyə etibar yoxdur, ona görə də bazamızdakı bütün parollar şifrələnməlidir. Bazanızın tam təhlükəsiz qorunduğuna əmin olsanız belə şifrələnmədən yan keçməyin. Əgər xaker sizin bazanızı ələ keçirsə belə, bu zaman o şifrələnmiş parolların deşifrə olunması ilə vaxt itirməli olacaq, hansı ki bu müddət ərzində parolları dəyişmək və ya xakerin tapdığı boşluqları doldurmaq olar. Və bir də onu da qeyd edim ki, PHP-də şifrələnmə elə də çətin bir iş deyil.

Burada biz özümüz alqoritm fikirləşməyəcəyik (hansı ki, bunu da eləmək olar, amma bir halda ki, siz bunu bacararsınız, deməli, bu postu sizə yazmamışam, hətta bu postu siz yazsaydınız daha maraqlı olardı=), bunun üçün hazır funksiyalar mövcuddur. Read More

24 Nov

WEB-də təhlükəsizlik seriyasından – Çətin parollar

Administratorun qızıl qaydası – «Parolun çətin olsa, basılmaz saytın A.M.=)». Düşünürəm ki, onları hər yerdə işlətmək daha məsləhətdi. Əsasən də ƏS-lərinə və ya məlumat bazasının serverinə giriş icazəsi zamanı parolun kifayət qədər çətin olması məqsədə uyğundur. Hətta xüsusi şifrə hazırlayan (password generator) utilitlərdən istifadə ideal olardı.

Əgər xaker sizin serverə skriptdəki boşluqlardan istifadə edərək daxil ola bilmədisə o çalışacaq ki, sadə üsullarla parolu müəyyən etsin.

Əgər istifadəçi adı və parol URL vasitəsilə ötürülürsə, hətta azacıq təcrübəsi olan xaker sadə program və ya skript yazaraq parolu müəyyən edə bilər. Xakerə belə programı yazmaqçün elə də çox şey lazım olmayacaq:

• Bir dəfə serverə hər hansı istifadəçi adı və ya parolla sorğu göndərmək;

• Serverin şifrə və ya istifadəçi adının səhv olması ilə əlaqəli verdiyi cavaba baxmaq. Əgər səhv yoxdursa bu o deməkdir ki, parol tapıldı, xaker öz istəyinə ele birici dəfədən nail oldu =)

• Sadə programın köməyi ilə hər dəfə ayrı istifadəçi adı və parolla URL sorğu göndərmək. Gələn cavabların hər hansı bir etalon nöqtəsinin işində fərq yaranarsa deməli parol tapılıb. Read More