vehbiakdogan

Senior Sofware Developer

Bazı Ubuntu komutları ve Ubuntuda kod yazmak

Bu yazımızda sizlerle ubuntuyu inceleyeceğiz. anlatıma başlamadan önce bana ubuntu ile ilgili her konuda yardım eden değerli Ömer KİREÇLİGÖL Abime teşekkür ediyorum.

Ubuntu Komut penceresi (Terminal)

windows işletim sistemi kullanan arkadaşlar bilir cmd yani komut penceremiz vardır özellikle konsol uygulamaları yazan arkadaşlar cmd ekranı ile çok haşırneşir olurlar neyse windowsta bulunan cmd nin linux taki karşılığı terminal oluyor ve terminali ctrl+alt+t tuşu ile veya gnome-terminal yazarak açabiliriz.

Terminalde kullandığımız bazı basit komutlar

bugün öğrendiğim birkaç komutu sizlerle paylaşmak istiyorum.

  • ls komutu ile içinde bulunduğumuz dizine ait dosya ve klasörleri listeletiriz. ls -l şeklinde kullanım yaparsak klasörlerin son değiştirilme tarihinide göstermiş oluruz.
  • cd komutu alt klasöre geçiş yaparız örneğin:
    ls -l ile klasörleri listelettik (Desktop,Downloads,…)
    cd Desktop ( Desktop Klasörünün İçine Girdik )
    ls -l (Desktop içinde olduğumuz için desktop içindeki klasör ve dosyaları listeler)
  • cd .. kodumuz ise üst dizine geçer
  • clear kodumuz ise terminal ekranını temizler

Bu Komutlar şimdilik işimizi Görecektir.

Ubuntuda c++ Kodu Yazmak

Ubuntuda c++ kodu yazmak ve kodu çalıştırmak için g++ kurmamız gerekmektedir bunun için terminalimizi açıyoruz ve içine aşağıdaki kodu yazıyoruz.

sudo apt-get install g++

daha sonra terminal ekranında şifreniz istenecektir şifremizi yazarak g++ derleyicimizi yüklemiş oluyoruz.
şimdi bir örnek kod yazalım

 #include <iostream>  
using namespace std;
int main()
{
cout<<"vehbi akdoğan "<<endl;
return 0;
}

kodumuzu masaüstüne vehbi.cpp şeklinde kaydedelim. evet şimdi tekrar terminale gidiyoruz ve programımızı derleyerek çalıştıralım .
derlemek için kodlarımızı yazalım
ls -l içinde bulunduğumuz dizindeki dosya ve klasörleri listeleyelim

Şimdi Kodlarımız masaüstünde olduğu için masaüstüne gidelim
cd Desktop Masaüstüne Geçiş Yaptık

Evet Kodlarımız Masaüstünde olduğu için tekrar ls -l yazarak listelememize gerek yok ama isteyenler listeletebilir ben listeletmeyeceğim.
Şimdi Kodumuzu g++ ile derleyelim
g++ deneme.cpp -o deneme Yazarak kodumuzu Derliyoruz
./deneme Yazarak derlenmiş kodumuzu çalıştırıyoruz kodumuzu çalıştırdığımızda ekranda vehbi akdogan yazacaktır

linux ubuntuda c++ kodu nasıl yazılır bu şekilde görmüş olduk

C++Linux

C++ ile bir dizinin transpozunu alan konsol uygulaması

c++ ile bir dizinin transpozunu almayı göstereceğim. bugün yaptığım diğer c++ Girilen metin içinden istenilen bir harfi silme konsol uygulaması örneği ve bu örneğim bizin Quiz sorularımız olduğu için okulda istenilen şekilde çözdüğümü belirtmek istiyorum .
Şimdi bir dizinin transpozunu almaya başlayalım bir dizinin transpozu nasıl alınır diye soracak olursanız;
Dizinin Transpozu : A matrisinin aynı numaralı satırlarıyla sütunlarının yer değiştirmesiyle elde edilen Bir Matrisin Transpozu (Devriği) matrisine A matrisinin Transpozu (devriği) denir.
örnek :

