Kafası karışık bir yazılımcı adayı için yol tavsiyesi

Öncelikle herkesi selamlıyorum. Biraz uzun bir yazı olabilir şimdiden kusuruma bakmayın. Web Program ve tasarım üzerine yaklaşık bir yıldır çalışmalar yapıyorum. Klasik Html Css ile başladım orta seviyeye kadar ilerlettim sonra bir durdum. Acaba ben ne için bunu öğreniyorum diye. Başlangıçta klasik freelancer işleri içindi sonradan tekrar düşündüm, kariyer olarak planlamıyordum bu işi üniversitede ek gelir olarak düşünüyordum. Wordpresse yöneldim yaklaşık 5 - 6 iş yaptım. İyi tamam güzelde şapkayı tekrar koymalıyım önüme diye düşündüm. Üniversite de bölümüm Felsefe ve kafamda yapmak istediğim şeyler tabi ki var. Fakat sonradan dedim ki neden bunları 3,5 Milyar ve her dakika sürekli artan aktif insanın bulunduğu platformda yapmayayım. Kafamda projeyi tasarladım kendi önüme en az 2 yıllık bir süre koydum. Bu süreçte hem gerekli yazılım eğitimini hemde proje için gerekli araştırma, analizi öğrenmeliyim. Proje hakkında cok bilgi veremeyeceğim ama gelir amacı olmayan bir eğitim platformu şeklinde olabileceğini söyleyebilirim ve çok karmaşık senaryolar öngörülebiliyor daha şimdiden ki kendisi de bayağı bir karışık olacak. Sonradan tekrar düşündüm(Ne cok düşünüyorsun ya sende :D). Proje klasik bir kalıpta değil farklı bir şekilde olacak ve bunu tamamını benim yapmam gerekecek. Bunun için araştırmalar yaptım altyapısını algoritmasını nasıl belirleyebilirim diye. Web progrlama dili Php ile tanıştım veritabanları ile çalışmayı öğrenmeye başladım. Sonra bir takım sebeplerden dolayı ara verdim daha hırslı şekilde geri döndüm. Php’ de mesela basit bir blog yazabilecek kadar derme çatma eğittim kendimi. Ama daha sonraları bana bir şahıs python öğrenmemi söyledi nedeni ise daha güvenli daha az karmaşık ve daha çok kullanışlı ve araçlarının bol olduğunu. İyi dedim bende olur hemen yapayım :D. Baktım python programlama dili Php ile arasında fark var bayağı. İstihza ile başladım youtube udemy vs. Phpden öğrendiklerim ile daha hızlı öğrenebiliyordum bi yere kadar. Frameworkleri kütüphaneleri araştırdım. Bayağı hoşuma gitti. Güvenliğini öve öve bitiremediler. Ama şimdi iki arada bir derede kaldım. Sözün özü python ile bir framework kullanıp web platformuna geçene kadar pythonu baya bir kapmalıyım ki sağlıklı olsun. Fakat şöyle bir şeyde var php ile devam edip direk web üzerinden de bunu pythona nazaran daha hızlı yapabilme olanağımda var. Kaynak açısından, artıları eksileri vs. daha önceden deneyimi olanlar bir yol gösterebilirse çok iyi olur. Şimdiden Teşekkürler.

Kısa bir süre php öğrenmeyi denedim ama yeterli temeli ve isteği oluşturamadığım için bıraktım. O yüzden diyorum ki eğer kendi sitenizi kuracaksanız şimdi php kullanarak yazın. Ama python öğreniminize de devam edin. Gerekli python frameworkü öğrendikten sonra karşılaştırıp siz karar verirsiniz.

Cevap için teşekkürler. Başka tavsiyeleri olan var ise çok iyi olur benim için en azından deneyim sahibi olanların tavsiyesi altın değerinde olabilir.

1 Beğeni

hocam yazı dediğiniz gibi uzun olmuş ama hepsini üşenmeden okudum ve kendimi gördüm bu yazıda. hatta yazıyı yazan kişi benmiyim diye tekrar tekrar baktım yani :smile: :smile:
hocam benim size tavsiyem php ile devam etmeniz. python gerçekten çok güzel bir dil ama framework konusunda yeterli kaynağı ve örnek projeleri bulmanız zor. ayrıca proje kapsamlı olduğuna göre ilerde bu iş için ekip lazım ve bu ekibi python bilenlerden toplaman çok zor çünkü herkes o yetkinlikte değil. php bilen kişi saysı daha fazla ve daha çabuk ekip toplarsınız. son söz olarak birinden başlayın ve bırakmayın. ben şuan itibariyle öyle yapacağım çünkü.

