Yazılım

TOPLAM 7 YAZI
YazılımYorum Bırak
Yazılım kategorisinde yazılmıştır.

Uzun süredir aklımda olan, zaman zaman da "lan şöyle sunucuya ses dosyası yükletmeden, band genişliğini sömürmeden herkese aynı anda aynı saniyi dinleten bir sistem nasıl kurulur?" diye kafamı kurcalayan projeyi en sonunda derleyip toplayıp açık kaynak olarak çıkardım: OrbitCast . Olayı çok uzatmadan özünü anlatayım. OrbitCast, senin seçeceğin YouTube parçalarını (veya kendi yükleyeceğin ses dosyalarını) bir radyo yayını gibi sırayla çalan bir açık kaynak projesi. Güzel tarafı şu: siteye giren kim olursa olsun, o an yayında olan parçanın herkesle aynı saniyesinden dinlemeye başlıyor. Yani tam anlamıyla gerçek bir radyo. Kimse şarkıyı ileri/geri saramıyor, kafasına göre baştan başlatamıyor. O an kaç kişi seninle birlikte aynı ritmi tutuyorsa, canlı canlı görüyorsun. Sunucu maliyeti: 0 TL Projedeki asıl olayı mimari tarafta çözdüm. Uygulama sunucusu (Next.js) tek bir bayt bile ses taşımıyor . Yayın konumu arka planda tamamen matematiksel bir hesaplamayla ( (şimdi - epoch) mod toplamSüre ) bulunuyor. Ses ise ya doğrudan YouTube'un kendi CDN'inden ya da senin bağlayacağın Cloudflare R2 gibi bir…

Uzun süredir aklımda olan, zaman zaman da "lan şöyle sunucuya ses dosyası yükletmeden, band genişliğini sömürmeden herkese aynı anda aynı saniyi dinleten bir sistem nasıl kurulur?" diye kafamı kurcalayan projeyi en sonunda derleyip toplayıp açık kaynak olarak çıkardım: OrbitCast . Olayı çok uzatmadan özünü anlatayım. OrbitCast, senin seçeceğin YouTube parçalarını (veya kendi yükleyeceğin ses dosyalarını) bir radyo yayını gibi sırayla çalan bir açık kaynak projesi. Güzel tarafı şu: siteye giren kim olursa olsun, o an yayında olan parçanın herkesle aynı saniyesinden dinlemeye başlıyor. Yani tam anlamıyla gerçek bir radyo. Kimse şarkıyı ileri/geri saramıyor, kafasına göre baştan başlatamıyor. O an kaç kişi seninle birlikte aynı ritmi tutuyorsa, canlı canlı görüyorsun. Sunucu maliyeti: 0 TL Projedeki asıl olayı mimari tarafta çözdüm. Uygulama sunucusu (Next.js) tek bir bayt bile ses taşımıyor . Yayın konumu arka planda tamamen matematiksel bir hesaplamayla ( (şimdi - epoch) mod toplamSüre ) bulunuyor. Ses ise ya doğrudan YouTube'un kendi CDN'inden ya da senin bağlayacağın Cloudflare R2 gibi bir depodan doğrudan dinleyiciye akıyor. Sonuç? Siteni ister 10 kişi dinlesin, ister 10.000 kişi... Sunucundan ses geçmediği için bant genişliği faturası sıfır kalıyor. Vercel'in veya Upstash'in ücretsiz katmanlarıyla kendi radyonu tek kuruş ödemeden canlıya alabiliyorsun. Üç farklı kullanım İhtiyacına göre üç şekilde kurabiliyorsun: YouTube Radyo: Sadece bir YouTube playlist linki veriyorsun, bitiyor. Sunucuyla, dosyayla, telifle hiç uğraşmıyorsun. Tek kısıtı, mobil tarayıcılar YouTube <iframe> oynatıcısını arka plana geçince susturduğu için ekranı kapatınca yayın duruyor. Yerel Radyo (Repo): Kendi MP3/audio kayıtlarını doğrudan projenin

okumaya devam et »

Yazılım10 Yorum
Yazılım kategorisinde yazılmıştır.