Artık Kodlarımıza Geçebiliriz.
Kodlarımızı her zamanki gibi yazarken açıklayacağım öncelikle transpoz.cpp adında bir cpp dosyası açalım ve kodlarımızı yazmaya başlayalım.

 /*  
Vehbi Akdoğan
iletişim : mf.leqelyy@gmail.com
site: http://vehbiakdogan.blogspot.com
soru: Boyutları m ve n olan dizinin transpozunu alma
- boyutları m,n olan dizi için m<10 ve n<10
- dizinin elemanlarının dışarıdan alınacak
*/
#include <iostream>
void transpoz(int[][9], int, int);
using namespace std;
int main(){
setlocale(LC_ALL,"TURKISH");
int dizi[9][9], m, n; // aslında dinamik dizi sorusudur ama statik dizi ile yaptık
/* dizi boyutu max 9*9 olacağı için max değer verdik (statik dizi olduğu için) */
cout << "m ve n değerlerini giriniz: ";
cin >> m >> n;
if (m >= 10 || n >= 10){
cout << "Boyutlar m<10 ve n<10 olmalıdır " << endl;
}
else{ // boyutlar 9 dan küçükse dizi elemanlarını isteyelim
for (int i = 0; i < m; i++){
for (int j = 0; j < n; j++){
cout << "dizi[" << i << "][" << j << "]= ";
cin >> dizi[i][j];
}
}
// evet dizi elemanlarını aldık önce bir dizimizi yazdıralım
for (int i = 0; i < m; i++){
for (int j = 0; j < n; j++){
cout<<dizi[i][j]<<" ";
}
cout << endl;
}
cout << "----------------------------" << endl; // üst kısmın karışmaması için
//şimdi transpoz adlı fonksiyonu çağıralım
transpoz(dizi, m, n);
/*
- birinci parametre dizimiz
- ikinci parametre dizinin dolu olan satırı
- üçüncü parametre dizinin dolu olan sütunu
*/
cout <<endl<< "Transpoz alma işlemi bitmiştir Saygılarımla vehbiakdogan" << endl;
}
return 0;
}
void transpoz(int d[9][9], int m, int n){
int t[9][9]; // transpozunu atacağımız dizi
for (int i = 0; i < n; i++){
for (int j = 0; j < m; j++){
t[i][j]= d[j][i]; // transpozunu alıyoruz
}
}
// transpozu alınmış dizimizi tekrar yazdıralım
for (int i = 0; i < n; i++){
for (int j = 0; j < m; j++){
cout << t[i][j] << " ";
}
cout << endl;
}
}

Böylelikle Bir matrisin Transpozunu almış oluruz Çalışan Örneğimize bakarsak

Yazmış Olduğumuz kodları Buradan İndirebilirsiniz.

C++

c++ Girilen metin içinden istenilen bir harfi silme konsol uygulaması

