Yazıyla anlatmak zor. Bir yol sunayım:
- Öncelikle css dosyası projenin içinde olmalı.
- Düzeltmek istediğin alan sağ tık > Inspect dedikten sonra stillerini görebiliyorsun.
- Bu stiller üzerinde istediğin bir değişiklik yaptın. Tarayıcıda gözüne hoş görünür hale getirdin.
- Bu düzelttiğin stilin sağ üst tarafında stil dosyasının adı yazıyor. Ona basıyorsun.
- Sources sekmesinde ilgili stil dosyası tarayıcının gördüğü haliye açılıyor. Az önce yaptığın değişiklikler de burada. Bu dosyanın içindeki her şeyi kopyala ve sendeki asıl dosyaya yapıştır.
- Böyle adım adım göre göre değişikliklerini yapabilirsin.
Aylık 200 Dolar'cık karşılığında 28.500 defa harita görüntülemeye izin verdiği yazıyor sitesinde.
Kaynak (20.06.2023)
Şu alternatifler varmış: (Kaynak)
1) OpenLayers ücretsiz
2) TomTom Günlük 50.000 istek ücretsiz
3) MapBox Aylık 100.000 istek ücretsiz
4) Here Aylık 30.000 istek ücretsiz
5) Distancematrix.ai Her 1000 istek için 2$
Detaylı incelemedim translate çevirisiyle yazıyorum:
Hangisini kullanacaksın?
Param yok diyorsan OpenLayers
Navigasyona ihtiyacın varsa TomTom
Harita görselleştirmelerine ihtiyacın varsa Here
Özel haritalara ihtiyacın varsa Mapbox
Yönlendirme verilerine ihtiyacınız varsa Distancematrix.ai
Redux daha beceriklidir.
Ama basit bir state yönetimine ihtiyacın varsa veya kolayına geliyorsa ContextAPI da iyidir.
Veya global değişkenler ve custom hook'lar üzerinden kendine özgü, daha az karmaşık bir yapı da uydurabilirsin.
Böyle bir endişen varsa sorunu önce ChatGPT'ye sorabilirsin. Muhtemelen "bunu da sormazsın bee" dedirtecek bir soruya kolaylıkla cevap verebilir.
Soracağın konuda yabancı dillerde kaynaklar bulduysan bunların çevirisini ve açıklamasını yine ChatGPT'ye yaptırabilirsin.
Hata aldığın bir kod bloğunu kopyalayıp GPT'ye yapıştırabilir ve anlamadığını yeri sorabilirsin. Kod üzerinde uzun uzun tartışabilirsin.
Muhtemelen sadece sepet sayfasına dahil ettiğin, diğer sayfalara çağırmadığın bir fonksiyon var. Bu fonksiyonu bulmalısın.
En kısa yol olarak (yanlış da olsa) header'ının bulunduğu ve her sayfaya çağırdığın dosyayı aç.
header tag'ının hemen altına script tag'ı aç. Butonların çalışması için gereken js kodunu buraya yaz.
Back-end'in iyiyse ve front-end için birlikte çalışacak bir arkadaş bulamıyorsan hazır html temalarla devam edebilirsin. Bu hazır temaların back-end'e istek atması, back-end'den gelen yanıtları dom'a işlemesi vs. derken ufak ufak zaten front-end'e başlamış oluyorsun. Zamanla hazır tasarımdaki bazı yerleri değiştirmek isteyeceksin ve sonuçta ister istemez yeni kodlar ve yaklaşımlarla karşılaşmış olacaksın.
Yani tavsiyem, hazır temalar kullanarak back-end'inden bunlara veri sağlaman olur. Eğer baştan front-end'e girip a-z öğreneyim dersen tabi daha hoş olur ama vakit kaybedersin.
Her alanda uzmanlaşmana gerek yok. Back-end alanındaki derinliğini artırman, front-end hakkında da böyle lazım oldukça bi'şeyler öğrenmen daha iyi bir yol haritasıdır.
Dışarıdan iş aldığın küçük projelerde hazır temalar müşterini fazlasıyla memnun edecektir.
Maaşlı bir işe girdiğinde de (küçük veya vizyonsuz bir firma değilse) mutlaka front end - back end ayrımı yapılmıştır. Sen back-end'deki derinliğini artırdığında bu firmalarda iyi maaşlarla çalışırsın ve çok da derinlemesine front-end bilmen beklenmez çünkü front-end'in uzmanları zaten oradadır.
Ama diyorsan ki, "ben back-end'de ilerlemek istemiyorum, hoşlanmadım ve front-end bana daha zevkli geliyor." o zaman yine dışarıdan iş aldığında hazır temalar kullanmalı (zaman kaybetmemek ve farklı yaklaşımları görebilmek için) hem de bir yandan sıfırdan bir front-end projesinin nasıl geliştirilebileceğini öğrenmelisin. Bunun için de hem YouTube üzerinde hem Udemy üzerinde bolca eğitim var. Ücretsiz YouTube eğitimlerinden başlayıp gördüklerini kodlayarak ilerlemelisin. Ücretsiz eğtimler artık yetmemeye(mümkün değil) başlamışsa ücretli eğitimlere geçebilirsin.
Front-end'de uzmanlaşacağım diyorsan html, css, js ile bir arayüzün nasıl tasarlandığını aşağı yukarı anladıktan sonra React, Vue veya Angular gibi bir çatıya geçmen gerekir. JQuery'e kendini kaptırmamalısın çünkü iyi firmalar mutlaka bir framework kullanmaya çalışıyorlar. Henüz kullanmaya başlamamış olanlar da kullanmaya başlamanın planlarını yapıyorlar. İyi firmalarda front-end çatıları kullanımında piyasanın hakimi Türkiye'de şu an React. React ile proje geliştirmenin en iyi yolu da back-end'de NextJS kullanmak. Yani düz ReactJS ile proje geliştirmemelisin. Mutlaka arkasında NextJS olmalı.
Kısacası eğer front-end'de uzmanlaşmak istiyorsan temel bir html-css-js ile kodlama konseptini anladıktan sonra NextJS ile ReactJS kullanmanı öneririm.
Eğer front-end'de uzmanlaşmama gerek yok ben back-end'ciyim ama full-stack iş çıkarabilmek istiyorum diyorsan hazır html temaları kullanmalı ve back-end'de uzmanlaşmaya devam etmelisin. (Önerilen)
Teşekkürler @devepdogukan.
Evet, web üzerinde olsa kullanıcılar her şeyi manipule edebilirler. Diyelim ki bir şekilde mobil uygulamayı da web gibi manipüle edebiliyor olsunlar. O zaman web üzerinden örnek verelim.
Diyelim ki back-end kısmında PHP ile kod yazıyorum. Kendi yönettiğim başka bir ssl sertifikalı web servis sunucuma PHP ile istek atıp string haldeki kodları alıyorum. Bu kodları yine PHP tarafında eval()
fonksiyonuyla çalıştırıyorum diyelim.
Yani isteği atan da alan da işleten de tamamen back-end kısmı.
Bu durumda PHP ile eval()
kullanmamın sakıncası ne olabilir?
eval()
tehlikeli bir komut. Ayrıca ben projemde eval'ın da uygun olmadığını daha güvenli başka yollar geliştirmek zorunda kaldım.
Yine de merak ediyorum. Web için back-end, mobil için uygulama içi (kullanıcıya gösterilmeyen) bölümde, eval fonksiyonuna yine kendime ait bir (ssl sertifikalı) web servis sunumumdan kendi yazdığım fonksiyonu gönderdiğimde nasıl bir sorunla karşılaşırım?
Yani kullanıcılar https sayesinde iki sunucum arasındaki iletişime dahil olamıyorlarsa başka nasıl eval() fonksiyonuma sızabilirler?
Bunun bir yolu, web servis barındıran sunucuma sızmaları olabilir. Böylece endpoint'imden döndürdüğüm fonksiyonu kendi fonksiyonuyla değiştirebilir.
Ama zaten web servisime sızıldıysa fonksiyonumu değiştirmekten çok daha fazlasını yapabilir. Yani servis sunucuma sızılması apayrı bir konu.
Peki başka nasıl eval()
'a gönderdiğim değere müdahale edilebilirdi?
Reklam gibi olacak ama Türkiye'de gerçekten bu altyapıyı paylaşımlı hosting'lerde sunan firmalar yok. Hatta bazı firmaların altyapısı halen 10 yıldır geliştirilmeyen klasik ASP'ye dayanıyor gibi görünüyor.
İlle de Türk firması olsun ve Türkçe konuşarak destek alabileyim diyorsan istediğin tüm altyapıyı sağlayıp sağlamadığını öğrenmek için Cenuta ile iletişime geçebilirsin. Teknik destek konusunda hem hızlılar hem kaliteliler. Bazı firmalar gibi "sorun sizin kodunuzdadır" deyip kestirip atmıyorlar üstelik.
Gerçi yalan olmasın, ben de pek kullanmadım Cenuta'yı ama kısa süre incelediğim kadarıyla hoşuma gitti.
stackoverflow'daki bir örneğe dayanarak aşağıdaki çözümü deneyebilirsin:
<form action="" method="post">
<table id="table" class="table-sm">
<thead>
<tr>
<th>Yapılacak İşin Cinsi</th>
<th>Toplam Miktar</th>
<th>Birim</th>
</tr>
</thead>
<tbody class="tbody">
<tr class="satir">
<td><input name="rows[0][cins]" type="text"></td>
<td><input name="rows[0][miktar]" type="text"></td>
<td><input name="rows[0][birim]" type="text"></td>
</tr>
<tr class="satir">
<td><input name="rows[1][cins]" type="text"></td>
<td><input name="rows[1][miktar]" type="text"></td>
<td><input name="rows[1][birim]" type="text"></td>
</tr>
<!--
Sınırsız sayıda satır eklenebilir.
Eklenen satırlardaki input'lara rows[2][cins], rows[3][cins]...
gibi farklı isimler vererek ekleyebiliyorum.
-->
</tbody>
</table>
<!-- Aşağıdaki input'a artık gerek yok -->
<input name="toplamSatir" value="2" type="text">
</form>
// $satirSayisi = $_POST["toplamSatir"]; // Artık gerek yok...
$satirSayisi = count($_POST["rows"]);
$rows = $_POST["rows"];
// Verilere ulaşım örneği:
$ilkSatir_cins = $rows[0]["cins"];
$ikinciSatir_miktar = $rows[1]["miktar"];
<input type="hidden" name="onaykodu" class="form-control">
bu input'un type'ı hidden olduğu için aslında hiç ekranda görünmüyor olmalı. İlk ajax isteğinden dönen sonuçta bu input'un içine bir değer atamıyor olabilirsin.
Eğer bu input'un değeri yoksa, post edilirken boş string olarak PHP'ye iletiliyordur.
Böylece islem.php dosyandaki if
koşulun PHP için boş string kontrolüne dönüyor.
Yani if($_POST['onaykodu']) {
=> if("") {
oluyor.
PHP için if
koşulunda boş string ifadesi false
kabul edilir. Yani bu bloğa hiç giremiyor olabilirsin.
Bunu anlamak için if
bloğuna bir else
ekleyip yanıt olarak şunu dönebilirsin:
else {
$data['status']="missing parameter";
$data['message']="onaykodu şu şekilde iletildi: '".$_POST['onaykodu']."'.";
}
istek attığında konsolunda aşağıdaki gibi bir response görüyorsan sorun bu demektir.
{
"status": "missing parameter",
"message: "onay kodu şu şekilde iletildi: ''."
}
Eğer durum buysa, onaykodu input'una değer ataman gerekiyordur.