Taşıma işlemi Python 3.6 ve üzeri sürüm gerektirmekte. Güncel Python sürümünü web sitesinden edinebilirsiniz. Sonrasında projeyi Github sayfasından indirip VSCode veya terminal ekranı açarak gerekli eklentilerin kurulumu için aşağıdaki komutu çalıştıralım; pip install -U -r requirements Aktarım için bir ayar dosyası oluşturmamız gerekecek, bunu settings.ini.example dosyasını kopyalayıp settings.ini adında bir dosya oluşturarak da yapabilirsiniz, aşağıdaki komutu çalıştırarak da; cp settings.ini.example settings.ini Aktarım projemizde Spotify ve Youtube bağlantısı için buraya tıklayarak Spotify üzerinde bir uygulama oluşturuyoruz. Spotify Örnek Uygulama Uygulama oluşturduktan sonra Client ID ve Client Secret kodlarını, oluşturduğumuz settings.ini dosyasında ilgili bölüme yapıştırıp kaydediyoruz. Bu işlemden sonra aktarımın Spotify tarafıyla işimiz bitiyor. Bu aşamada settings.ini dosyamızın içeriği, aşağıdaki örnek gibi olmalı; headers = headers_json_from_browser user_id = client_id = burayaSpotifyClientID client_secret = burayaSpotifySecredID Projeye Youtube python uygulamasını dahil etmek için konsola python Setup.py youtube yazıyoruz. Bu aşamadan sonra terminale, tarayıcımızdan kopyalayacağımız çerezlerimizi yapıştırmamız gerekiyor. Bunun için yeni bir Firefox sekmesinde Youtube Müzik 'e giriş yapıp Ctrl-Shift-I yardımıyla tarayıcı konsolunu açıyoruz. Açılan…

Taşıma işlemi Python 3.6 ve üzeri sürüm gerektirmekte. Güncel Python sürümünü web sitesinden edinebilirsiniz. Sonrasında projeyi Github sayfasından indirip VSCode veya terminal ekranı açarak gerekli eklentilerin kurulumu için aşağıdaki komutu çalıştıralım; pip install -U -r requirements Aktarım için bir ayar dosyası oluşturmamız gerekecek, bunu settings.ini.example dosyasını kopyalayıp settings.ini adında bir dosya oluşturarak da yapabilirsiniz, aşağıdaki komutu çalıştırarak da; cp settings.ini.example settings.ini Aktarım projemizde Spotify ve Youtube bağlantısı için buraya tıklayarak Spotify üzerinde bir uygulama oluşturuyoruz. Spotify Örnek Uygulama Uygulama oluşturduktan sonra Client ID ve Client Secret kodlarını, oluşturduğumuz settings.ini dosyasında ilgili bölüme yapıştırıp kaydediyoruz. Bu işlemden sonra aktarımın Spotify tarafıyla işimiz bitiyor. Bu aşamada settings.ini dosyamızın içeriği, aşağıdaki örnek gibi olmalı; headers = headers_json_from_browser user_id = client_id = burayaSpotifyClientID client_secret = burayaSpotifySecredID Projeye Youtube python uygulamasını dahil etmek için konsola python Setup.py youtube yazıyoruz. Bu aşamadan sonra terminale, tarayıcımızdan kopyalayacağımız çerezlerimizi yapıştırmamız gerekiyor. Bunun için yeni bir Firefox sekmesinde Youtube Müzik 'e giriş yapıp Ctrl-Shift-I yardımıyla tarayıcı konsolunu açıyoruz. Açılan developer konsolunda Network / Ağ sekmesine tıklayıp filtreleme alanına browse yazarak Durum: 200 - Yöntem: POST satırına erişip sağ tık > kopyala > istek üst bilgisini kopyala yöntemiyle tarayıcıdaki çerezleri kopyalayarak projenin terminal ekranına yapıştırabilirsiniz. Firefox Tarayıcı Konsolu Görseldeki yöntemle kopyaladığımız çerezleri, projenin terminal ekranına yapıştırıp sırasıyla Enter > Ctrl+Z > Enter a basıyoruz. Tüm bu işlemleri yaptıktan sonra terminal ekranına... python YouTube.py https://open.spotify.com/playlist/4dzWj78btyXeLRzZ9lZ58u?si=edc10f15b2204520 ...yazıp Entera basarak aktarım işlemini başlatabiliriz. Koddaki spotify linki yerine kendi spotify playlistinizin linkini yapıştırarak daha

okumaya devam et »

Yazılım4 Yorum
Yazılım kategorisinde yazılmıştır.