@pipks, PHP bilenlerin Python bilenlerden fazla olduğunu söylemenize katılmakla birlikte Python framework’leri konusunda yeterli kaynak ve örnek proje bulunamayacağını söylemenize katılmıyorum. Hele ki Django varken. Ki Python bilenlerden bir ekip toplanacak olsa şu anki durumda çok da sıkıntı yaşanacağını sanmıyorum. GitHub’ın 2017 yılı için yayınladığı istatistiklere bakarsanız popülerlikte Python’ın PHP’ye göre açık ara önde olduğunu görürsünüz: https://octoverse.github.com/ Ayrıca PHP bilmek ayrı, bir PHP framework’ünü bilmek ayrı. Bir sürü PHP framework’ü var, ancak Python framework’ü diyince büyük ihtimalle Django kastediliyordur. Python’ın PHP’ye göre öğrenmesi daha kolay bir dil olduğunu da unutmayalım (Başlangıç olarak en azından.).

İyi çalışmalar.

üstad sanırım eleştirilerinizde haklısınız ama ben olaya ülke içerisindeki durumdan baktım. yani proje eğitim ile ilgili olduğu için Türkiyeye yönelik olacağını ve bu neden ile oluşturulacak ekip için gerekli teknik desteğin yakalanması daha kolay olur diye düşündüm. yoksa dünya genelinde dediğiniz gibi Python daha popüler ama ülkemizde maalesef durum iç açıcı değil.

Framework konusunda evet PHP ile farklı birçok framework var ama Python için de hatırı sayılır framework sayısı artıyor gibi.

bence mevcut durumda kafası karışık biri için en uygun yol web projeleri için PHP, daha yaratıcı projeler için Python ile ilgilenmek daha doğru gibi. ben bu yolu izlemeyi düşünüyorum. hatalı olduğum konularda yorum yaparsanız çok sevinirim.

Aylar önce ne güzel şeyler yazmışım öyle :smile:. Fakat kısa bir zaman dilimi içinde yaşadığım sorunlar pythonın genel bir dil olmaya çalışırken bir çok eksiklikle başardığını farkettim. Tkinter ve Urllib paketleri üzerinde hissettiğim bu eksiklik sanıyorum diğer paketlerde de vardır.

Bir noktada seçim sadece kişinin kişisel zevklerine kalıyor. İnsan ikisine de bakmalı; PHP’yi sevdiyse PHP ile, Python’ı sevdiyse Python ile yoluna devam etmeli. Sonuçta ikisi de aynı kapıya çıkan farklı yollar. Önemli olan kararlı olup oradan oraya atlayıp durmamak.

Ne gibi eksiklikler hissettiniz Tkinter ve Urllib ile ilgili?

İyi çalışmalar.

Bu konu ve urllib de videoları parça parça indirme.

@hasser, Tkinter’da bazı özelliklerin eksik olduğuna katılıyorum. Ancak her yazılım gibi Tkinter’da da eksikler bazı hilelerle ya da kodda değişiklikler yaparak düzeltilebilir. Ayrıca Tkinter normal sayılabilecek masaüstü uygulamaları oluşturmak için tasarlanmış bir grafiksel arayüz kütüphanesidir. Farklı amaçlar için(örneğin; kod renklendirme ya da HTML sayfalarını gösterme) kullanılırsa amacınıza ulaşmanızı zorlaştıracaktır. Bu durumda PyQt ya da PyGTK gibi daha gelişmiş arayüz kütüphanelerini kullanmalısınız. Aynı şekilde eğer grafiksel arayüzlü bir oyun yapacaksanız da Tkinter’ı kullanabilirsiniz, ancak pygame’i kullanmanız işinizi kolaylaştıracaktır. Bu arada Tkinter kullanırsanız kullanıcınızı grafiksel arayüz kütüphanesini kurmaktan kurtaracağınızı da unutmayın; çünkü Tkinter Python içinde zaten var.

Urllib’de vidyoları parça parça indirmekten neyi kastettiğinizi anlayamadım. Ancak böyle bir kısıt varsa ya genel ağ ile ilgili bir kısıtlamadır ya da tümünü birden indirmenin bir yolu vardır. Bir örnek verirseniz araştırıp öğrenebiliriz.

İyi çalışmalar.

Youtube videolarından mı bahsediyorsunuz bilmiyorum ama yine de ek bilgi olarak bulunsun burada.

urllib ile youtube’dan aşağıdaki gibi video çekmeye çalışırsanız hata alırsınız. Aşağıdaki yöntem her site için olumlu sonuç vermiyor.

Mesela şu başlıkta Hamid Bey bir örnek vermiş, o örnek için indirme işlemi yapılabiliyor.

ama mesela https://docs.scipy.org/doc/scipy-0.16.0/scipy-ref-0.16.0.pdf adresindeki pdf dosyasını indirmeye çalışırken sertifika hatası veriyor.

