Proqramlaşdırmaya yeni başlayanlar üçün 5 ƏSAS PRİNSİP

Proqramlaşdırma özünün qanunauyğunluqları ilə fərqlənən, qəliz olduğu qədər də cazibə qüvvəsi ilə insanları  özünə çəkən möcüzəli bir dünyadır. Bu dünyada özünüzü yadplanetli kimi hiss etməməyiniz və proqramlaşdırmanı daha rahat mənimsəməniz üçün itcity.academy bilməli olduğunuz 5 əsas prinsipi sizlərlə bölüşür:   PRİNSİP 1: “Proqramlaşdırmanın əsası riyaziyyat yox, məntiqdir” Proqramlaşdırma ilə məşğul olarkən cəbrin bütün triqonometrik düsturlarını xatırlamalı olacağınızı düşünməklə özünüzü qorxutmayın. Çünki bu tərz riyazi əməllərə proqramlaşdırmada çox nadir hallarda rast gəlinir. Ən çox rastlanılanlar isə riyazi əməllərin ardıcıllığı və ya koordinat sistemləri kimi sadə bilik tələb edən məsələlərdir. Əgər sizin məntiqi bacarıqlarınız varsa, proqramlaşdırma dünyasına “Xoş gəlmisiniz”!   PRİNSİP 2: “Axan ulduzu havada tutmaq” Proqramlaşdırma bir neçə prosesi özündə birləşdirən böyük bir prosesdir. Biz hansısa  bir işi bizim yerimizə yerinə yetirməsi üçün cihaza əmr veririk və özümüz də bu prosesləri idarə edirik. Bunun nəticəsi isə bütov bir fayl və ya sadə bir sətir ola bilər. Bu çətin prosesli işin ən problematik tərəfi isə odur ki, nəticə əldə etmək üçün təkcə verilənləri daxil etmək şərt deyil, dəyişənlər təyin olunmadıqdan sonra gördüyünüz işin nəticəsi və davamlılığı olmur. Bu bir növ ulduz axmasına bənzəyir. Var idi, indi isə yoxdur. Peşəkar proqramçı bu ulduzu havada tutmağı bacarmalıdır. Buna isə proqramlaşdırma elminə yiyələnmənin ilkin etaplarından öyrənməyə başlasanız, öz işinizi asanlaşdırmış olarsınız.    PRİNSİP 3: “MATRYOŞKA” EFFEKTİ Proqramlaşdırmada “obyektlərin içərisində yerləşmiş obyektlərin içində yerləşmiş obyektlər çoxdur”. Yanıltmaca bənzəyir elə deyilmi? Bu yanıltmacın əsas funksiyası  proqramlaşdırma zamanı yanılmanızın qarşısını maksimum dərəcədə almaqdır. Bir obyekti strukturlaşdırdığınız zaman, verilənlərin özlərinin də bir neçə strukturun birləşməsindən ibarət olduğunun şahidi olacaqsınız. Məsələn, HTML-də bütün proses bunun üzərində qurulub: Həmçinin CSS də iearxik prinsipə əsaslanır: Digər obyektlərin daxilindəki obyektlərlə çalışmağı öyrəndikdən sonra özünüzü proqramlaşdırmanın açarına sahib olmuş kimi hiss edəcəksiniz.   PRİNSİP 4: “İTLƏR, PİŞİKLƏR VƏ BALIQLAR” (və ya səbəb-nəticə əlaqəsi prinsipi) Bir otaq düşünün. Otaqda bir pişik və içində balıq olan bir akvarium var. Balıq özünü çox normal aparır.  Bir müddət sonra 2 hadisə baş verir: otağa bir it girir, pişik isə otaqdan çıxır. Eyni zamanda da balıq oxumağa başlayır.  Sual: Balığı oxumağa nə vadar etdi? Buna səbəb olaraq itin otağa daxil olmasını da qeyd edə bilərik, pişiyin çıxmasını da. Bəlkə əsl səbəb bunların heç biri deyil, sadəcə balığa hər gün eyni saatda sehirli güc verilir və o oxumağa başlayır. Bu ehtimalların hər biri doğru ola bilər. Bu zaman proqramçı üçün vacib olan bu dəyişmənin qarşısını almaqdır. Kodlaşdırma prosesi zamanı siz bu tərz situasiyalarla tez-tez rastlaşacaqsınız. Bu zaman belə bir sualın yaranması mümkündür: İtin gəlişini, pişiyin çıxışı olmadan simulə edə bilərikmi? Dəyişiklik səbəblərinin quraşdırılması metodologiyasını tədbiq etmək çox vacibdir. Bu bacarıq sizə kodlaşdırma zamanı hər zaman köməklik göstərəcək.    PRİNSİP 5. Abstraksiya və ya “Pizza” prinsipi Bu sizinlə bölüşəcəyimiz ən faydalı prinsiplərdən biridir.  Hər gün müxtəlif içliklərlə pizza bişirən bir aşbaz düşünün. Hər pizza müəyyən ardıcıllığa uyğun bişirilir. Əvvəlcə, pizzanın xəmiri hazırlanır, gözlədilir, sonra müvafiq formaya qoyulur, tomat sousu, içlik, pendir, sonda isə ət düzülür. Təbii ki, aşpaz qeyd olunan ardıcıllığa uyğun olaraq hər pizzanın hazırlanmasına bu qədər vaxt sərf etsə restoran tezliklə iflasa uğrayar. Bunun əvəzinə isə o, öncədən hər şeyi hazır edir, geriyə seçimə görə içlik əlavə etmək qalır. Burada anlamalı olduğumuz əsas məsələ onda ibarətdir ki, bütün pizzalar bir-birinə bənzəyir, yetər ki ona hansı içlik qatmalı olduğumuzu bilək.  Proqramlaşdırmada da belədir, əsas ana sistemin qurulmasıdır, onu digər spesifik funksiyalardan ayırmaq üçün isə abstraksiyalardan istifadə olunur.   Hər bir sahəni öyrənməyə başlamazdan öncə onun qanunauyğunluqlarını və işləmə mexanizmini mənimsəmək lazımdır. Xüsusən də proqramlaşdırma qədər dərin bir sahə üçün fundamental biliklər çox vacibdir. Məhz bunun səbəbdən  itcity.academy Fundamental Proqramlaşdırma təlimlərini həyata keçirir. Möhkəm təməl üzərində qurulmuş biliklər, professionallığın əsasını təşkil edir.  

