22 Mayıs 2017 Pazartesi

ADVICES FOR SOFTWARE ENGINEERING(Yazılım Mühendisleri için Ögütler Tavsiyeler)

ÖNERİLER :

1) Bİr örnek kodu kesinlikle kopyalayıp yapıştırıp çalışrımayın kendiniz yazmaya çalıtırmaya çalışın böylece hatalrınızı görecek ve kodu çalımasını daha iyi anlayacaksınız
2)Tasarım Önemldir
3)Sabır ikinci önemli !!.Bir hata yüzünden saatlerce hata ayıklama yapılacaktır buda sabırla yapılması gerekn bir durumdur
4)Mantıklı,titiz ve Kesin Bir Şekilde süreçleri anlamak ,kavramak ve düşünmek gerekir
5)İyi bir sorun çöüzcü olun!! Sorunların üzerine igtmekten korkmayın istekil olun böylece iyi bir programcı olabilirsiniz  yoksa SIKICI ve SINIR BOZUCU bir kariyeriniz olur







YAYGIN YAZILIM HATALARI(Common Programming Mistakes):

1) Değişkeni tanımlamama

int main()
{
  cin>>x;
  cout<}

X değişkenin türü tanımlanmamıştır

int main()
{
  int x;
  cin>>x;
  cout<}


2)Değişkenin ilk değerinin verimemiş olması

int count;
while(count<100 p="">{
  cout<  count++;
}

Döngü bitmez


3) Fonksiyonu Tanımlamama
int main()
{
  menu();
}
void menu()
{
  //...
}



hata almamak icin


void menu();
int main()
{
  menu();
}
void menu()
{
  ...
}


4) Dizi sınır değerlerinin aşılması


hatalı :
int array[10];
//...
for(int x=1; x<=10; x++)
  cout<

array[10] dizisi 0 ile 9 a kadar elemanlar alır şayet array[10] tanımlı değildir hata verir


dogru :

int array[10];
//...
for(int x=0; x<10 p="" x="">  cout<
Share:

BEST PRACTICES FOR SOFTWARE ENGINEERING (Yazılım Mühendisliği Pratikler)

*Çok Partikle insanın özgüveni glir ve pekçok şey artık alışkanlık halinde devam eder. örneğin bir araba sürmek gibi.
*Yazılım geliştirmenin diğer yeteneklerden farkı yoktur ne kadar çok geliştirildiğine ne kadar alışkanlık haline getirilidiğine bağlıdır. Atış Yapmak , Araba Sürmek gibi..
 İyi Bir Yazılım Geliştiricisi olmak için Çok Fazla pratik ve özeveriye ihtiyac vardır .

* Best Practice 1:  Yazılım Kaynak Kodları Okuyun 
  İyi Bir Roman yazarı Olabilmek için iyi bir okur olmak gerekir  .Şayet iyi bir yazılım kodu yazmak için ise kaynak kodlar okumadan bu mümkün olmayacaktır
  Kaynak kod okumak başkalarının hatalarını görmenize eleştirmenize neden olur ve bu hataları siz yapmazsınız
  Başkalarının kodunu okumak sizi geliştirecek güzel kodlar yazmanıza ve hatalarınızı daha kolay görmenize neden olacaktır
*Best Practice 2:  Dokumanları ve Gereksinimleri Anlamadan Kavramadan Kodlamaya Geçme !!!
 Dokuman basarılı yazılımcılar,testciler ve  yazılım mimarları  için Projenin ilerleyen safhalarında karşılaşılan sorunlara karşı  iyi bir anahtardır .
 Önemli ve Bilinmesi Gereken Bilgielr :  1) Tassarım Yaklasımları 2) Debbugging Yöntemleri 3) Best Practices
*Best Practice 3:  Kodlama Standartlarını Takip Edin ,Kullanın  kendi STANDARTLARINIZ OLUŞTURMAYIN!!!
  Kodlama standartları uyuzn yıllar tecrübelerle oluşturulmuş standartlardır . Kodalam standardınız yoksa internet dile ait kodlama standartlarını aratmanız önerilir
Kodlama standartlarına ait bir kac konu : 1) Dosya adlnadırma kuralları 2)Fonksiyon Modüul Adılandırma  3)Değişekn Adlandırma 4)Okunabilirlik
Kodunuz sizn BEBEĞİNİZDİR !! Bu yüzden temiz,düzenlii ve tutarlı tutun
*Best Pracitce 4: Kod Gözden Geçirilmk için Yazılmalıdır . Birisi kodunuzu incelerken eleştirebilecegi noktalar 
                //Kötü Kodlama , Standartlara Uymuyor , Grintileme ve Yorumlar uygun değil , Okunurluğu Zayıf , Çok fazla Global Değişken Var , Kod Tekrarı Fazla