c++ ile girilen bir karakter dizisinin içinden herhangi bir elemanı silmeyi göreceğiz. uygulama kimilerine basit gelsede ilk öğrenenler biraz bu konuda sıkıntı çekebiliyorlar bu yüzden blogumda paylaşma gereği duydum. kodlarımıza geçelim
öncelikle karakterSil.cpp adında dosyamızı açalım ve kodlamaya başlayalım kod açıklamalarını kod yazarken kodun yanında gösterdim ayrıca açıklama yapmayacağım anlamayan arkadaşlar yorum atabilirler.
Koduumuz :

 /*  
Vehbi Akdoğan
iletişim : mf.leqelyy@gmail.com
site: http://vehbiakdogan.blogspot.com
soru : Girlilen bir karakter dizinisnden istenilen elemanı silip kalan diziyi aralarda bir boşluk bırakarak yazan programımız
Dizimizin boyutu statik olup 20 karakter olacak.
silinen elemanın indisi gösterilecek.
eleman yoksa hata mesajı verilecek.
birden fazla varsa hepsinin indisi gösterilecek.
*/
#include <iostream>
using namespace std;
void karakterSil(char [],char); // karakter silme fonksiyonumuz diziyi ve silinecek karakteri paramtere olarak alıyor
int main(){
setlocale(LC_ALL,"TURKISH"); // türkçe karakter sorunu olmaması için
char dizi[20], silinecek; // dizimiz ve silinecek elemanın veri tipini tanımladık
cout << "Lütfen max 20 karakterlik veri giriniz: ";
cin >> dizi;
cout << "Silinecek Elemanı Giriniz: ";
cin >> silinecek;
/* vdizi ve silinecek elemanı aldık şimdi silme işlemi yapalım */
karakterSil(dizi, silinecek); // fonksiyonumuzu çağırdık ve şimdi dizimizi tekrar aralrında boşluk bırakarak yazalım
for (int i = 0; dizi[i] != ''; i++)
cout << dizi[i] << " ";
cout << endl<<"Programımız Burada sona ermiştir n vehbiakdogan Saygılarımla ..."<<endl;
return 0;
}
void karakterSil(char d[20], char s){
int silinenler[20],sayac=0; // en fazla 20 tane silineceği için boyutu 20 yaptık
for (int i = 0; i < 20; i++){
if (d[i] == s){
d[i]=' '; // eğer silinecek eleman dizinin elemanına eşit ise sildik
silinenler[sayac] = i; // silinenler dizisine indisi ekledik
sayac++; // sayacımızı artırdık
}
}
/* şimdi neler sildik nerden sildik gösterelim */
if (sayac == 0){
cout << "Eleman Dizide Yok " << endl;
}
else{
cout << "silinen eleman sayısı : " << sayac<<endl<<"Silinenlerin indisi: ";
for (int i = 0; i < sayac; i++)
cout << silinenler[i] << " ";
// karakter silme işlemi bitti
cout << "c++ da dizi indislerinin 0 dan başladığını unutmayalım !! :) " << endl;
}
}

Programın Çalışan Bir Çıktısı

Program Dosyasını Buradan İndirebilirsiniz.
Evet arkadaşlar kodlarımız bu kadardır anlamayan arkadaşlar yorum atabilirler.

C++

Youtube ve twitter’a Vpn veya dns kullanmadan giriş

Günümüzün büyük sorunlarından biri olan youtube ve twitter yasağı herkesi ister sitemez bazı yollarla yasağı çiğnemeye itiyor. genellikle dns ayarlarımızı değiştirerek girdiğimiz youtube ve twitter’a neredeyse tüm dnsleri engelleyerek girişimizi hemen hemen kesmiş oluyorlar ama bugün anlatacağım yöntemle artık youtubede twitter’ada sorunsuz bir şekilde bağlanabileceksiniz.

Youtube Ve Twitter’a dns Kullanmadan Giriş

Öncelikle Bu kodları sadece yardımlaşma amacıyla paylaştığımı belirtmek isterim ve işlemlerimize geçelim.

Öncelikle Bilgisayarımızda

C:WindowsSystem32driversetc

Yolunu Açıyoruz.açtığımız kısımda host dosyası bulunuyor dosyayı sağ tıklayıp notepad (not defteri) ile açıyoruz ardından içinde bulununan kodları silmeden en alt kısmı aşağıdaki kodları ekliyoruz .
Kodlarımz:

 199.59.150.7 twitter.com www.twitter.com  
199.59.148.12 t.co www.t.co
199.59.150.7 twitter.com www.twitter.com
199.59.148.12 t.co www.t.co
199.16.156.107 mobile.twitter.com
199.59.148.84 pic.twitter.com s.twitter.com
199.59.148.148 upload.twitter.com
199.59.149.199 api.twitter.com
199.59.148.11 translate.twitter.com
199.59.150.39 translate.twttr.com
74.125.224.225 youtube.com www.youtube.com
74.125.224.225 youtube.com
74.125.224.225 www.youtube.com
74.125.224.71 m.youtube.com
74.125.224.136 gdata.youtube.com

Ardından Kodlarımızı Kaydediyoruz ve Youtube ve tvittera giriyoruz 🙂

Sourunlar

Eğer host dosyasını açıp içine kodları yazdığınızda farklı kaydet geliyorsa :

  • Öncelikle host dosyasını masaüstüne kopyalıyoruz
  • kodları masaüstündeki host dosyamıza kaydediyoruz.
  • tekrar host dosyasını eski yerine atıyoruz.