Web sitelerinizin yükünü hafifletmek, hızını arttırmak adına yapılan başlıca işlemlerden olan WebP formatında görsel kullanımını hızlandırmak için NodeJS vasıtası ile tüm görsellerinizi toplu olarak sıkıştırıp WebP formatına çevireceğiz. Önce WebP formatına çevrilecek görselleri toplu olarak bir klasöre toplayıp klasörün adını img yapalım. Sonra anadizine index.js adında bir dosya açalım. Sonrasında adres satırına cmd yazıp enter'a basarak terminali açalım. Kodun sağlıklı çalıştığı klasör düzeni. Terminal ekranı geldiğinde işimize yarayacak olan npm dosyalarını, npm install imagemin-webp imagemin-jpegtran imagemin-pngquant fonksiyonuyla çağıralım. Sonrasında aşağıdaki kodları index.js dosyasının içine yapıştırıp kaydedelim. const imagemin = require('imagemin'); const imageminJpegtran = require('imagemin-jpegtran'); const imageminPngquant = require('imagemin-pngquant'); const imageminWebp = require('imagemin-webp'); (async () => { const files = await imagemin( , { destination: 'img', plugins: /* WebP çıktısının boyutu ve kalitesi için değerleri değiştirebilirsiniz*/ }) ] }); console.log('WebP dönüştürmesi tamamlandı'); })(); Görseller sıkıştırıldıktan sonra .webp formatındaki yeni görseller de aynı img klasörü içerisine oluşturulacak, farklı klasörde oluşturulmasını istiyorsanız destination: 'img' koduna yeni klasörünüzün yolunu tanımlayabilirsiniz. Sıkıştırmanın yapıldığı terminal ekranı…

Web sitelerinizin yükünü hafifletmek, hızını arttırmak adına yapılan başlıca işlemlerden olan WebP formatında görsel kullanımını hızlandırmak için NodeJS vasıtası ile tüm görsellerinizi toplu olarak sıkıştırıp WebP formatına çevireceğiz. Önce WebP formatına çevrilecek görselleri toplu olarak bir klasöre toplayıp klasörün adını img yapalım. Sonra anadizine index.js adında bir dosya açalım. Sonrasında adres satırına cmd yazıp enter'a basarak terminali açalım. Kodun sağlıklı çalıştığı klasör düzeni. Terminal ekranı geldiğinde işimize yarayacak olan npm dosyalarını, npm install imagemin-webp imagemin-jpegtran imagemin-pngquant fonksiyonuyla çağıralım. Sonrasında aşağıdaki kodları index.js dosyasının içine yapıştırıp kaydedelim. const imagemin = require('imagemin'); const imageminJpegtran = require('imagemin-jpegtran'); const imageminPngquant = require('imagemin-pngquant'); const imageminWebp = require('imagemin-webp'); (async () => { const files = await imagemin( , { destination: 'img', plugins: /* WebP çıktısının boyutu ve kalitesi için değerleri değiştirebilirsiniz*/ }) ] }); console.log('WebP dönüştürmesi tamamlandı'); })(); Görseller sıkıştırıldıktan sonra .webp formatındaki yeni görseller de aynı img klasörü içerisine oluşturulacak, farklı klasörde oluşturulmasını istiyorsanız destination: 'img' koduna yeni klasörünüzün yolunu tanımlayabilirsiniz. Sıkıştırmanın yapıldığı terminal ekranı Kodu index.js içine kaydettikten hemen sonra terminal ekranına node index.js yazıp belirttiğimiz kalitede webp formatına dönüştürmeyi tamamlıyoruz. Farka bakalım. PNG ve WEBP Sıkıştırma Karşılaştırması

okumaya devam et »

PHP, Yazılım5 Yorum
PHP kategorisinde yazılmıştır.