Nginx nədir? Harada istifadə edilir?

nginx.org saytının “about” bölməsinə baxdığımız zaman  “http serveri, reverse proxy serveri, mail proxy serveri və ümumi TCP/UDP serveri” olaraq izah edilib.  Bu izaha, Nginx-in ilk dəfə İqor Sysoev adlı bir Rus tərəfindən hazırlanmış olduğunu, uzun müddət Yandex, Mail.ru və VK kimi çox yüksək trafikə malik Rus saytlarında istifadə edilərək inkişaf etdirildiyini, Dropbox, Netflix və Wordpress.com kimi bir çox böyük layihənin uğurunda rol oynadığını da əlavə etməliyik. Nginx həm də açıq mənbə kodlu bir proqramdır. Nginx-in mənbə kodlarını incələmək üçün http://hp.nginx.org/nginx və https://github.com/nginx/nginx ünvanlarına baş çəkə bilərsiniz. Nginx-i hansı hallarda istifadə edə bilərik? 1) Statik veb saytlarını işlətmək üçün: Statik fayllardan ibarət olan bir veb saytınız varsa, ya da paylaşmaq istədiyiniz fayllarınızın yerləşdiyi bir arxivi internetə açmaq istəyirsinizsə Nginx-i veb server olaraq istifadə edə bilərsiniz. Nginx yaddaşdakı faylları avtomatik olaraq indeksləyəcək və sizə təqdim edəcək. Lakin unutmamaq lazımdır ki, autoindexing funksiyasını bilmədən aktiv saxlasanız paylaşmaq istəmədiyiniz bütün fayllarınızı internet ilə paylaşmış olacaqsınız. 2) Dinamik veb saytlarını işlətmək üçün: PHP, Python, Java, .Net və s. dillərdə hazırladığınız bir veb saytınız varsa və onu internetə açmaq istəyirsinizsə bu saytı işlədəcək bir proqrama ehtiyacınız var. Məsələn PHP ilə kodlaşdırılmış bir layihəni işlətmək üçün serverdə PHP-FPM qurulmuş olmalıdır. Ya da Python istifadə edərək Django Framework ilə bir layihə hazırlamısınızsa bir əmr ilə layihənizi 80 portunu dinləyərək işləyəcək hala gətirə bilərsiniz. Ancaq nə PHP-FPM-i, nə Django-nun “built-in” server funksiyasını, nə Tomcat-ı nə də IIS-i minlərlə istifadəçinin işlədəcəyi bir layihə üçün birbaşa internetə açmaq o qədər də yaxşı fikir olmaya bilər. Nginx bu vəziyyətlərdə köməyimizə çatır və kənardan gələn bütün “requestlərə” sinə gərir. Nginx-in inkişaf etmiş qoşulma idarəsi, “load balancing” yəni yük balanslama və paylama xüsusiyyəti, keş funksiyaları vasitəsilə veb serverləin 80 və 443 portlarını Nginx-ə əmanət edə bilirik. Beləcə kənardan gələn müraciətləri Nginx qarşılayır, qeyd etdiyimiz tənzimləələrə görə keş xüsusiyyətini görür, statik faylları birbaşa təqdim edir və istədiyiniz “requestləri” də “backend” serverinə göndərərək “reverse proxy” əməliyyatını yerinə yetirir. Nginx-in alışana qədər işgəncə çəkdirən amma alışdıqdan sonra hər şeyə “mən bunu nginx ilə həll edərəm” dedirtməyi bacaran config faylları da burada bizə çox köməkçi olur. 3) “Load Balancing” - “Yük Balanslarşdırma” üçün: 2-ci bölmədə qeyd etdiyimiz kimi “backend” serverlərimizi ayıraraq qarşılarına “reverse proxy” oalraq bir nginx yerləşdirdik. Real həyatda bir çox vəziyyətdə (haradasa həmişə) bir “backend” serveri kifayət etməyəcək.  Proqramınız yüksək performans ilə işləsə və serverləriniz çox güclü olsa da hər hansı bir işi görən sadəcə bir server (vm ya da container) olması bəzi hallarda çıxılmaz bir problemə gətirib çıxara bilər. Bunun qarşısını almaq üçün “production” mühitlərində hər zaman birdən çox (adətən ən az 3) “backend” server istifadə edilir. Ancaq “Load balancing” xüsusiyyətindən istifadə etdiyinizdə bu serverlərə gedən  “requestləri” idarə edəcək, balanslaşdıracaq və hər hansı birində problem olduğu vaxtlarda artıq ona “request” göndərməyərək istifadəçilərin səhvliklə qarşılaşmasına mane olan bir mexanizm əldə etmiş olursunuz. Nginx yenə burada meydana girir və bu işi öz üstünə götürür. Nginx configlərində “backend” hovuzları yaradıb serverlərə müəyyən ağırlıqlar verə bilər, müəyyən serverləri backup olaraq təyin edə bilər, healthcheck modulu ilə sağlam olmayan serverləri hovuzdan müəyyən müddətliyinə ayıra bilərsiniz. 4) “Caching” üçün: Deyək ki, yuxarıdakı maddələri tətbiq etdik, “load balancing”i də aktivləşdirdik. Ancaq işimiz hələki bitməyib. Məsələn bir xəbər saytı idarə ediriksə istifadəçi ya da redaktorlar yeni bir məzmun daxil edənə qədər əsas səhifəmiz dəyişməyəcək. Hər nə qədər “backend” tərəfində məlumat bazasından göndərdiyimiz sorğuları və s. keşləsək də hər gələn “request” üçün “backend” serverlərinin təkrar işləməsini və buradakı qoşulma sayının artmasını istəmərik. Nginx üzərində lazımi tənzimləmələri edərək “backend”dən gələn “response”lların istədiyimiz müddətdə keşlənməsinə nail ola bilərik. Məsələn 200 kodu ilə gələnləri 1 dəqiqə, 301-ləri 5 dəqiqə, 404-ləri 1 saat keşə almağı əmr edə bilərik. Keşdəkiləri manual olaraq silməli olsaq, “cachepurge” modulunu istifadə edərək silə bilərik. Nginx-in keşlədiyi “responseları” yaddaşda saxladığını, burdakı performasın disk oxuma və yazmaq sürətinə bağlı olduğunu, çox yüksək performas ehtiyacını varsa keş yolunun ram üzərində tutulacaq formada tənzimlənə biləcəyini də xatırladaq. 5) Ümumi TCP/UDP proxy olaraq: Yuxarıdakı maddələrin hamısında HTTP/HTTPS qoşulmalarından danışdıq. Ancaq Nginx-in bacarıqları bunlarla sərhədlənmir. TCP ya da UDP protokolları ilə işləyən hər hansı bir şəbəkə tətbiqinin qarşısında “proxy” olaraq Nginx istifadə edə bilərsiniz. Məsələn bir “memcached” hovuzunun qarşısında  “load balancer” olaraq istifadə edə bilərsiniz. Nginx ödənişsizdir mi? Bəli və xeyr. Nginx-in http://nginx.org saytından yükləyə biləcəyiniz ödənişsiz bir versiyası mövcuddur. Bir çox hal üçün bu versiya kifayət edəcəkdir. Ancaq inkişaf etmiş xüsusiyyətlər və xüsusilə də Nginx komandasından mütəmadi dəstək almaq istəyirsinizsə https://www.nginx.com saytında daxil olaraq ödənişli versiyadan yararlana bilərsiniz. Qiymətlərin kiçik və orta ölçülü layihələr üçün çox da uyğun olmadığını vurğulaya bilərəm, lakin başda da qeyd etdiyim kimi ödənişsiz versiya bir çox hallarda işinizi artıqlamasıyla görəcək. Hansı platformada işləyir? Hardasa bütün platformalarda işləyir, Unix/Linux sistemlərdə, Windows ya da Mac OS X platformalarında işləyir. Lakin “production” üçün istifadə edəcəksinizsə məcbur olmadığınız hallar istisna olmaqla Windows Server üzərində Nginx işlətmək çox da məntiqli bir addım deyil. Hər hansı bir Linux distrosunun LTS versiyasına tətbiq edəcəyiniz Nginx, başınızı ağrıtmadan uzun illər ağır yük altında işləyə bilər. Necə qurulur? Nginx yükləmək çətindir mi? Linux üzərində qurulumu paket idarəedicisindən hər hansı bir proqram qurmaqdan daha çətin deyil. Paket idarəedicinizdə müasir versiya mövcud deyilsə yenə http://nginx.org/en/linux_packages.html#stable ünvanındakı rəsmi nginx repolarından istifadə edərək yükləyə bilərsiniz. Qurduqdan sonrakı tənzimləmələrin də Linux-la tanış olan insanlar üçün çox da çətin olmayacağını düşünürük. Nginx-i xüsusiləşdirmək, fərqli modullar əlavə etmək istəyirsinizsə yükləməni Nginx-in mənbə kodlarından istifadə edərək reallaşdırmalısınız. Bu da yenə lazımi məlumata malik şəxslər üçün çətin bir prosedur deyil. Qısa qeydlər HTTP/2 dəstəkləyir. SSL/TLS və SNI dəstəyi var. Asanlıqla HTTP Basic Authentication tənzimləyə bilərsiniz. Nginx-ə configlərdə göstərilməyən bir server_name (domen adı ya da ip) ilə müraciət gəlsə configdəki ilk “server” altında prosedura alınır. Xətaların qarşısını almaq üçün “00-default.conf” kimi bir adla default site tənzimləməsini etməlisiniz. 2018 Aprel statistikasına görə istifadəsi sürətlə artmağa davam edərkən yüksək trafikli saytların 25%-dən çoxunda istifadə edilir. Nginx Inc. tərəfindən yaxın zamanda elan edilənAmplify adlı məhsul ilə Nginx serverlərini “monitorinq” edə bilərsiniz. Nginx olduqca RAM dostu bir proqramdır. 2 Core və 2 GB Ram kimi konfiqurasiyalar ilə kifayət qədər yüksək trafikləri idarə edə bilərsiniz. Eyni server üzərində həm Nginx həm də PHP-FPM işlədəcəksinizsə proxy modulu yerinə FASTCGI modulunu istifadə edə bilərsiniz. FPM-ləri TCP deyil, “soket” modunda işlədə bilərsiniz. Alternativlər Yuxarıda da qeyd edildiyi kimi Nginx, bir çox fərqli məqsəd üçün istifadə edə biləcəyiniz bir proqramdır. Təbii ki, Nginx-in fərqli işlər üçün bir çox fərqli alternativi mövcuddur. Məsələn bir PHP layihəsini işlətmək üçün Apache Server qura bilərsiniz. “Load Balancing” və “Caching” üçün Varnish istifadə edə bilərsiniz. TCP Load Balancer olaraq Haproxy ya da cache serverləriniz üçün Twemproxy istifadə edə bilərsiniz. Hər xüsusi sahə üçün bunların üstünlükləri və mənfi cəhətləri ola bilər. Dəqiq bir seçim edə bilmək üçün ehtiyacların və imkanların yaxşı analiz edilib ona görə bir dəyərləndirmə etmək lazımdır. Nəticə Nginx çox kiçik, çox sürətli işləyən ancaq bacarıqları da olduqca çox olan bir proqramdır. İstifadə edilməsi bəzi hallarda məcburiyyət, bəzi hallarda seçim əsasında ola bilər. Ancaq hər iki halda da bir veb proqramçının ya da sistem administratorunun Nginx-in bacarıqlarını mütləq şəkildə çox yaxşı bilməli olduğunu düşünürük.

