İPUCU

Python Artificial Intelligence’da en çok kullanılan dildir ve gerekli dökümanların paylaşım alanlar burada paylaşılmaktadır.

Seçenekler

RSS Follower - Kolayca Siteleri Takip Edin - Ar-Ge

Gbmdpof - ait Kullanıcı Resmi (Avatar)
Kıdemli Yazılımcı
Üyelik tarihi:
09/2016
Mesajlar:
1.998
Konular:
157
Teşekkür (Etti):
197
Teşekkür (Aldı):
712
Ticaret:
(0) %
04-07-2018 22:35
#1
RSS Follower - Kolayca Siteleri Takip Edin - Ar-Ge
+Üyelik Adınız: Gbmdpof

+Programın İsmi: RSS Follower

+Programın Sürümü: 1.0

+Kullanılan Programlama Dili: Python 3.6

+Programın ve Kaynak Kodunun Adresi: https://bitbucket.org/efeaydin/rss-follower

+Açıklama: İnternette güzel kaynaklarla karşılaşıyorum ve ne bunları çoğunlukla birkaç gün içinde unutuyorum veya kaybediyorum. Ayrıca bazen bazı sitelere her seferinde girip yazıları okumak, her siteye tek tek girmek zor oluyor. Hem de bazen sadece bir sitede önemli bir şey paylaşılmış mı diye bakmak için bile gereksiz resimler, reklamlar açılıyor. Bu gibi durumlarda işimi kolaylaştırmak için takip ettiğim yerleri takip etmek için RSS feedlerinden yararlanan bir program oluşturdum. Takip ettiğiniz yerlerdeki yazıları Terminal üzerinden takibi zor bir şekilde size sunmak yerine bir web sitesi aracılığı ile görünümü ve takibi hoş bir şekilde size sunar, bunu da Sanic ile yapar. CSS Frameworkü olarak Sketelon kullanır.