//Hata işleme Zayıf , Modülerlik Yok
Yukarıdaki noktaları sğalamaya  kod yazarken dikkat edilmelidir . Kodlamanız bittikten sonra en az bir kez kodunuz bu noktaları sağlayıp sglamadıgına
göz atın. Gözden Geçirme Sorunların yüzde 90 nın  kalkmasını sağlayacaktır
*Best Practice 5: Eleştirmeyin ama eleştiri Kabul edin
            Kötü yazılmıs kaynak kodu iyi dersler çıkarmanızı ve iyi kaynak kodu yazmayı ögretir
Yazılım yazarken hedefin BUG oluşturmak olmalıdır bir testci gibi düşünmelisin böylece Testerlara meydan okuyabilirsin .
*Best Pracite 6: Testi Bir Dİn gibi Görün !!!
Yapılan her değişikilikten sonra ne kadar kıdemli yada uzman olursanız olun her değişiklikten sonra test yapmayı unutmayın .
*Best Practice 7 : Kodlarınızı ve dokumanlarınız güvende tutun!! 
Akıllı bir yazılımcı kodlarını başka bir deopda düzenli olarak saklar eğer bilgisayarı çökmesi durumunda kendisininde çökmemesi için bu gereklidir
böyle bir durum gerçekleşmesi durumunda kopya yedekten işlerine devam edebilir. Yedek almak önemlidir fakat cok yedekte karışıklığa yol acabilir
bu yüzden yedek alırken dosya ad tarih iceren yedekler alınması karısıklıgı önleyecektir bunun güzel yolu ise VERSIYON KONTROL SISTEMI Kullanmaktır .
*Best Practice 8: Araçlarınız ve Tekniklerinizi Kullanışlı Tutun
Çalışırken bize hız kazandıracak araç ve komutalrı bellirli yerde düzenli şekilde tutmak faydalıdır . örnegin :
$find . -name \*.cpp -exec grep -q "debug" '{}' \; -print   gibi bir komut bize kısa sürede cok seyi yapmamamızı saglayacaktır böyle
cok kullandıgımız komutları bir dosyada toplamak mantıklı olacaktır

BİRKAÇ GEREKLİ ARAÇ:
1)Metin Editörü
2)İyi bir hata ayıklayıcı Debugger
3)Putty uzak masa üstüne ulaşabilmek için
4)WinSCP veya Filezilla dosya transferi için
*Best Practices 9: EGOYU BIRAK, ÖGRENME HEVESLİ OL!!!
Kitaplardan internetten çok şey ögrenebilirz fakat meslektaşlarımızdan öğrenecegimiz bilgiler daha hızlı ve yararlıdır bu yüzden ego değil ögrenme taraftarı olmak gerekir
Bunlar bizim en iyi referanslarımızdır bazıları sormaktan çekiniyor yada teşekkür etmeyi bilmiyor bu yüzden bir sonraki seferde cevap alma ihtimali sıfıra yakın olmaktadır

*Best Practices : Her gün Gelişen Teknoljileri Takip etmek!!!
Piyasada bulunabilmek için en son araçları ve teknolojileri takip etmek gerekir.Bazı takip etme şekilleri
1)internet üzerinden forumlardan
2)IT konulu teknik magazin dergilerinden
3)Konferanslar,Eğitim ve Seminlerlerden
4)Son araçlar dillerden 
Share:

4 Nisan 2017 Salı

3 Nisan 2017 Pazartesi

QT- QVİDEO PLAYER

videoplayer.pro

#-------------------------------------------------
#
# Project created by QtCreator 2017-04-03T15:39:03
#
#-------------------------------------------------

QT       += core gui multimedia multimediawidgets



greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = videoplayer
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0


SOURCES += main.cpp\
        dialog.cpp

HEADERS  += dialog.h

FORMS    += dialog.ui



--------------------------------------------------------------------

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include < QDialog>

namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT

public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();

private:
    Ui::Dialog *ui;
};

#endif // DIALOG_H

------------------------------------------------------------------------------

dialog.cpp


#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui- > ;setupUi(this);
}

Dialog::~Dialog()
{
    delete ui;
}