İnternetin ən möhtəşəm mafiası - Paypal Mafia nədir?

2000-ci illərin əvvəllərində internetin yaratdığı partlayış ilə birlikdə, dünyanı internet vasitəsilə ilə dəyişdirməyə çalışan insanların sayı həddindən çox idi. Lakin boo.com, startups.com kimi 100 milyonlarla dollar investisiya alsa da iflas etmiş şirkətlər, Amazon-un NASDAQ-dakı hissələrinin 107 dollardan 7 dollara qədər düşməsi bu kimi insanlardan bir çoxunda həvəssizlik yaratmışdı. Bütün bunlar olmazdan bir neçə il əvvəl, 1998-ci ildə Peter Thiel və Max Levchin-in Stanford yaxınlarında yedikləri bir nahar zamanı başlamağa qərar verdikləri PayPal şirkəti, hələ xəbərləri olmasa da onlar üçün böyük, insanlıq üçün isə çox daha böyük bir addım olacaqdı. Necə? 2002-ci ildə eBay, Paypalı satın aldıqdan sonra, bugün günümüzün startupçıların bir çoxunun örnək aldığı PayPal komandası, tək-tək eBay-dən ayrıldılar və yeni xəyallarının arxasıyca qaçmağa başladılar. Əslində bir çoxunun adlarını bildiyimiz bu super insanlar kimdilər? PayPal Mafia nədir? Onları tanımaq nə üçün bu qədər vacibdir? Yazımın son bölməsində soruşduğum son sualın cavabını hamımız anlayacağıq. Lakin heç bir maddi qaynağı olmadan gözəl işlər görmək istəyən bir neçə “dəlinin” bu qədər uğurlu olmalarnı və gündəlik həyatımızda daima istifadə etdiyimiz məhsulların bir çoxunda əməklərinin keçdiyinin nümunəsini gətirsəm məncə bu sualıma qısa bir cavab vermiş olaram. PayPal-ı fərqli edən nə idi? Bizə ən çox dərs olacaq mövzu, zənnimcə bu cavabdan çıxacaq. Thiel və Levchin-in bəlkə də BitCoin-in atası olaraq adlandıra biləcəyimiz məhsullarını və bu işə başladıqları zamanı düşündüyümüzdə onsuz da nə qədər uzaqgörən insanlar olduqlarını başa düşürük. Bu iki adamın öz şirkətlərinə keçmişləri hər nə olursa-olsun, sadəcə özlərinə oxşayan adamları daxil etməkləri də diqqət cəlb edən digər məqamlardandır.  “All of this is about self-selecting for people just like you.” Levchin. Thiel ve Levchin-in PayPal-da yaratdıqları şirkətdaxili ekosistem, o vaxtlar mövcud olan digər şirkətlərə görə olduqca fərqli idi. Bu cür bir şirkət içərisində yetişən insanların belə qeyri-adi işlər görmələri də əslində təbii bir nəticədir. Şirkətin olduqca kritik qayda olaraq adlarından David Sacks-ın no-unnecessary-meeting qaydası və onun sanki şirkətin içində polislik etməsi də şirkət içi ekosistemi fərqli edən ünsürlərdən biridir. Bəs Elon Musk necə? Hekayənin maraqlı hissəsi də burada başlayır. Orta statistik ailələrin qeyri-adi saya biləcəyimiz övladları Thiel və Levchin-in, ətraflarında özlərinə inanılmaz oxşar profillərdən olan işçiləri toplamışkən, Elon Musk adlı biri ilə qarşılaşmaqları və onunla ortaq olmaqları əslində məni ən çox təəccübləndirən şeylərdən biridir. Sizlərə biraz bu hekayədən danışmaq istəyirəm. X.com (o vaxtlar email payment sistemi hazırlamağa çalışan Elon Musk-ın şirkəti), PayPal ilə ortaqlığa başlayır. Lakin PayPal markası o qədər güclü olurr ki, X.com, PayPal-la birləşərək onun tərkib hissəsinə çevrilir. Bu birləşmədən sonra CEO olan Elon Musk, bütün ekosistemi Microsoft ekosisteminə çevirməyə başlayır.  Digər ortaqları bu vəziyyət olduqca narahat edir. Hər nə qədər bugünlərdə hələ də bir-birlərinin şirkətlərinə investisiya etsələr də və bir-birləri haqqında müsbət danışmağa çalışsalar da o günlərdən bəri əslində aralarındakı münasibətlər çox da yaxşı deyil. Sözügedən narazılıqlardan sonra ortaqlar təcili bir iclas keçirdərək CEO vəzifəsinə Thiel-i keçirirlər. Thiel-in liderlik üslubunu həm startupçı gənclərin, həm də bu sektorun əjdaha(!)larının dərs ala biləcəyi növdən bir üslub saya bilərik. PayPalda işləyən hər kəs şirkətin gəlirlərinə qədər bütün məlumatlara çata bilirlər. Bu günlərdə haqqında heyranlıqla oxuduğumuz və həyəcanlandığımız  PayPal daxili şirkət ierarxiyası hələ o vaxtlar Thiel tərəfindən tətbiq edilir. Hər kəs ağlına gələn hər fikrin dəyərləndiriləcəyini başa düşür və şirkəti sahiblənir. 2002-ci ildə PayPal artıq IPO-ya çıxmış, yəni xalqa açılmış bir şirkət halına gəlmişdi. Məhz bu ərəfələrdə eBay-dan gələn 1,5 milyard dollarlıq təklif, şirkəti və komandanı bu çətin qərarı verməyə məcbur etmişdi. PayPal-ın hazırki dəyərinin təxminən 46 Milyard olduğunu nəzərə alsaq, Thiel-in bu satış ilə bağlı nə üçün peşman olduğunu anlaya bilərik. PayPal əgər eBay-ə satılmasaydı, PayPal Mafia komandası bugün online ödənişlər mövzusunda nə kimi inqilabi yeniliklər edərdi, hər kəsə maraqlıdır. Visa və MasterCard-ın son 10 ildir haradasa heç bir innovasiyaya imza atmadığını nəzərə alsaq, bəlkə də PayPal bugünün ən böyük şirkətlərindən biri olacaqdı. Digər bir yandan, şəxsi fikrimə görə PayPal-ın satılması çox yaxşı olub. PayPal Mafia komandası bir-bir eBay-in asılılığından çıxaraq bugünki yerlərinə gəlib çıxıblar. İnternet dünyası gözümüzün qarşısında bir inqilab yaşayır və buna şahidlik edə bilməyimizin ən böyük vasitəçiləri elə bu komandadır. Yaxşı bəs Bu Adamlar kimdir? Adlarını, tək-tək nə işlər gördüklərini deməzdən əvvəl bunu demək istəyirəm ki, bu insanların hamısının kemişlərini, internetdəki çıxılarını izləməkdə fayda var. Adını çəkməyəcəyim digər mafia üzvlərinə də üzrxahlığımı bildirmək istəyirəm. 1- Peter Thiel — PayPal Founder — CEO Hekayəmizin baş rol aktyoru Peter Thiel ilə başlamaq istəyirəm. Bir çox mənbədə Peter Thiel üçün “Don of the PayPal Mafia” bənzətməsini oxuya bilərsiniz. Əslində Thiel-in etdiklərini gördüyümüzdə bu bənzətmənin çox da səhv olmadığını görə bilərik. PayPal Qurucu Ortağı və CEO Palantir Qurucu Ortağı Clarium Capital-ın Rəhbəri Founders Fund-ın Managing Partner-ı Facebook İnvestoru ( %10,2 — $500K) İnvestisiyalarından bəziləri; Slide, Linkedin, Yammer, Yelp, Asana, Quora… Machine Intelligence Research Institute dəstəkçisi və investoru Anti-aging Research dəstəkçi və investoru 2- Max Levchin — PayPal Founder — CTO Baş rolumuz Thiel-ın bu hekayəni tək canlandırmadığını hər birimiz bilirik. Max Levchin də Mafianın ən böyük üzvlərindəndir. Slide Qurucusu (2010-da $180 Milyona Google-a satdı.) Yelp Mələk İnvestoru və ən böyük hissədarı, sədr HVF (Hard, Valuable, Fun) Qurucusu Affirm Qurucu və CEO-su Thank You For Smoking filmi rejisoru 3- Elon Musk — X.com Founder —PayPal CEO Thiel və Levchin-dən sonra yoxsa əvvəl paylaşmalı olduğuma əmin ola bilmədiyim bu möhtəşəm insan, günümüzün real IronMan-idir. Onun həyatını bir blog yazısına sığdıra bilmərik amma qısa bir baxış atası olsaq: SpaceX Qurucusu, CEO, CTO(İnsanları Marsa göndərəcək! Eyni roketi bir neçə dəfə istifadə etmək mümkündür!) Tesla Motors Qurucusu, CEO, CPA(Chief Product Architect) (Bütün patentlər ödənişsiz olaraq hərkəslə paylaşılır!) SolarCity Qurucu Ortaq, Direktor (Neft hegemonluğunun sonu gələcək!) 4- Reid Hoffman — PayPal COO Linkedin Qurucusu, CEO İnvestisiyaları; Zynga, Flickr, Digg, Last.fm, Edmodo, Yazıçı 5- Roelof Botha — Former PayPal CEO, CFO Sequoia Capital İdarə heyətində olduğu şirkətlər; Jawbone, Eventbrite, Evernote, Tumblr, Weebly, Unity, Xoom 6- Jeremy Stoppelman — PayPal Engineering VP Yelp Qurucusu 7- Chad Hurley & Steve Chan — PayPal Web Designer & PayPal Engineer Youtube Qurucuları 8- David Sacks — Former PayPal CEO Yammer Qurucusu Geni.com Qurucusu 9- Dave McClure— PayPal Marketing Director 500 Startups Qurucusu