from urllib.request import urlretrieve
link = "https://www.youtube.com/watch?v=1zY3W2AicsM"
urlretrieve(link, "xxx.mp4")

from urllib.request import urlretrieve
link = "https://docs.scipy.org/doc/scipy-0.16.0/scipy-ref-0.16.0.pdf"
urlretrieve(link, "xxx.pdf")

# Alınan hata sertifika hatası.
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:720)>

Sertifika hatasını ssl modülünü kullanarak önleyebiliriz. Ancak aşağıdaki yöntemi youtube’dan video çekmek için kullanamayız. Hata vermez ancak istediğimiz video dosyasını da indirmez, birşeyler iner ama o inen şey video dosyası değil.

from urllib.request import urlopen
import ssl


def url_open(url, file):
    data = urlopen(url=url, context=ssl.SSLContext(ssl.PROTOCOL_SSLv23))
    with open(file, "wb") as f:
        for i in data:
            f.write(i)


if __name__ == "__main__":
    url_open(url="https://docs.scipy.org/doc/scipy-0.16.0/scipy-ref-0.16.0.pdf", file="scipy.pdf")

Bu pdf dosyası urlretrieve ile indirilemezken, yukarıdaki yöntemle indirilebiliyor.

Youtube videoları indirme işlemi için youtube-dl isimli bir paket var, terminal üzerinde çalışır. Bu paketi kullanan pafy isimli başka bir modül de var ve onunla script üzerinden indirme işlemi tanımlayabilirsiniz. pafy modülünü kullanarak birçok video indirdim. Şuan python2 ile halen pafy’yi kullanabiliyorum ancak nedense python3’de hata vermeye başladı. Ben de başka bir yöntem deneyeyim dedim:

import os


def indir(link):
    os.system("youtube-dl --no-check-certificate {}".format(link))


if __name__ == "__main__":
    ornek_playlist = "https://youtu.be/Vr0g2EgWdXI?list=PLiEdIqnyUqDDyqd8OtM-03axfN1uqlwN_"
    indir(ornek_playlist)

Bu yöntemi şu şekilde kullanabiliriz; video linklerini bir text dosyasına kaydederiz ve text dosyasındaki bütün linkleri indiririz:

import os


def indir(link):
    os.system("youtube-dl --no-check-certificate {}".format(link))


def dosyadakileri_indir(dosya_ismi):
    with open(dosya_ismi, "r") as dosya:
        for i in dosya.readlines():
            indir(i)


if __name__ == "__main__":
    dosyadakileri_indir("links.txt")

Yukarıdaki yöntem işe yarıyor, işe yarayan başka yöntemler de vardır diye tahmin ediyorum.

Şu anda kafamda bir tarayıcı fikri var. Kullanıcı tarayıcıyı açıp bir film izlemeye kalktığında urlretrieve fonksiyonunu kullanarak indirmeye çalıştığımızda bu çok uzun bir zaman alacak ama her seferinde 10 saniyelik bir bölümünü indirirsek çok daha faydalı olur.

Urllib HTTP protokolüne göre davranıyor olmalı. HTTP protokolüne göre bir
kısmını indirme diye bir şey yok bildiğim kadarı ile. youtube-dl programı
bunu yapar mı diye araştırdım ama bir şey bulamadım. İndirmeyi belirli bir
noktada kesmek gibi sıkıntılı çözümler sunmuşlar.

19 Eki 2017 Per 17:17 tarihinde hasser noreply@forum.yazbel.com şunu
yazdı:

Yukardaki youtube-dl programini denedim sorunsuz videonu indirdi fakat ben linux kullaniyorum bu programinda kendisi zaten youtubeden program indirmeye yaryor qaliba o yuzden windowsda calismaz calisirsada programin bilgisayarda olmasi gerekir

Windows’da da çalışıyor. Dediğiniz gibi modülü indirmek yeterli.

pip install youtube-dl
1 Beğeni

@Efrahim, şu siteye bakarsanız youtube-dl’nin Windows için bir
çalıştırıcısı olduğunu görebilirsiniz: https://rg3.github.io/youtube-dl/

19 Eki 2017 Per, 23:53 tarihinde, Efrahim noreply@forum.yazbel.com şunu
yazdı:

youtube-dl’yi script içine de dahil edebiliriz:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import youtube_dl


def indir(link):
    ydl_opts = {"nocheckcertificate": True}
    with youtube_dl.YoutubeDL(ydl_opts) as ydl:
        ydl.download([link])


def dosyadakileri_indir(dosya_ismi):
    with open(dosya_ismi, "r") as dosya:
        for i in dosya.readlines():
            indir(i)

Bir ara bende youtube dl kullandım video listesinin urlsini eklediğimde tek tek indirdi hepsini