/E-Haci.net

texnologiya, elm, təhsil mövzularında düşüncələr

Category: Web proqramlaşdırma

Web proqramlaşdırma

  • Zamana uyğunlaşdırılan bölmələr – WordPress üçün sadə kod həlli

    Zamana uyğunlaşdırılan bölmələr – WordPress üçün sadə kod həlli

    Website Development prosesində qarşımıza zamana bağlı dinamik dəyişən sahələr çıxması normaldır. Yəqin ki, hər birimiz bununla zaman-zaman qarşılaşırıq. WordPress Plugin və ya theme develop edərkən bu tipli problemləri sadə yolla da həll etmək olar.
    3 nümunə ilə əsas ehtiyaclara uyğun sadə həlləri təsvir etməyə çalışacam. (Nümunələr sadə olduğu üçün parametrləri administrativ sahəyə keçirmək haqqında nəsə yoxdur, sadəcə birbaşa işi görən kodlar var)

    1. Gecə-gündüz bannerləri dəyişmək – İstifadəçilər gecə daxil olarkən hansısa verilmiş ərazidə bir banner, səhər isə başqa banner görə bilərlər.
    2. Həftəsonu bölməsi – Hansı ki adi vaxtda verilmiş ərazidə normal bir bölmə olduğu halda, həftəsonu orada həftəsonuna özəl bir bölmə peyda ola bilər. Birinci gün başlayan kimi də itər.
    3. Qeyd edilən tarix intervalında peyda olan bölmə. Məsələn mağaza veb saytı develop edirik, mağazada ayın 27-28-i kampaniya var. Deməli biz öncədən kodu elə schedule edə bilərik ki, kampaniya haqqında bölmə verilmiş tarixdə özü-özünə peyda olsun və sonra da lazımi vaxt bitəndə itsin. Yəni bunun üçün həmin vaxt aralıqlarında saytın kod hissəsində zamana bağlı editlər etməyə gərək olmur.

    Beləliklə, nümunə 1 – gecə-gündüz banner əvəzetməsi nümunəsi:
    davamı…

  • WordPress – lokal host-dan serverə rahat köç

    WordPress – lokal host-dan serverə rahat köç

    Məlum məsələdir ki, bir çox hallarda veb sayt tərtibatçısı veb saytı ilk öncə lokal host-da (kompüter daxilində yaradılan daxili server hostu) tərtib edir hazırlayır, hər şey bitəndən sonra saytın əsas serverə daşınmasını həyata keçirir. Bu ardıclııq WordPress veb saytlar üçün də keçərlidir.

    O halda köç zamanı hansı dəyişikliklər lazım olur? Məlum məsələdir ki, veb saytda lokal hosta özəl bütün konfiqurasiya parametrləri real serverə aid parametrlər ilə əvəz edilməlidir. Bu işi görən pluginlər də var(açar söz: migrate), eyni zamanda verilənlər bazasında müvafiq dəyişikliklər etməklə bunu fərdi qaydada da etmək olur.  Fərdi qaydada veb saytı lokal hostdan real serverə daşıyarkən aşağıdakı ardıcıllıqla əməliyyatlar edilməlidir.

    1. Faylları ftp və ya digər vasitə ilə köçürmək.
    2. Verilənlər bazasını ixrac-idxal əməliyyatı ilə serverə köçürmək.
    3. Verilənlər bazası parametrlərini wp-config.php faylında dəyişmək.
    4. Veb saytın əsas ünvanını verilənlər bazasının wp_options mysql cədvəlində 2 yerdə dəyişmək.
    5. wp_posts cədvəlində post content, post guid və.s. kimi sütunları kütləvi redaktə etmək.(vacib olmayan addımdır)

    İndi paylaşacağım çox kiçik bir texnika ilə yuxarıdakı 5 addımdan 4-nü ləğv etmək olar. davamı…

  • WordPress – Avtomatik yenilənmədə problem olarsa

    WordPress – Avtomatik yenilənmədə problem olarsa

    Bəzi hostinq və ya fərdi serverlərdə faylın mənsub olduğu istifadəçi ilə veb server istifadəçisinin fərqli olması və yaxud da sadəcə fayl icazəsinin məhdud olması səbəbindən WordPress sistem yenilənməsi avtomatik baş verə bilmir. Belə hallarda fərdi qaydada yeniləmə etmək əslində çox sadə metodla mümkündür. WordPress yenilənmə zamanı istifadəçiyə aid ərazidə heç bir dəyişiklik baş vermir, dəyişiklik yalnız nüvədə və idarəetmə fayllarında baş verir. davamı…

  • WordPress və cache texnologiyası haqda qısaca

    WordPress və cache texnologiyası haqda qısaca

    Cache texnologiyası haqda məlumatı olmayanlar üçün qısaca sadə izah: Cache(keş) texnologiyasının məqsədi serverin informasiya emal etməsi zamanı təkrar emalların qarşısını almaq və bunun hesabına serverin dayanıqlığını, performansını artırmaq, yüklənməsini azaltmaqdır.

    Shared hostinqlər üçün(Saytın hostinqi Godaddy, Hostgator və.s. digər hostinq şirkətlərindən alındıqda)

    1. WordPress Total Cache – Çox populyar qoşma. WordPress-in sahibi olan Automatic şirkətinin də məsləhət gördüyü həll.

    2. WordPress Super Cache – Bu sahədə ən populyar qoşma.  WordPress-in sahibi olan Automatic şirkətinin də məsləhət gördüyü həll.

    3. WordPress Hyper Cache – İlk iki qoşma qədər populyar olmasa da struktur baxımından asan və performans baxımından onlar ilə eyni qoşma. Əsasən proqramçılar üçün məsləhətdir, çünki kodu kiçik olduğundan anlaşılan və asan modifikasiya oluna biləndir. Mənfi cəhəti isə ilk iki qoşma qədər təkmilləşmiş konfiqurasiyası olmamasıdır.

    Ayrılmış fiziki və ya virtual serverlər üçün

    WordPress Predis – Predis for WordPress(Predis = PHP API solution of Redis cache server)

    İlk bənddəki 3 və onlar tipində olan 10-larla digər qoşmalar “üst səviyyədə” backend həllərdir, cache prosesi WordPress sistemi daxilində baş verir. İkinci bənddəki həll (və digərləri, məsələn Apache Traffic Server) isə serverin əməliyyat sistemində qurulu olan proqram səviyyəsində baş verir. Və sözsüz ki ikinci tip həllər birinci tipli həllərdən dəfələrlə yüksək performans nümayiş etdirə bilir və daha effektivdir. Birinci tip həllərin üstünlüyü o sayıla bilər ki, CMS-in strukturuna spesifik istisnalar daha asan reallaşdırıla bilir.

    Sonda maraq üçün wp-predis həllinin müəllifinin apardığı performans testinin nəticəsini paylaşım:

    davamı…

  • WordPress təhlükəsizlikdə kiçik, amma çox önəmli bir detal

    WordPress(WP) saytların təhlükəsizliyi mövzusu çox önəmlidir, ən azı ona görə ki bu CMS dünyada ən populyar CMS-dir.
    Bu yazıda sadə bir əməliyyatın, administrator istifadəçi adını fərqli etməyin nə dərəcədə önəmli olmasından bəhs edəcəyik.
    Amma ilk öncə WP CMS-inin Core halında nə dərəcədə təhlükəsiz olması haqda deyim: Tam təhlükəsizdir. Heç bir əsaslandırılmamış əks fikrə inanmaq lazım deyil. Kod tərəfdən heç bir problem yoxdur, problem insan amili ilə bağlıdır ki, o haqda bəhs edəcəyik.
    Sual: Bəs o halda Core halda belə əlavə təhlükəsizlik tədbirləri nəyə lazımdır? (Plugin və theme haqda bu dəfə danışmırıq)
    Cavab: Ona görə lazımdır ki, WordPress nə qədər güvənli olsa da, açıq kodludur deyə strukturu hər kəsə aydındır. Və aydındır deyə, internetdə gəzib dolaşan çoxsaylı botlar arabir sizin sayta da bir tilov atacaq. Çünki hansı faylın harda yerləşdiyini bilir.

    Məsələn wp-admin-ə təsadüfi post request göndərəcək 100 dəfə, təsadüfi parollarla, tutar tutar, tutmaz tutmaz. Bu tip hücumları əksər developerlər tədqiq etmir deyə say haqda təsəvvürləri yoxdur. Amma gerçək olan budur ki, hər bir WP sayt ay ərzində 100-lərlə, bəlkə minlərlə belə hücuma məruz qalır. Və hər hücumda milyonda bir ehtimal olsa belə saytın admin panelinin ələ keçirilməsi ehtimalı var.

    WP təhlükəsizlik uzun mövzudur, bir yazıda ətraflı bəhs etmək olmaz. Amma cəmi 1 detalı dəyişməklə siz hücumların mütləq əksərinin qarşısını almış olursunuz. Aşağıdakı şəklə baxaq:
    Screenshot from 2013-06-04 09:23:43
    Burada mən Cavablar.net analitikasını aparmışam və bir gün ərzində əcnəbi İP-lərdən edilən hücumların sayına diqqət edin. Yüzlərlə hücum var, hər hücum 16 cəhddən sonra xüsusi plugin ilə blok edilib hələ, edilməsəydi say minlərlə olardı.

    Gələk bugünku əsas məqama: Bütün bu hücumları bir şey birləşdirir: username = admin yoxlanılır, yalnız və yalnız. Çünki WP-də başlanğıc halda username admin olur. İnstall zamanı bircə admin username-ni dəyişməklə siz bütün bu hücumları tam mənasız etmiş olursunuz. Gördüyünüz kimi kiçik, amma çox önəmli detaldır.

    Sual: Bəs artıq aktiv olan saytımda admin userini necə dəyişim, axı login-i dəyişmək icazəsi yoxdur?
    Cavab: Bəli yoxdur, amma bunu asanlıqla sql admin-dən etmək olar. Məsələn girirsiniz phpmyadmin-ə, wp_users cədvəlində admin userini tapıb, user login-i dəyişib yadda saxlayırsınız, vəssalam. Və ya SQL dili ilə desək: update
    wp_users set user_login=’yeni_ad’ where user_login=’admin’;

    Təkrar edirəm ki, WP təhlükəsizlik tədbirləri bircə bu deyil və xeyli sayda tədbirlər var, sadəcə mən ən asan bir tədbirin necə effektiv olması haqda bəhs etmək istədim.

    Qeyd: Yuxarıdakı analitikanı Limit Login Attemps plugini ilə aparmışam. Pulsuzdur, yükləyə bilərsiniz. Plugin bu tipli analiz hesabat ilə yanaşı həm də bu tip İP-ləri blok etmək imkanına malikdir.

  • Google+ WordPress Developers Community – Məqsəd

    Belə bir Community yaratmağı qərara gəldim. https://plus.google.com/communities/115971210454065924105
    Screenshot from 2012-12-27 09:54:52
    Yəqin bəzilərinizin məlumatı var ki, Linkedin-də də belə bir qrupumuz var(qoşula bilərsiniz: http://www.linkedin.com/groups?home=&gid=3722491) və hazırda müxtəlif ölkələrdən 3000-ə yaxın üzvü var, qrup çox aktivdir. Məlumatımıza görə bu qrup Linkedin-də sırf WordPress Developer-lər üçün nəzərdə tutulan ən böyük qrupdur.

    Amma Linkedin bir növ qapalı sistem olduğundan, funksionalı da məhdud olduğundan orada qrup imkanları dardır və sırf qrup olmaqdan o tərəfə keçmir, Community ola bilmir. Facebook qruplarda da vəziyyət eynidir.

    Google+ isə Community üçün yaxşı imkanlar yaradır. Beləliklə bu qrupu yaratdıq və WordPress Development-də maraqlı olan hər kəs üçün maraqlı və faydalı bir platformaya çevirməyə çalışacağıq.
    https://plus.google.com/communities/115971210454065924105

    P.S. Səhifə ingilisdillidir və lokal xarakter daşımır.

  • WordPress üçün asan və funksional Backup qoşmaları

    wordpress-seo-plugins

    WordPress sistemində qurulan saytları Backup etmək üçün bir çox üsullar mövcuddur. Bazanı əllə dump etmək, file sistemi copy paste etmək həll yollarından ən qabasıdır. Bəs optimal yollar necədir? Optimal yollar üçün bir çox asanlaşdırıcı pluginlər mövcuddur. Bəzi pluginlər tək bazanı, bəziləri tək faylları, bəziləri hər ikisini backup edib sistemdə saxlayır, siz yükləyirsiniz. Bəziləri də var ki, backup etdikdən sonra arxiv faylı dərhal Dropbox bulud xidmətinə köçürə bilir. Bu da çox yaxşı funksiyadır. Belə ki backup-un hazır olmasından sonra dərhal hostinqi tərk edib Dropbox-a köçməsi hostinqdə istənilən an baş verəcək qəzanın fəsadlarını minimallaşdırır.

    backup-solutions

    Backup pluginlərinə 2 yaxşı nümunə yazım:

    1. Backup Scheduler
    Bəzi saytlarda istifadə edirəm. Yaxşı plugindir. Schedule imkanına malikdir, hansı ki, istənilən gün intervalı seçib hansı intervaldan bir backup çıxarılmasını təyin edə bilirik. Backupun ftp ilə kənar hostinqə yüklənməsini, habelə emailinizə göndərilməsini də təmin edə bilirik.
    Hostinqlərin məhdudiyyətini nəzərə alaraq backup faylını hissələrə bölmək imkanı da var. Yəni backup 100 MB olacaqsa, bunu yaratmaq və göndərmək hostinqə çətin ola bilər, onu 5-5 meqabaytla 20 yerə bölmək imkanı var.

    2. WordPress Backup to Dropbox 
    Bu da yaxşı plugindir. Backup faylını birbaşa Dropbox qovluğunuza göndərir. Saytın içərisindən Dropbox-a login Oauth metodu ilə aparılır, odur ki, sizin login məlumatlarınız haqda kiminsə xəbəri olmur, güvənlidir.

  • Çıxış keçidləri statistikasının asan tədqiqi

    Veb saytlarda yerləşdirilən başqa saytların bannerlərinə olan keçid sayını və ya saytda olan birbaşa fayl yükləmələrinin sayını tədqiq etmək developer üçün daim maraqlı məsələlərdən biridir. Bu istiqamətdə ən tanınmış metod hər hansı out.php və ya download.php faylı yaradıb yükləməni və ya keçidi o faylda qeydə alıb daha sonra redirekt üsulu ilə keçidi tamamlamaqdır. Bu təcrübəli bir veb proqramçı üçün çətin olmayan bir məsələdir.
    Bəs təcrübəsiz üçün hər hansı asan yol təklif edə bilərikmi? Və ya CMS-dən istifadə edən müvafiq plugin tapmayan bir developer üçün? Bəli təklif edə bilərik.
    Bu yazıda bit.ly servisindən bu məqsədlə istifadə qaydasını təklif edirəm.
    Bit.ly saytı uzun linkləri qısaltmaq(əsasən Twitter.com-da) üçün yaradılmış bir servis idi. Amma sonralar Twitter özü avtomatik qısaltmaya keçdi deyə bit.ly-nin bu əsas funksiyası aktuallığını itirdi. Düzdür hələ də istifadə olunur, amma əvvəlkitək yox.
    Və beləliklə bit.ly bitly.com-a çevrilib link qısaltma işində bir qədər ətraflı servislər təklif etməyə başladı. Bunlardan biri də bit.ly-də hesab açaraq qısaldılmış linklərin istifadə sayının statistikasını təqdim etməkdir.
    Beləliklə tutaq ki,
    1. Siz saytınıza site.com saytının bannerini qoymusunuz və sizin saytdan olan keçidlərin sayından daim məlumatlı olmaq istəyirsiniz.
    2. Saytınıza hər hansı proqram təminatınızı zip faylı şəklində yükləməyə qoymusunuz və maraqlanırsız ki fayl neçə dəfə yüklənib.
    Hər iki hal üçün bitly.com-da sadə qeydiyyatdan keçirsiniz, sağ yuxarıda lazımi linki paste edib qısaldılmış linki alırsınız.

    Linki yaratdıqdan sonra qısaldılıb sizə təqdim edilən yeni linki saytınızda olan bannerə qoyursunuz(yükləmə halında isə YÜKLƏYİN sözünı) və daha sonra STATS bölməsindən daim linklərə olan keçid sayını zaman filtri ilə asanlıqla tədqiq imkanına malik olursunuz.

    Uğurlar. 🙂

    P.S. Saytın developers bölməsində APİ imkanlar da təqdim olunur ki, bunların köməyilə bu prosesi avtomatlaşdırmaq olar. Məsələn çoxsaylı linklər generasiya edən bir saytda hər bir linki əllə yaratmaq əlverişli deyil. Və bunu APİ-lərlə avtomatik reallaşdırmaq olar. Amma bu yalnız təcrübəli developerlərə maraqlı ola biləcək mövzudur.

  • WordPress-də email başlıqlarını dəyişmək

    wp
    Wordpress CMS-i istifadə edən developerlər yəqin ki, php-dəki wp_mail() funskiyasından xəbərdardırlar. Funksiyanın adı tanış gəlməsə belə gördüyü iş hamıya məlumdur. Bu funksiya vasitəsilə sistem emailləri göndərilir. Yəni yeni şərh olduqda, yazınıza şərh yazıldıqda, qeydiyyatdan keçdikdə, parolu unutduqda və.s. emailləri bu funksiya göndərir.

    Bu funksiyanın header-başlıqları(Göndərənin adı, email ünvanı) WordPress-in nüvə fayllarından birində yerləşdiyindən(konkret desək wp-inclueds/pluggable.php) onu redaktə etmək əlverişli deyil, çünki redaktə etsək belə WordPress-in növbəti update-ində nüvə faylları yeniləri ilə əvəz olunacaq və əziyyət hədər gedəcək. Ona görə də bu məsələni ya pluginlə həll etmək lazım, ya da theme-in functions.php faylında hook filterlər(hook filter CMS-lərə aid termindir və izahı bu mövzuya aid deyil deyə üstündə dayanmayaq) yazmaq lazım. Biz 2-cini seçərək asan yolla bu problemi həll edək.

    Ümumiyyətlə niyə buna problem kimi baxırıq, default(susmaya görə) başlıqların nə pis cəhəti var ki? Cavab bu: Default başlıqlar sizin istəyinizə uyğun qurulmayıb. Belə ki göndərənin adı olaraq WordPress, emaili olaraq wordpress@sizin_sayt_unvani.com göstərilir. Təsəvvür edək sizin istifadəçiyə məktub gedir sizin saytdan, istifadəçi mailini açır görür ki WordPress adlı şəxsdən ona məktub gəlib.
    Yəni “WordPress” wordpress@sizin_sayt.com. 
    Bu heç də yaxşı deyil. İstifadəçi belə bir başlıqla qarşılaşmalı:
    “Sizin saytın adı, başlığı və ya adminin adı” sizin_saytin_adi@sizin_sayt.com

    Bunu etmək üçün admin paneldən(Dashboard) Appearance->Themes->Editor bölməsinə daxil olun və theme-nizin functions.php faylını açıb bu kodu ora yerləşdirin.

    function website_email() {
        $sender_email= 'Sizin saytın emaili buraya'; //məsələn [email protected]
        return $sender_email;
    }
    function website_name(){
        $site_name = 'Sizin saytın adı-başlıq və ya hər hansı ad-soyad buraya'; //məsələn Filankesov Filankes
        return $site_name;
    }
    add_filter('wp_mail_from','website_email');
    add_filter('wp_mail_from_name','website_name');
    

    Vəssalam, bu əməliyyatdan sonra sizin istifadəçilər sizin saytdan normal başlıqlı emaillər alacaqlar.

  • WordPress kateqoriyalarının Google chart ilə qrafik təsviri

    Bu postda kiçik bir kod parçası paylaşmaq istəyirəm, bu kod wordpress bloqunuzun kateqoriyalarını yazı sayına görə qrafik təsvir edəcək, kod parçasını statistika ilə maraqlanan istənilən şəxs öz bloqunda yerləşdirə bilər.
    Kod aşağıda yazılanlardan ibarətdir:

    //Author: Elvin Haci
    //Author url: http://webania.net
    $ch_cats = get_categories(array('orderby'=>'count','order'=>'desc') );
    $sayy= count($ch_cats);
    $chd=''; $chl='';
    for ($i=1;$i<=$sayy;$i++)
    {
    $chd=$chd.','.$ch_cats[$i-1]->count;
    $chl=$chl.'|'.$ch_cats[$i-1]->name.'('.$ch_cats[$i-1]->count.')';
    }
    $chd=substr($chd,1);
    $chl=substr($chl,1);
    $ch_title="Yazı sayına görə mənim bloq kateqoriyalarım"; 
    $ch_size="450x200"; // Şəklin ölçüsüdür, dəyişə bilərsiniz.
    echo '<img src="http://chart.googleapis.com/chart?chtt='.$ch_title.'
    &cht=p3&chd=t:'.$chd.'&chs='.$ch_size.'&chl='.$chl.'">';
    

    Əgər siz qrafiki yazı daxilində yerləşdirmək istəyirinizsə o halda InlinePHP pluginini(qoşmasını) quraşdırmaq lazımdır. Quraşdırdıqdan sonra siz yazı daxilində [ exec ] …code here… [/exec] tag-larından istifadə edərək istənilən php kod parçasını işlədə bilərsiniz.
    Yox əgər sizin theme redaktəsi ilə aranız yaxşıdırsa, təcrübəniz varsa, o halda qrafiki bloqunuzda istənilən bölgədə yerləşdirə biləcəksiniz. Məsələn yan sütunda yerləşdirmək olar(cari işlətdiyiniz theme qovluğunda sidebar.php faylı).

    Sonra qrafiki demo olaraq təqdim edirəm. Təbii ki, bu qrafik yazının dərc olunduğu bloqun statistikasını əks etdirir.
    [exec]
    $ch_cats = get_categories(array(‘orderby’=>’count’,’order’=>’desc’) );
    $sayy= count($ch_cats);
    $chd=”; $chl=”;
    for ($i=1;$i<=$sayy;$i++) { $chd=$chd.','.$ch_cats[$i-1]->count;
    $chl=$chl.’|’.$ch_cats[$i-1]->name.'(‘.$ch_cats[$i-1]->count.’)’;
    }
    $chd=substr($chd,1);
    $chl=substr($chl,1);
    $ch_title=”E-Haci.net kateqoriyalar”;
    $ch_size=”550×200″; // You can change it feet to your post
    echo ‘‘;
    [/exec]

    Bu kodu asanlıqla plugin formasına salıb WordPress.org-da yerləşdirə bilərəm, əgər maraq olsa inşallah yəqin ki edəcəm. Uğurlar.
    Yazının ilkin dərc etdiyim ünvan: Webania.net