PHP istifadə edərək MySQL məlumat bazasının nüsxəsini çıxarmaq

Məlumat bazalarının nüsxəsini çıxarmaq, hər proqramçı üçün mütləq sayılan prosesslərdəndir. Mütəmadi olaraq məlumat bazalarını kopyalamaq, data itkisinin qarşısını alır və hər hansı bir problem yarandıqda məlumat bazasını geriyə yükləməyə şərait yaradır. Bu səbəbdən də, mümkündürsə tez-tez məlumat bazalarının nüsxəsini çıxarmaq ağıllı bir addım sayılır. Əslində mySQL məlumat bazasını bir fayla köçürməyin bir çox yolu var. Adətən hostinq provayderlərinin idarə panellərində bunun üçün müəyyən bir bölmə mövcud olur və siz sadəcə bir kliklə məlumat bazasının klonunu çıxara bilərsiniz. Lakin aşağıda qeyd edəcəyimiz metodla siz PHP istifadə edərək də mySQL məlumat bazasının nüsxəsini asanlıqla yarada bilərsiniz. Bəs hazır panel vasitəsilə yox, PHP vasitəsilə məlumat bazasının nüsxəsini çıxarmaq bizə nə kimi üstünlüklər verir? Yuxarıda qeyd etdiyim idarəetmə panellərində mövcud olan nüsxələmə prosessi sizə hər dəfə ayrı bir iş yükü yaradacaq. Məsələn nüsxə çıxarmağı unutduğunuz vaxtlar ola bilər. Bu vaxtlarda yaşayacağınız hər hansısa bir problem zamanı məlumatları geri qaytarmaq kimi şansınız olmayacaq. Ancaq məlumat bazasını aşağıda göstərəcəyimiz üsuldan istifadə edərək, bu işi görəcək PHP faylı da bir cron-a əlavə edərək (məsələn: hər gün saat 24:00-da avtomatik fayl işə düşsün) bu proseduru avtomatikləşdirə bilərsiniz. Kodları birdəfə əlavə etdikdən sonra hər gün avtomatik olaraq nüsxələr əldə etmiş olacaqsınız. PHP istifadə edərək MySQL məlumat bazasının nüsxəsini çıxarmaq Bu yazımızda yuxarıda qeyd etdiyimiz prosess üçün lazım olan bütün PHP kodları backupDatabaseTables() funksiyasında bir araya gətirəcəyik. backupDatabaseTables() funksiyasını istifadə edərək müəyyən table-ları və ya bütün table-ları bir məlumat bazasının nüsxəsini asanlıqla SQL faylına yaza bilərsiniz. Hər hansı bir MySQL məlumat bazasını PHP istifadə edərək kopyalamaq üçün sizə aşağıdakı parametrlər lazımdır. edekleme için gerekli tüm PHP kodlarımı backupDatabaseTables() fonksiyonunda birlikte toplayacağım. backupDatabaseTables() fonksiyonunu kullanarak belirli tabloları veya tüm tabloları bir veritabanından kolayca yedekleyebilirsiniz. MySQL veritabanını PHP kullanarak yedeklemek için aşağıdaki parametreler gereklidir. $dbHost – Mütləq. Məlumat bazasının serverini bildirir. $dbUsername – Mütləq. Məlumat bazasının istifadəçi adını bildirir. $dbPassword – Mütləq. Məlumat bazasının şifrəsini bildirir. $dbName – Mütləq. Nüsxəsini çıxarmaq istədiyiniz məlumat bazasının adını bildirir. $tables– İstəyə bağlıdır. Sadəcə vergül ilə ayrılmış table adlarının nüsxəsini çıxarmaq üçün istifadə edilir. Bütün məlumat bazasının nüsxəsini çıxarmaq üçün bu parametrdən istifadə etməyin. <?php /** * @function    backupDatabaseTables * @author      itcity.academy * @link        https://itcity.academy * @usage    PHP istifadə edərək MySQL Məlumat bazasını kopyalamaq */ function backupDatabaseTables($dbHost,$dbUsername,$dbPassword,$dbName,$tables = '*') {    //database məlumatları    $db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);    //bütün table-ları alaq    if($tables == '*') {        $tables = array();        $result = $db->query("SHOW TABLES");        while($row = $result->fetch_row()) {            $tables[] = $row[0];        }    } else {        $tables = is_array($tables)?$tables:explode(',',$tables);    }    //table-lar daxilinə baxaq    foreach($tables as $table){        $result = $db->query("SELECT * FROM $table");        $numColumns = $result->field_count;        $return .= "DROP TABLE $table;";        $result2 = $db->query("SHOW CREATE TABLE $table");        $row2 = $result2->fetch_row();        $return .= "\n\n".$row2[1].";\n\n";        for($i = 0; $i < $numColumns; $i++){            while($row = $result->fetch_row()){                $return .= "INSERT INTO $table VALUES(";                for($j=0; $j < $numColumns; $j++){                    $row[$j] = addslashes($row[$j]);                    $row[$j] = ereg_replace("\n","\\n",$row[$j]);                    if (isset($row[$j])) { $return .= '"'.$row[$j].'"' ; } else { $return .= '""'; }                    if ($j < ($numColumns-1)) { $return.= ','; }                }                $return .= ");\n";            }        }        $return .= "\n\n\n";    }    //faylı yaddaşa verək    $handle = fopen('db-backup-'.time().'.sql','w+');    fwrite($handle,$return);    fclose($handle); } ?>   İstifadəsi: MySQL məlumat bazasının nüsxəsini yaratmaq və bir SQL faylı olaraq yadda saxlamaq üçün  backupDatabaseTables() funksiyasını istifadə etmək kifayətdir.   backupDatabaseTables('localhost','root','*****','dbname);   Sual, fikir və təkliflərinizi Facebook səhifəmizdən bizə ünvanlaya bilərsiniz.