Tam bayram sabahına çıkacakken böyle bir konuyu niye yazdığıma dair pek de bir fikrim yok açıkçası.. Uzun zamandır Php öğrenmek istiyordum ve bunu herhangi projeye sıfırdan başlayarak yapamayacağımdan düzenleyerek gitmeyi, dersler izleyerek mantığını kavramayı tercih ettiğimden Tayfun'un BBSY derslerinden izleyerek bir blog scripti hazırladım kendime. Geliştirmeler yaparken sitenin olmazsa olmazlarından ziyaretçi sayacı yapmak geldi aklıma. Sezer abi'den de yardımlar alarak ziyaretçi bilgilerini veritabanına kaydetmeyi başardım. Öncelikle; geçerli sitenin phpmyadmin'inden varolan veritabanı içerisine bir tablo açıp adını sayac yapalım, ardından 3 tane sütun oluşturalım. Bana lazım olanlar sıralama için id , ip ve ziyaret tarihi , ve bunların türleri görseldeki gibi olmalı. Sonrasında veritabanı bağlantısının yapıldığı (veya include edildiği) ve sitenin her sayfasında görünen bir .php dosyasına aşağıdaki kodları yazıyoruz. function get_ip_address() { $ip_keys = array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR'); foreach ($ip_keys as $key) { if (array_key_exists($key, $_SERVER) === true) { foreach (explode(',', $_SERVER ) as $ip) { // trim for safety measures $ip = trim($ip); // attempt to…

Tam bayram sabahına çıkacakken böyle bir konuyu niye yazdığıma dair pek de bir fikrim yok açıkçası.. Uzun zamandır Php öğrenmek istiyordum ve bunu herhangi projeye sıfırdan başlayarak yapamayacağımdan düzenleyerek gitmeyi, dersler izleyerek mantığını kavramayı tercih ettiğimden Tayfun'un BBSY derslerinden izleyerek bir blog scripti hazırladım kendime. Geliştirmeler yaparken sitenin olmazsa olmazlarından ziyaretçi sayacı yapmak geldi aklıma. Sezer abi'den de yardımlar alarak ziyaretçi bilgilerini veritabanına kaydetmeyi başardım. Öncelikle; geçerli sitenin phpmyadmin'inden varolan veritabanı içerisine bir tablo açıp adını sayac yapalım, ardından 3 tane sütun oluşturalım. Bana lazım olanlar sıralama için id , ip ve ziyaret tarihi , ve bunların türleri görseldeki gibi olmalı. Sonrasında veritabanı bağlantısının yapıldığı (veya include edildiği) ve sitenin her sayfasında görünen bir .php dosyasına aşağıdaki kodları yazıyoruz. function get_ip_address() { $ip_keys = array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR'); foreach ($ip_keys as $key) { if (array_key_exists($key, $_SERVER) === true) { foreach (explode(',', $_SERVER ) as $ip) { // trim for safety measures $ip = trim($ip); // attempt to validate IP if (validate_ip($ip)) { return $ip; } } } } return isset($_SERVER ) ? $_SERVER : false; } function validate_ip($ip) { if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) === false) { return false; } return true; } $gercek_ip = get_ip_address(); $sorgu=mysql_query("insert into sayac (ip) values ('".$gercek_ip."')"); if($sorgu){ echo ''; }else{ echo ''; } Önce get_ip_address fonksiyonuyla ziyaretçinin ip adresini çekiyoruz ve $gercek_ip değişkenine atıyoruz. Sonrasında da gelen ip verisini veritabanına yazdırıyoruz. ID ve tarih kısımları otomatik işaretli olduğundan

okumaya devam et »

WordPress, Yazılım5 Yorum
WordPress kategorisinde yazılmıştır.

Bi zaman kendi yaptığım temalardan birini kullanırken bazı kategorilere ait yazılara farklı stiller uygulamam gerekmişti, bugün başka bir arkadaşa daha lazım olunca paylaşmak istedim. Öncelikle single.php kodlar gibi istediğiniz kategoriye özel single.php sayfasını kodlayıp yeni bir isim veriyorsunuz (örn: wordpress.php) ve tema dosyasının içerisine kaydediyorsunuz. Sonrasında single.php sayfasını açıp en başına aşağıdaki kodu yazıyorsunuz; <?php if ( in_category('catslugname') ) { include 'wordpress.php'; } else { ?> Koddaki catslugname yazan yeri kendinize göre düzenleyip single.php'nin en son satırında da php kodunu <?php } ?> şeklinde kapatıyorsunuz. cat-slugname örnekleri kırmızı ile işaretlidir

Bi zaman kendi yaptığım temalardan birini kullanırken bazı kategorilere ait yazılara farklı stiller uygulamam gerekmişti, bugün başka bir arkadaşa daha lazım olunca paylaşmak istedim. Öncelikle single.php kodlar gibi istediğiniz kategoriye özel single.php sayfasını kodlayıp yeni bir isim veriyorsunuz (örn: wordpress.php) ve tema dosyasının içerisine kaydediyorsunuz. Sonrasında single.php sayfasını açıp en başına aşağıdaki kodu yazıyorsunuz; <?php if ( in_category('catslugname') ) { include 'wordpress.php'; } else { ?> Koddaki catslugname yazan yeri kendinize göre düzenleyip single.php'nin en son satırında da php kodunu <?php } ?> şeklinde kapatıyorsunuz. cat-slugname örnekleri kırmızı ile işaretlidir

okumaya devam et »

Bilgisayar, Yazılım9 Yorum
Bilgisayar kategorisinde yazılmıştır.

Bilgisayar kategorisinin 2. yazısı olmayı hakedecek düzeyde iyi bir oyun olduğunu düşünmüyorum pek ama, hem blogdaki aktif olamayışlarım hem de programlamaya merakım oyun biter bitmez itti beni buralara kadar. Şimdi, neden? Ne gerek vardı? Bence de öyle ama 2 yıllık okulu 5.yılımda bitirebilmem için bu ödevi yapmam gerekiyordu (artık blogda küfürlü yazamıyorum, öğretmenler, hocalar okuyor olm). 2.sınıf Nesne Tabanlı Programlama dersinden geçebilmemiz için ya yaptığımız projeye bilgisayar için bir arayüz çizmemiz gerekiyordu, ya da mayın tarlası o da olmazsa amiral battı oyunundan yapmamız istendi. Mayın tarlası işime geldi, amiral battı'yı daha evvel hiç oynamadım, mayın tarlası çocukluğumuzdan beri bizimle oysa. Her neyse. Oyunun "Hakkında" kısmına tıklayınca zaten göreceksiniz ne için yaptığımı. Toplam 100 bölge, 30 tehlikeli, 70 relax bölge mevcut. Ama siz buna rağmen tek seferde mayınlı bölgeyi bulursanız, kuru yer kalmıştır. Programın indirme butonu aşağıdadır. Proje dosyalarını da yayınlamayı düşünüyorum ama Pazartesi günü ödevi teslim ettikten sonra yapayım bunu, malum sınıftaki zırtlanlar.. Oyunu açamayan arkadaşlar, hata aldıkları ekranda Ek…

Bilgisayar kategorisinin 2. yazısı olmayı hakedecek düzeyde iyi bir oyun olduğunu düşünmüyorum pek ama, hem blogdaki aktif olamayışlarım hem de programlamaya merakım oyun biter bitmez itti beni buralara kadar. Şimdi, neden? Ne gerek vardı? Bence de öyle ama 2 yıllık okulu 5.yılımda bitirebilmem için bu ödevi yapmam gerekiyordu (artık blogda küfürlü yazamıyorum, öğretmenler, hocalar okuyor olm). 2.sınıf Nesne Tabanlı Programlama dersinden geçebilmemiz için ya yaptığımız projeye bilgisayar için bir arayüz çizmemiz gerekiyordu, ya da mayın tarlası o da olmazsa amiral battı oyunundan yapmamız istendi. Mayın tarlası işime geldi, amiral battı'yı daha evvel hiç oynamadım, mayın tarlası çocukluğumuzdan beri bizimle oysa. Her neyse. Oyunun "Hakkında" kısmına tıklayınca zaten göreceksiniz ne için yaptığımı. Toplam 100 bölge, 30 tehlikeli, 70 relax bölge mevcut. Ama siz buna rağmen tek seferde mayınlı bölgeyi bulursanız, kuru yer kalmıştır. Programın indirme butonu aşağıdadır. Proje dosyalarını da yayınlamayı düşünüyorum ama Pazartesi günü ödevi teslim ettikten sonra yapayım bunu, malum sınıftaki zırtlanlar.. Oyunu açamayan arkadaşlar, hata aldıkları ekranda Ek Bilgi deyip çıkan ekranı takip ederek oyunu açabilirler. Olm valla virüs değil lan. Mayın Tarlası İndir - Kaynak Dosyaları İndir

okumaya devam et »

MikroBlog Saçmalatmacaları

2023 de berbat bir yıldı.

Bu başlık serisini sevdim, sağlam bi' okur eleme yöntemi. Hala okuyan var mıdır bilemiyorum ama okunsun istiyor olmama rağmen daha çok kendime not bırakıyor olma niyetiyle yazıyorum, malumunuz b12 eksikliği.……

2022 de berbat bir yıldı.

Merhaba 1 yıl aradan sonra bile bana kucak açan sevgili blogum ve (varsa) hala blog okuyan sevgili insan evlatları. Okunduğunu düşündüğümden değil, “özlemiş miyim” testi ve “yazmış olmak için yazılmış” bir……

Gece yarısı notları: Yeni yıl

Geçtiğimiz yılı " blog yılı " ilan etmiş olmamıza rağmen yıl içerisinde 8 blog yazısı yayınlamışım. Blogun geçmişine kıyasla aslında iyi rakam ama yeterli mi tartışılır. Blog yazmanın birçok iyi yönünden……

Son Yorumlar

Multimedya