----------------------------------------------------------------------------
main.cpp

#include "dialog.h"
#include < QApplication>
#include< QMediaPlayer>
#include< QVideoWidget>
#include< QDebug>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    // Dialog w;
    // w.show();
   QMediaPlayer* player = new QMediaPlayer;
   QVideoWidget* vw = new QVideoWidget;
   player->setVideoOutput(vw);
   player->setMedia(QUrl::fromLocalFile("//C://Users//dtsis//Desktop//vi.mpg"));
   vw->setGeometry(100,100,300,400);
   vw->show();
   player->play();
   qDebug() << player->state();

    return a.exec();
}
Share:

QT- QMEDİAPLAYER

MyPlayer.pro

#-------------------------------------------------
#
# Project created by QtCreator 2017-04-03T14:07:12
#
#-------------------------------------------------

QT       += core gui multimedia

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = MyPlayer
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0


SOURCES += main.cpp\
        dialog.cpp

HEADERS  += dialog.h

FORMS    += dialog.ui




----------------------------------------------------------------------

dialog.h


#ifndef DIALOG_H
#define DIALOG_H

#include < QDialog>
#include< QMediaPlayer>
#include< QDebug>
namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT

public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();

private slots:
    void on_sliderProgress_sliderMoved(int position);

    void on_sliderVolume_sliderMoved(int position);

    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void on_durationChanged(quint64 position);

     void on_positionChanged(quint64 position);

private:
    Ui::Dialog *ui;

    QMediaPlayer* player;
};

#endif // DIALOG_H


-------------------------------------------------------------

dialog.cpp

#include " dialog.h"
#include " ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    player = new QMediaPlayer(this);


    connect(player,&QMediaPlayer::positionChanged,this,&Dialog::on_positionChanged);
    connect(player,&QMediaPlayer::durationChanged,this,&Dialog::on_durationChanged);
}

Dialog::~Dialog()
{
    delete ui;
}

void Dialog::on_sliderProgress_sliderMoved(int position)
{
  player->setPosition(position);
}

void Dialog::on_sliderVolume_sliderMoved(int position)
{
    player->setVolume(position);
}

void Dialog::on_pushButton_clicked()
{


    // Load File

    player->setMedia(QUrl::fromLocalFile("//C://Users/dtsis//Desktop//se.mp3"));
    player->play();
    qDebug() < < player->errorString();




}

void Dialog::on_pushButton_2_clicked()
{
   player->stop();
}

void Dialog::on_durationChanged(quint64 position)
{
   ui->sliderProgress->setMaximum(position);
}

void Dialog::on_positionChanged(quint64 position)
{

    ui->sliderProgress->setValue(position);
}


----------------------------------------------------------

main.cpp


#include "dialog.h"
#include < QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Dialog w;
    w.show();

    return a.exec();
}

----------------------------------------------------------------

Share:

QUDP SOCKET

myudp.h


#ifndef MYUDP_H
#define MYUDP_H
#include < QObject>
#include< QUdpSocket>
class MyUDP : public QObject
{
    Q_OBJECT
public:
    explicit MyUDP(QObject *paretnt = 0);
    void SayHello();
signals:
public slots:
    void readyRead();
private:
    QUdpSocket *socket;
};

#endif // MYUDP_H



-------------------------------------------------------
 main.cpp


#include 
#include "myudp.h"
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    MyUDP server;
    MyUDP client;
    client.SayHello();
    client.SayHello();
    return a.exec();
}


---------------------------------------------------------
myudp.cpp


#include " myudp.h"
MyUDP::MyUDP(QObject *parent):
    QObject(parent)
{


    socket = new QUdpSocket(this);
    socket->bind(QHostAddress::Any,1234);
    connect(socket,SIGNAL(readyRead()),this,SLOT(readyRead()));

}
void MyUDP::SayHello()
{
    QByteArray Data;
    Data.append("Hello from UDP ");
    socket->writeDatagram(Data,QHostAddress::LocalHost,1234);
}
void MyUDP::readyRead()
{
    QByteArray Buffer;
    Buffer.resize(socket->pendingDatagramSize());
    QHostAddress sender;
    quint16 senderPort;
    socket->readDatagram(Buffer.data(),Buffer.size(),&sender,&senderPort);
    qDebug() < < "Message From : " << sender.toString();
    qDebug() < < "Message Port : " << senderPort;
    qDebug() < < "Message : " << Buffer << "\n\n\n";

}



Share: