folder Tahribat.com Forumları
linefolder Asp - Php - Cgi - Perl
linefolder Yazılımla İlgili Birkaç Soru Yeni Projem İçin Üstadlardan Akıl Alayım (Mobil Ve PHP İçerikli Sorular)



Yazılımla İlgili Birkaç Soru Yeni Projem İçin Üstadlardan Akıl Alayım (Mobil Ve PHP İçerikli Sorular)

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Nvidia
    Nvidia's avatar
    Banlanmış Üye
    Kayıt Tarihi: 13/Nisan/2013
    Erkek

    Hocalar şimdi yeni bir projeye girişiyorum bu  projeyide  php ile yazıcam. ama  projenin mobil ayağıda  olacak bu mobil ayağını json  çıktısı vs  ler ile  yapabiliyorlar yani bi webservis kullanıp rss feed den bile  içerik çekebiliyorlar. Benim projeye dha  başlarken  mobil için çıktı almak adına  yapmam gereken birşey var mı? Yani şunları en başta yap sonra  sıkıntı  çekme dediğiniz veya  rss feed  json  çıktısı vs  nin haricinde  şu şekilde daha  basit  olur dediğiniz  bir yol var mı ?

    NOT: json  rss feed  çıktısnıda  nasıl alacağımı bilmiyorum açıkçası :D  ama  öğrenicez bi şekilde

    ** konuyu gizliyorum dışardan  takip edenler  soruyor sonra ne  projesi falan filan  diye  kimseye bi bok anlatasım yok


    Milyarlarca yıl ölüydüm dirildim ve tekrar dirilmemek üzere öleceğim günü bekliyorum!
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    JPriest
    JPriest's avatar
    Kayıt Tarihi: 09/Mart/2007
    Erkek

    Service oriented architecture, microservices, katmanlı mimari. Bu üç kavrama bakmadan başlama derim. 


    Sen hiç kaval çaldın mı?
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Mobil de Json çıktı alacaksan SOA ya kesinlikle bakman lazım. Web servis den Header ile bile veri gönderebiliyorsun mantık aynı . Curl ile aldığın veriler var ya php de aynı şekilde mobil taraflı sitenin çıktısını Json olarak alıp header body falan ayrıştırıyorsun.. Header ve body ile bile veri gönderebilirsin. güvenlik tarafında iyi oluyor genelde. Sorun olursa pm deyim hocam . Basit birşey zaten çok zor değil fakat bazı olaylar var güvenlik tarafında . Servislerini gizlemen lazım 1 2. de url ler bulunsa bile veri çekmemeleri lazım Authentication yani . Projenin büyüklüğüne göre daha başka önlemler alınabilir konunu altına ufaktan konunun büyüklüğünden bahsedersen ek şeyler gerektirebilir. Satın alma işlemleri falan da olursa iş çok sıkıntıya girer. RESTFULL APİ lere de bakman lazım zaten ya REST Olur yada SOAP bu konu çok uzun yapacağın işe göre değişkenlik gösterebiliyor. + ları ve - leri var ikisinin de.

    SOA,REST,UDDI,WSDL Bu 4 veri işini görür zaten hepsi webServisin bacakları gibi bişey yanlış ifade de olabilir :D

     

    EDİT ;
    SOA=Service oriented architecture zaten yazılmış sorry :D

     

     

    MhmdAlmz tarafından 22/Haz/16 01:12 tarihinde düzenlenmiştir

    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Nvidia
    Nvidia's avatar
    Banlanmış Üye
    Kayıt Tarihi: 13/Nisan/2013
    Erkek
    JPriest bunu yazdı

    Service oriented architecture, microservices, katmanlı mimari. Bu üç kavrama bakmadan başlama derim. 

    bu üç kavram yalayıp yutayımmı diyorsun yoksa aşına  mı olayım  hangisi yeterli olur 

    ayrıca  önce  web  versiyonu yazıp  daha  sonra  mobil için  çalışma  yapsam  sıkıntı olur mu yoksa  daha en baştan  mobil uygulamaya yönelik kodlamam önemli mi ? Tada  en başta  önemsemezsem  acı  çekermiyim  mobil uygulamaya uyarlarken


    Milyarlarca yıl ölüydüm dirildim ve tekrar dirilmemek üzere öleceğim günü bekliyorum!
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Servislerin hazır olsun da mobili istersen 50 sene sonra yaz bişey farketmezsin bence :D


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    JPriest
    JPriest's avatar
    Kayıt Tarihi: 09/Mart/2007
    Erkek

    İlk soruna cevap: uzmanlaşmak aylarını alır, fikir sahibi olmak yeterli en azından. Birer ikişer sayfa okusan bir şeyler canlanacaktır kafanda.

    Diğer soruna kısa cevap: sonradan acı çekmek istemiyorsan en baştan mobili de düşünüp o şekilde kurgulaman lazım mimarini.

    Daha uzun cevap: Dilimin döndüğünce anlatmaya çalışayım, ama kesinlikle bilen birinden öğrenmen daha faydalı olacaktır senin için. Benim yazacaklarım yanlış/eksik bilgiler de içeriyor olabilir.

    Diyelim ki web uygulaması ile başladın, sql'leri böyle php kodlarının arasında yazdın, sorguların çalışıyor ve sistemin hizmet vermeye başladı diyelim. On numara da sistem oldu. Hadi arkada da MySql var diyelim. Bir süre sonra Oracle ya da PostgreSql'in senin için daha faydalı olacağına kanaat getirdin ve diyelim ki MySql'den Oracle'a taşınmaya karar verdin. İlk büyük problem burda başlar. 100 tane PHP dosyasında SQL yazdıysan gidip her bir dosyada tek tek güncelleme yapman gerekecek ve bir yerlerin bozulmadığından emin olmak çok da kolay olmayacak. Üstelik bunu başarmış olsan bile ileride Oracle'dan da vazgeçmeyeceğinin garantisi yok (bknz: Oracle lisans ücretleri :)) Bu problemi aşmak için ORM (Object-relational mapping) kullanmak akla gelen ilk çözüm olacaktır. Araya bir katman daha ekleyerek database'den bağımsız kodlar geliştirebileceksin artık.

    Artık daha iyi ve esnek bir sisteme sahibiz. Peki yeterli mi? Hatır. Database bağımsızlığını aştığımızı varsayalım ama dataların tek kaynağı database olmayabilir. İleride dosya sistemi, REST ve/veya SOAP webservice, message broker / queue, cache, NoSql db.. gibi yerlere de ihtiyaç duyulabilir. Buralardan veri okuman ya da buralara da yazman gerekebilir. Bunun için ORM de yeterli olmayacak. Sistem en başta sadece database'den çalışacakmış gibi tasarlanırsa, bunlardan herhangi bir tanesi bile işin içine girerse ne kadar çok editleme/güncelleme yapman gerektiğini hayal edebiliyorsundur. Kısaca demek istediğim data/persistance katmanını, sistemin geri kalanından izole edebilmelisin ve bağımsız çalışacak ayrı bir katmana çevirmeye uğraşmalısın. (katman, layer). Android client'ın ya da web client'ın data'nın nereden geldiği ile bir ilgisi olmaması lazım. Onlar sadece talep edecekler ve istedikleri şey önlerine gelecek.

    Data katmanını sistemin geri kalanından izole ettik diyelim. Artık ilk duruma göre çok daha iyi bir mimarimiz var. Peki yeterli mi? Tabi ki hayır. Çünkü hala iş yapan kısımlar ile kullanıcıya açılan arayüz (UI) iç içeler. En basitinden sisteme bir bootstrap giydirmeye çalışsan, database ya da işin kendisi ile ilgili kısımlara dokunmayacağının garantisi yok. Oysa tek ihtiyacımız bir miktar HTML/CSS olayıydı. Bunu sağlamak için de data katmanı dışında kalan sistemi yine en az iki katmana bölmemiz gerekiyor. Çook genel olarak arayüz ve iş mantığının döndüğü kısımlar diyebiliriz. Böylece arkada hangi persistance sistemi (RDBMS, NoSQL, Webservice, queue, file..) olursa olsun, arada ne işler ne manipulasyonlar dönüyor olursa olsun, arayüzde istedğin gibi taklalar atabilirsin. Reel hayattan aklıma gelen ilk örnek Wordpress temaları olabilir. Database'e hiç dokunmadan, arkada dönen blog sisteminde hiçbir şey aksamadan siteyi istediğin her gün yepyeni bir siteye çevirebilmene olanak sağlıyor adamlar. Temelinde bütün bu katmanları birbirinden max. bağımsızlık ile ayırmış olmaları yatıyor.

    Data, iş ve arayüz olarak sistemimizi katmanlara böldük ve çalışır olmasını sağladık. Artık ilk duruma göre çook daha iyi, daha önceki durumlara göre yine daha iyi durumdayız. Peki yeterli mi? Sadece web uygulaması istiyorsan yeterli ama mobil de olsun diyorsan hayır, sistemi geliştirmeye devam :)

    Mobil için neler yapmalı kısmına geçmeden önce bir virgül koyalım, buraya kadarkilerin doğru düzgün ifade edilmiş hallerini öğrenebilmen için birkaç keyword ekleyelim. Google'da bakarsan benim yazdıklarıma nazaran çok daha faydalı olabilecek şeyler bulabilirsin.

    • ORM (Object-relational mapping) tools
    • N-tier architecture / multitier architecture (aynı şeyler)
    • Three-tier architecture
    • MVC (Model View Controller)
    • MVP (Model View Presenter)
    • MVVM (Model View View Model)
    • Bonus: http://martinfowler.com/eaaDev/uiArchs.html

    Şu ana kadar hazırladığımız kadarıyla nurtopu gibi bir ORM tool'u da kullandığımız, n-tier architecture üzerine kurulu bir MVC uygulamamız var. M (Model) bizim sistemdeki data katmanına tekabül ediyor. V (View) komple arayüz tarafına denk geliyor (CSS, HTML, kısmen JavaScript, kısmen PHP). C (Controller) ise bu iki katman arasında bulunan, bütün iş mantığının döndüğü katman. 

    Tekrar ediyorum, şu yularıdaki listedeki her şeye düzgün kaynaklardan ayrıca bak. Birer ikişey sayfa da olsa faydalı olacaktır.

    Şimdi gelelim web dışındaki clientlara. Aynı sistemin native iOS, Android, Windows Phone, Windows masaüstü, Linux/Mac masaüstü ve otomobil konsolunda çalışan versiyonları da olsun istiyorsun. İlk paragrafta belirttiğim senaryoda çalışan sistemimize bunları istiyorsak çok acılı ve cefalı bir yola girmemiz gerekiyordu ancak son versiyonumuzda daha az emek ile çok daha kısa sürede ve esnek sistemler geliştirebileceğiz. Web uygulamasındaki view katmanının neye ihtiyacı varsa, diğer tüm clientların da en fazla onlara ihtiyacı var. Yani zaten iki farklı katman bizim ihtiyacımız olan her işi yapabiliyorlar. Aslında burda olay min. 2 farklı senaryoya ayrılıyor. 1. View' katmanının Controller katmanına doğrudan bağlı olduğu senaryo. Sonuçta aynı ekosistem üzerinde çalışıyorlar. 2. Controller katmanından faydalanacak olan tüm view (clientlar) controller'a doğrudan erişmek yerine bir API (Application Program Interface) üzerinden eriştiği senaryo. Sadece web için çalışıyorsan iki senaryo da uygun ancak diğer clientlar işin içine giriyorsa mecburen en baştan ikinci senaryoya uygun gitmen gerekiyor. SOA (Service Oriented Architecture) kısmı burada devreye giriyor. Hiçbir client data katmanına doğrudan erişemiyor, ancak iş katmanı üzerinden erişebilirler. İş katmanına da bir RMI (Remote Method Invocation) veya Restful service ya da SOAP Webservice üzerinden erişebilirler. @MhmdAlmz biraz bahsetmiş zaten.

    Eğer ödeme sistemleri/bankacılık seviyesinde bir güvenlik söz konusu değilse en temiz yöntem RESTful bir servis ile iş metodlarını dışarıya açıp, isteyen client'ın onları kullanmasına izin vererek devam etmektir. Buna web client'ın da dahil.

    Microservices denilen hede görece yeni bir akım ve henüz bizim topraklara tam anlamıyla uğramış değil. Başlangıç için yok sayabilirsin.

    Yukarıda yazdıklarım arasında gözünü korkutan bir şey varsa lütfen korkutmasın, toplamda en fazla 20-30 sayfa yazı okuyarak çoğu hakkında fikir sahibi olabilirsin. Ayrıca forumdaki bazı arkadaşlar Laravel diyeceğim için kızacaklar ama, Laravel kullanarak çok hızlı, esnek, güvenli ve basit bir şekilde bu sistemi ortaya çıkarabilirsin. (Not: Laravel bilmiyorum). Şöyle basit bir örneğe göz atabilirsin:

    https://selftaughtcoders.com/from-idea-to-launch/lesson-17/laravel-5-mvc-application-in-10-minutes/

    İlk postta PHP dediğin için yazı içinde PHP spesifik örnekler var ama bunların hiçbiri PHP'ye özel şeyler değil. Tamamı Java, .net, Ruby, Node.. gibi diğer platformlar için de geçerli.


    Sen hiç kaval çaldın mı?
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Çok güzel bi makale yazmış :D dediklerini uygula projeyi 20 sene geliştirir o dalda en iyi proje seninki olur her gün ekle sil güncelle diye diye öyle bi proje yaparsın ki :D basit ama çok sağlam bi proje yaparsın herşeye sen müdahale edersin :)


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    @Nvidia , Hocam Şuan Json falan çıktı alıp okuyabiliyorum bi uygulama da yaptım bununla ilgili. Eğer çözemedi isen Örnek bi uygulama üzerinden bakalım :)


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
Toplam Hit: 1063 Toplam Mesaj: 8
php mobil