Başka Sorunlarınız veya yapamayan arkadaşlar olursa yorum yazmaktan çekinmeyiniz.

Teknoloji

Php uniqid() fonksiyonu ve kulanımı

Php uniqid() fonksiyonu rastgele değerler üretmek için kullanılır. kullanımı oldukça basittir. örnekleyecek olursak

 <?php  
echo uniqid(); // rastgele değerimiz
?>

Php uniqid() fonksiyonumuzun farklı şekilde kullanımlarıda mevcut örneğin istediğimiz bir değerden sonra rondom değerler üretmesini isteyebiliriz . örnek verecek olursak

 <?php  
echo uniqid("vehbiakdogan_"); // vehbiakdogan_ den sonra rastgele değerimiz
?>

Son olarak da fonksiyonumuza true parametresi vererek daha karmaşık bir değer ürettirebiliriz. örneğin :

 <?php  
echo uniqid("vehbiakdogan_",true); // vehbiakdogan_ den sonra rastgele değerimiz(daha karmaşık)
?>
PHP

Photoshopa yazı fontu eklemek

Arkadaşlar bildiğiniz gibi photoshopu ilk kurduğumuzda tüm yazı fontları olmaz şimdi biz istediğimiz bir fontu photoshopa ekleyeceğiz.

photoshop aslında bilgisayarımızda varolan fontları kullanır yani işletim sistemimizle gelen fontları kullanır biz şimdi işletim sistemimize yeni font ekleyeceğiz ve eklediğimiz fontu photoshoptada kullanabileceğiz.
şimdi elimizde font dosyamız olduğunu varsayıyorum ve anlatmaya devam ediyorum.
bilgisayarımızda C:WindowsFonts yolunu açıyoruz ve font dosyasını yapıştırıyoruz ardından yükle diyerek font dosyamızı yüklüyoruz

Evet photoshopu açtığınızda yeni font dosyamızın eklendiğini göreceksiniz. eğer font photoshopta görünmezse bilgisayarınızı yeniden başlatıp tekrar bakabilirsiniz.

Sorun Ve Çözümler

css float left yapınca arkaplanın kaybolması sorunu

Merhaba arkadaşlar kodlarımızda genelde float:left yani sola yasla yada float:right sağa yasla gibi komutlar yazarız. eğer bu özellikleri verdiğmiz divin dışında bir div varsa arkaplanının kaybolduğunu göreceksiniz. bunun nedeni float left veya right dediğimizde height:auto; kodumuz çalışmıyor şimdi çözümüne bakalım.

Hatalı CSS kodumuz

 .ust_div {  
 width:100%;  
 height:auto;  
 background-color:#555;  
 }  
 .solayasla{  
 float:left;  
 margin-left:20px;  
 border:1px solid #ddd;  
 }  

html kodumuz

 <div class="ust_div">  
 <div class="solayasla" metin </div>  
 <div class="solayasla" metin </div>  
 <div class="solayasla" metin </div>  
 <div class="solayasla" metin </div>  
 <div class="solayasla" metin </div>  
 <div class="solayasla" metin </div>  
 </div>  

Yuardaki kodu çalıştırdığınızda hatalı çıkacakdır doğru css kodumuz :

Doğru CSS Kodu

 .ust_div {  
 overflow:hidden; /* overflow ekleyerek sorunu düzelttik */  
 width:100%;  
 height:auto;  
 background-color:#555;  
 }  
 .solayasla{  
 float:left;  
 margin-left:20px;  
 border:1px solid #ddd;  
 }  

 

Css-Css3

C++ setprecision Kullanımı-ondalıklı sayılarda yuvarlama

Kodlama yaparken bazen virgülden sonraki tüm basamakların görünmesini istemeyiz bunun içinde bazı yollara başvurailiriz ben bugün setprecision() kullanarak ondalıklı sayılara nasıl oynayabileceğimizi göstereeğim öncelikle nedir bu setprecision diyelim ve başlayalım.

setprecision() Fonksiyonu

setprecision fonksiyonu bir ondalıklı sayının virgülden sonra kaç basamağının gösterileceğini belirler ve bir parametre alır Kullanım şekli setprecision(basamak_sayisi); şeklindedir.

setprecision Örneği

 #include <iostream>  
 #include <iomanip>  
 using namespace std;  
 int main(){  
      int s1, s2, s3;  
      double ort;  
      cout << "3 sayı giriniz: ";  
      cin >> s1 >> s2 >> s3;  
      ort = static_cast<double>(s1 + s2 + s3) / 3;  
      cout <<setprecision(4)<< ort;  
 }  

evet gördüğünüz gibi Sayımıza 4 basamak verdik kodumuzu çalıştırdığımızda virgülden sonra kaç basamak olursa olsun hep 2 basamak gösterecektir.

C++

Windows İşletim sisteminde .htaccess dosyası oluşturma

Windows kulananlar biliyordur isimsiz bir dosya oluşturulmaya windows izin vermez arkadaşlar .htaccess dosyasıda isimsiz sadece uzantı olduğu için onada izin verilmez şimdi biz windowsta .htaccess dosyası oluşturacağız.

  • Öncelikle bir txt dosyası oluşturalım.
  • Daha sonra txt dosyamızı arşivleyelim (winrar vb. program ile arşivleyebilirsiniz)
  • Ardından oluşturduğumuz arşivin içine girelim ve txt dosyasının adını silip .htaccess yapalım
  • .txt uzantısınıda değiştirdiğinizden emin olun
    • Benim bilgisayarımda txt uzantısı görünmüyor diyorsanız bilgisayarıma girip sol üstte klasör ve arama seçenekeri/bilinen dosyalar için uzantıları gösterme seçeneğindeki iişareti kaldırın
  • Ardından adını değiştirdiğimiz .htaccess dosyamızı arşivden çıkaralım ve sıcak sıcak kullanmaya başlayalım 🙂
.htaccessSeo İpuçları

jQuery de inputtan alınan değer ile işlem yapma sorunu ve çözümü

jQuery ile uğraşıyorsak eğer hepimiz görmüşüzdürki inputtan aldığımız veriler ile işlem yaparken terslik olabiliyor. örneğin inputtan aldığımız iki sayıyı toplamak istediğimizde 5+5=10 olması gerekirken 5+5=55 şekline toplama operatörünü ters bir şekilde kullanıp birinci değeri ikinci değerin yanına kaynak yapıyor.
Bunun nedeni nedir diye sorarsanız herhangi bir veri tipi belirtmediğimiz için inputtan aldığımız verileri jQuery kütüphanesi string olarak kabul ediyor bizde strniglerle işlem yaptığımız için toplama işlemindede doğalen yanyana eklemesi gerekiyor.
şimdi sorunumuzun çözümüne gelelim çözümümüz şöyleki inputtan aldığımız verinin veri tipini değiştireceğiz artık kodlarımıza geçebiliriz
öncelikle veri tipini değiştirmek için jQuery in parseInt() fonksiyonunu kullanacağız.

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
<html>
<head>
<title>Vehbi AKDOĞAN - jQuery parseInt</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript">
function hesapla(){
var s1 = $("#sayi1").val();
var s2 = $("#sayi2").val();
var hatali_toplam = s1+s2;
var gercek_toplam = parseInt(s1)+parseInt(s2);
$(".aaa").html("Hatalı toplam: "+hatali_toplam+"<br> Gerçek Toplam: "+gercek_toplam);
}
</script>
<style type="text/css">
body{
width:700px;
margin:0 auto;
background:#e2e2e2;
color:#583afe;
}
</style>
</head>
<body>
sayi1: <input type="text" name="sayi1" id="sayi1" /><br>
sayi2: <input type="text" name="sai2" id="sayi2" />
</br>
<button id="button" onClick="hesapla();"> Hesapla </button>
<div class="aaa" style="border:1px dashed #eee;"></div>
</table>
</body>
</html>

Hem hatlı toplama işlemi hemde normal bir toplama işlemini gösterdim. aldığınız değerler integer değillerse parseInt yerine parseFloat ta kullanabilirsiniz.

Javascript-jQuery