+Gereksinimler: (requirements.txt içinde de verilmiştir)
Kod:
sanic
feedparser
jinja2
+Kullanım ve Kurulum:
Kod:
git clone https://bitbucket.org/efeaydin/rss-follower.git && cd rss-follower/
pip3 install -r requirements.txt
python3 rss-follower.py
rss-feeds.json adında bir dosya yaratın ve içine takip etmek istediğiniz yerleri JSON formatında isim:rss_url şeklinde girin. Bunun bir örneği (takip ettiği siteleri paylaştığı için Nigella'ya teşekkürlerimi iletiyorum) rss-feeds.example.json dosyasında mevcuttur. İsterseniz o dosyanın adını rss-feeds.json şeklinde değiştirerek Nigella'nın takip ettiği yerleri kullanabilirsiniz. Arından http://127.0.0.1:8000/ adresine gidin ve istediğiniz yerin üzerine tıklayın.

+Ekran Görüntüsü:
---------------------
~humanity is overrated~
BufGix, ALcatraz', Sessizer, TeamRound, k3~ Teşekkür etti.
babyalien - ait Kullanıcı Resmi (Avatar)
Tamamen Forumdan Uzaklaştırıldı
Üyelik tarihi:
06/2018
Mesajlar:
2
Konular:
0
Teşekkür (Etti):
1
Teşekkür (Aldı):
3
Ticaret:
(0) %
04-07-2018 22:44
#2
Gereksiz kütüphaneleri saymazsak güzel olmuş fakat,
  • bu gibi basit bir proje için Sanic gibi büyük bir web server kullanmak saçma olmuş. Python'un built-in web server'ı http.server daha uygun olurdu.
  • jinja2 de yine fazla kaçmış. string.Template veya f-string de aynı işlevi daha minimal bir şekilde yerine getirebilirdi.

Uh, elinize sağlık yine de ^^
Konu babyalien tarafından (04-07-2018 22:49 Saat 22:49 ) değiştirilmiştir.
Gbmdpof Teşekkür etti.
w4rn1ng - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
03/2018
Nereden:
"_T.C_"
Yaş:
18
Mesajlar:
168
Konular:
6
Teşekkür (Etti):
19
Teşekkür (Aldı):
36
Ticaret:
(0) %
04-07-2018 23:12
#3
eline sağlık hocam
--------------------- Türk'e İmkansız de, ve otur izle
r0ark - ait Kullanıcı Resmi (Avatar)
E-Mail onayı yapılmamış üye
Üyelik tarihi:
05/2018
Mesajlar:
67
Konular:
13
Teşekkür (Etti):
24
Teşekkür (Aldı):
63
Ticaret:
(0) %
04-07-2018 23:58
#4

Kaynak kodda gözüme çarpan birkaç madde var, öncelikle onlardan bahsetmek istiyorum:
  • İçeri aktarılan kütüphaneler bu tür basit bir uygulama için gereksiz.
    • Sanic yerine Python'ın hali hazırda bulunan http.server'ından yararlanabilirsiniz.
    • Jinja2 gibi ağır bir şablon motorunu bunun gibi küçük ve fazla bir şey gerektirmeyen projede kullanmak oldukça gereksiz. Bunun yerine PEP292'de tanıtılan template string'leri kullanabilirsiniz.
    • urllib.parse.unquote da aynı şekilde yersiz bir biçimde kullanılmış. URL'lerin genel yapılarına bakıldığında özel karakterlerden (ı, ş, *space*, vs.) kaçınıldığı görülür. Durum bu iken kullanıcının hiç değilse temel URL bilgisi olduğu varsayılmalıdır - bilgisayarla yeni tanışmış birisinin kalkıp da açık kaynak kodlu bir projeyi sıfırdan kurup kullanacağı beklenemez.
    • feedparser yine aynı şekilde gayet lüzumsuz bir kütüphane. RSS (Rich Site Summary/Zengin Site Özeti) temelde XML-vari bir formatta olduğundan xml.etree.ElementTree ile verimizin istediğimiz bölümlerini ayrıştırabiliriz.
  • Kodun okunabilirliği ve geliştirilebilirliği pek içler açıcı olmasa da fena değil.
    • Fakat 17 ve 30. satırları okurken ağlamadım değil.
    • Ayrıca PEP8'i tekrar okumanı tavsiye ederim.

Ana uygulama dışında değinmek istediğim birkaç nokta daha bulunmakta, bunlar:
  • CSS (Cascading Style Sheets) tamamen berbat.
    • normalize.css bunun gibi küçük ve sadece birkaç etiket bulunduran sayfalar için gereksiz. Sonuçta bu kadar küçük bir şey için kimse X-platform desteğini önemsemez.
    • Skeleton ise bunun gibi basit bir projede kullanılması için tasarlanan bir framework değil. Doğru düzgün grid kullandığın bile yok sayfada, herhangi bir CSS framework tamamen gereksiz.
  • HTML dosyalarında ise birden fazla şaşırdım.
    • İki şablonun da author ve description méta etiketleri boş. Unuttuğunu varsayıyorum.
    • İki şablonun da 9. satırındaki font URL'si yanlış, bu nedenle font yüklenmiyor sayfaya (gerçi doğru olsa bile normalize.css fontları da sıfırladığından bir işe yaramayacak da neyse).
    • Girdileri yazdırmak için liste etiketlerini kullanmalıydın, işleri çok daha kolaylaştırırdı.

Bunlar dışında gözüme takılan pek bir şey yok şimdilik. Yine de ellerine sağlık, kendini geliştirmen ve yorumumu dikkate alman dileğiyle.


~ n
BufGix, Gbmdpof, ALcatraz' Teşekkür etti.
TeamRound - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
01/2018
Nereden:
PC
Mesajlar:
1.236
Konular:
86
Teşekkür (Etti):
388
Teşekkür (Aldı):
240
Ticaret:
(0) %
05-07-2018 00:04
#5
Ellerinize Sağlık Hocam
---------------------
Akıl ve mantığın halledemeyeceği mesele yoktur.
r0ark - ait Kullanıcı Resmi (Avatar)
E-Mail onayı yapılmamış üye
Üyelik tarihi:
05/2018
Mesajlar:
67
Konular:
13
Teşekkür (Etti):
24
Teşekkür (Aldı):
63
Ticaret:
(0) %
05-07-2018 00:05
#6
Alıntı:
babyalien´isimli üyeden Alıntı Mesajı göster
Gereksiz kütüphaneleri saymazsak güzel olmuş fakat,
  • bu gibi basit bir proje için Sanic gibi büyük bir web server kullanmak saçma olmuş. Python'un built-in web server'ı http.server daha uygun olurdu.
  • jinja2 de yine fazla kaçmış. string.Template veya f-string de aynı işlevi daha minimal bir şekilde yerine getirebilirdi.

Uh, elinize sağlık yine de ^^

Aslına bakarsanız f-string kullanmak bu durumda aptalca olurdu. Nedeni ise bunun gibi küçük projelerde genelde bir template dosyasını birden fazla script kullanır, bu durumda template dosyası shared object olduğundan kendi dosyasında bulunması en iyi seçim olacaktır.

Onun dışında, Sanic çok da büyük bir web server değil. GH'da sadece 1.7K commit bulunmakta ve dosyalarının çoğu 100-400 satır arasında değişiyor. Çok daha büyük ve işlevsiz web serverlar görmüşlüğüm var.
ALcatraz' Teşekkür etti.
Gbmdpof - ait Kullanıcı Resmi (Avatar)
Kıdemli Yazılımcı
Üyelik tarihi:
09/2016
Mesajlar:
1.998
Konular:
157
Teşekkür (Etti):
197
Teşekkür (Aldı):
712
Ticaret:
(0) %
05-07-2018 00:06
#7
Alıntı:
r0ark´isimli üyeden Alıntı Mesajı göster
[ ... ]
Eleştiriniz için teşekkürler. İlk bölüm için yazayım, bir sonraki projelerimde proje büyüklüğüne bakıp kullanacağım kütüphanelere ona göre karar vereceğim. Bunda sizin de bahsettiğiniz gibi küçük bir proje olduğu için yeniden yazmayacağım.

İkinci bölüme de tamamen katılıyorum fakat front-end'den gerçekten hiç anlamam. Gözüme daha güzel gözükmesi için bir CSS frameworkü kullanayım demiştim, kodları da Skeleton doc.'undan kopyalayıp editleme, eklemeler yapmıştım. Eğer isterseniz katkıda bulunabilirsiniz, sonuçta açık kaynak kodlu. Beğenmediğiniz yerleri değiştirebilirsiniz ve isterseniz bunları benim repository'm üzerinden paylaşabilirsiniz.
---------------------
~humanity is overrated~
Konu Gbmdpof tarafından (05-07-2018 00:11 Saat 00:11 ) değiştirilmiştir. Sebep: grammar fix
r0ark - ait Kullanıcı Resmi (Avatar)
E-Mail onayı yapılmamış üye
Üyelik tarihi:
05/2018
Mesajlar:
67
Konular:
13
Teşekkür (Etti):
24
Teşekkür (Aldı):
63
Ticaret:
(0) %
05-07-2018 00:13
#8
Alıntı:
Gbmdpof´isimli üyeden Alıntı Mesajı göster
Eleştiriniz için teşekkürler. İlk bölüm için yazayım, bir sonraki projelerimde proje büyüklüğüne bakıp kullanacağım kütüphanelere ona göre karar vereceğim. Bunda sizin de bahsettiğiniz gibi küçük bir proje olduğu için yeniden yazmayacağım.

İkinci bölüme de tamamen katılıyorum fakat front-end'den gerçekten hiç anlamam. Gözüme daha güzel gözükmesi için bir CSS frameworkü kullanayım demiştim, kodları da Skeleton doc.'undan kopyalayıp editleme, eklemeler yapmıştım. Eğer isterseniz katkıda bulunabilirsiniz, sonuçta açık kaynak kodlu. Beğenmediğiniz yerleri değiştirebilirsiniz ve isterseniz bunları benim repository'm üzerinden paylaşabilirsiniz.

Front-end'den anlamamanız bir mazeret değil. Eğer projenizde HTML ve CSS ile çalışıyorsanız, bir zahmet kullandığınız şeylerin dokümanlarını okuyun. Evet programcılar üşengeç insanlardır ama öğrenme konusunda geçerli değil bu.
Gbmdpof Teşekkür etti.

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı