Barış atalay etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Barış atalay etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

15 Şubat 2019 Cuma

Find Slow Queries With SQL DMVs

Find Slow Queries With SQL DMVs



For example, this query below can be used to find the queries that use the most reads, writes, worker time (CPU), etc.

SELECT TOP 10 SUBSTRING(qt.TEXT, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(qt.TEXT)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2)+1),
qs.execution_count,
qs.total_logical_reads, qs.last_logical_reads,
qs.total_logical_writes, qs.last_logical_writes,
qs.total_worker_time,
qs.last_worker_time,
qs.total_elapsed_time/1000000 total_elapsed_time_in_S,
qs.last_elapsed_time/1000000 last_elapsed_time_in_S,
qs.last_execution_time,
qp.query_plan
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
ORDER BY qs.total_logical_reads DESC -- logical reads
-- ORDER BY qs.total_logical_writes DESC -- logical writes
-- ORDER BY qs.total_worker_time DESC -- CPU time

7 Nisan 2017 Cuma

Android Material Design Icon Generator Plugin

Merhabalar,

Projeleriniz için rahatça Material Ikon ekleyebilmeniz için bir eklenti keşfettim.
Bu eklenti sayesinde istediğiniz boyutlarda, renkte ve tipte ikonu hızlıca ekleyebiliyoruz.
Aşağıdaki gifte göreceğiniz işlemleri yapmanız yeterlidir.

Not: En aşağıda verdiğin kaynak linkini incelerseniz Linux ve macOS için anlatımı mevcuttur.




Kurulum
1- Eklentinin son veriyonu BURAYA TIKLAYARAK indirilir.
2- Android Studio açınız.
3- Toolbardan File|Settings | Plugins yerine kadar açınız.
4- Ekranın aşağısındaki 3 butonun en sağındaki "Install from disk" e basıp indirdiğimiz .zip dosyasını seçiyoruz.
5- Android Studioyu kapatıp tekrar açıyoruz.

Kaynakhttps://github.com/konifar/android-material-design-icon-generator-plugin

3 Nisan 2017 Pazartesi

Android Swipe Layout

Merhabalar,

Aşağıda gördüğünüz gifdeki kaydırma olayı(Swipe Layout) IOS da çok sıklıkla kullanılan bir olaydır. Benzerini bir projemde harici kütüphane olarak kullandığım olmuştu.Birçok açıdan buton tasarrufu sağlayan bir yapı olduğu için paylaşmak istedim.

GitHub: https://github.com/barisatalay/SwipeLayout

IOS Örneği



Android Örneği


Kurulum:
Gradle Eklenecek:
      compile "com.daimajia.swipelayout:library:1.2.0@aar"

Bu Swipe Layout için RecyclerView kullandığı adapterimizin "RecyclerSwipeAdapter" sınıfından türemesi gerek ve aşağıdaki methodu adapterimize tanımlamalıyız.

@Override
public int getSwipeLayoutResourceId(int position) {
  //Buradaki sample_swipe Satır layoutunda görebilirsiniz.
  return R.id.sample_swipe;
}

Sıradaki işlemimiz adapterin ViewHolder constructor bölümünde xml tarafındaki SwipeLayout elemanının özelliklerini atamak.


swipeLayout.addDrag(SwipeLayout.DragEdge.Right, swipeLayout.findViewWithTag("Bottom2"));

setShowMode(SwipeLayout.ShowMode.LayDown);


Yukarıda findViewWithTag içerisindeki Bottom2 satır layoutumuzdaki SwipeLayout elemanının alt viewi olan ve kaydırınca gözükecek bölümün tagıdır.

Okurken biraz karışık gelebilir fakat örnek kodu Github'dan incelediğinizde çok basit bir kullanımın olduğunu göreceksiniz.

Aşağıda kaynağı paylaşıyorum benim anlattıgımdandan farklı Swipe örnekleri mevcuttur.

Kaynakhttps://github.com/daimajia/AndroidSwipeLayout

30 Mart 2017 Perşembe

Android Studio İpuçları

Merhabalar,

Android Studio'nun IDE üzerindeki ayarlarınızı İçe Aktarma / Dışa Aktarma gibi özelliği mevcuttur.
Yeni bir Android Studio sürümü yüklediğinizde fark etmişsinizdir size içe aktarmak ister misiniz diye sormakta.

Önemli Tavsiye: Ayarlarınızı her zaman Google ile login olarak bulut üzerinde saklamanız.

Satır Numaralarını Gösterme
Android Studio'yu ilk kurduğumda ve kullanmaya başladığımda hata loglarında bana gösterilen satır numaralarını rahatça görebilmekti. Bunun varsayılan olarak neden gösterilmediğini hiç merak ettiniz mi ?

Satır numaraları gözümezken

Satır numaraları ile

Kurulum
1- Toolbardan File|Settings|Editor|General|Appearance  yerine kadar açınız.
2- Aşağıdaki resimde gösterildiği gibi "Show line numbers" seçeneğini işaretleyiniz.



Camel humps
Ctrl + Sol/Sağ ok tuşlarıyla kodunuz arasında dolaşırken Android Studio 'Camel Humps' sözlerine saymaz.



Kurulum
1- Toolbardan File|Settings|Editor|General|Smart Keys  yerine kadar açınız.
2- Aşağıdaki resimde gösterildiği gibi "Camel Humps" seçeneğini işaretleyiniz.


Not: Bu işlemi yaptıktan sonra artık kelime kelime seçebilme şansınız oluyor. Denediğinizde göreceksiniz biraz sinir bozucu bir durum. Eğer mouse ile seçerken bütün hepsini seçmesini istiyorsanız aşağıdaki adımları uygulamanız gerekmektedir.

Kurulum
1- Toolbardan File|Settings|Editor|General  yerine kadar açınız.
2- Açılan yerde 'Honor "CamelHumps" words settings when selecting on double click' seçeneğinin işaretini kaldırınız.


Anında Kütüphane Ekleme

Android Studio'da kullanılmayan içe aktarmaları otomatik olarak içe aktarmak veya temizlemek için kısayollar vardır. Sene olmuş 2017 bizi uğraştırmak yerine otomatik olarak sınıfın kütüphanesini kendisi eklese hoş olmaz mı?

Anında Kütüphane Ekleme olmadan


Anında Kütüphane Ekleme ile



Kurulum
1- Toolbardan File|Settings|Editor|General|Auto Import yerine kadar açınız.
2- Aşağıdaki resimdeki gibi "Optimize imports on the fly" ve "Add unambiguous imports on the fly" seçeneklerini işaretleyiniz.
















29 Mart 2017 Çarşamba

Android Studio Inner Builder

InnerBuilder

Bu eklenti sayesinde onlarca saniyenizi alan bir işlem olan builder constructor oluşturma işlemini saniyelere indirebilirsiniz. 

Eklenti dosyasını BURADAN indirebilirsiniz.


28 Mart 2017 Salı

Android File Grouping Plugin v1.1

Merhabalar,

Aşağıda bahsettiğim eklenti sayesinde proje görünümünüz "Project" ise resource klasörlerinizi gruplamanıza olanak sağlar.



Önemli Not:

  • Klasörleri taşımaz.
  • Yeni bir klasör oluşturmaz.
  • İngilizcem çok iyi değildir. Anladığım kadarı ile aktarmaya çalıştım.



Kurulum
1- Eklentinin son veriyonu BURAYA TIKLAYARAK indirilir.
2- Android Studio açınız.
3- Toolbardan File|Settings | Plugins yerine kadar açınız.
4- Ekranın aşağısındaki 3 butonun en sağındaki "Install from disk" e basıp indirdiğimiz .zip dosyasını seçiyoruz.
5- Android Studioyu kapatıp tekrar açıyoruz.

Kullanımı

Örnek olarak "layout" klasöründekileri gruplayalım.

1- "layout" klasörüne sağ tıklayınız.
2- En üste göreceğiniz üzere "Group/Ungroup" seçeneğine tıklayınız.

Hide Folding Prefix

Bu özellik sayesinde dosya adlarını grupladığınız öneksiz görebilirsiniz.


Ön ekleri gizlenmemiş

Ön ekleri gizlenmiş



Kullanımı
1- Toolbardan File|Settings yerine kadar açınız.
2- Sol menüden en aşağıdaki "Other Settings" bölümünü açın.
3- "Hide Folding Prefix" seçeneğini tıklayın.
4- Görünümü yenilemek için klasörleri "daraltın/genişletin"



Custom Prefix Pattern


Custom prefix pattern olmadan

Custom prefix pattern ile

Bu özellik, filtreleme için alt çizginin hangi konumunun alınacağını belirleme olanağı verir.

Kullanımı
1- Toolbardan File|Settings yerine kadar açınız.
2- Sol menüden en aşağıdaki "Other Settings" bölümünü açın.
3- "Use Custom Pattern" işaretlenir ve kendi özel deseniniz tanımlanır.
4- Görünümü yenilemek için klasörleri "daraltın/genişletin"
5- Not: varsayılan desen klasörler oluşturmak için dosya adının ilk iki alt çizgisini alır.



11 Mart 2017 Cumartesi

Android Thermal Bluetooth Printer Helper

Android Thermal Bluetooth Printer Helper



Piyasada birçok farklı termal bluetooth yazıcı olduğu aşikar ve bunların birçoğuna aynı şekil text gönderip yazdırma işlemini yapabiliyoruz. İşte kütüphanemizde bu işe yarıyor.

Ek olarak kütüphanemiz kendi içerisinde;
  İzinleri kontrol ediyor,
  Kendi Yazıcı seçim ekranı mevcut,
  İsteğe göre yazıcı seçim ekranı açtırmadan direk deviceAddress tanımlayarak çıktı alabilinir,
  Test sayfası yazdırma.

Gibi özellikleri mevcuttur. Kütüphaneyi kullandıkça ve yeni özellik gerektikçe eklemelerde bulunacağım.

Kütüphanenin kullanımı oldukça basit. 1 örneği burada yazıyorum devamı github projesi içerisinde.

Github: https://github.com/barisatalay/thermalprinterhelper
Demo: https://play.google.com/store/apps/details?id=com.atalay.bluetoothexample


  
  //Parameter 1: Activity,
  //Paremeter 2: BluetoothCallback interface
  BluetoothProvider bluetoothProvider = new BluetoothProvider(this, this);

  //Control of required permissions.
  //Check terminal device pair / unpair control.
  //Connect to BluetoothSocket
  //If don't have any pair devices, if it have permission open devices activity 
  bluetoothProvider.connect()

  //This value default false
  bluetoothProvider.printText("This is PRINT TEST!!!")

Ekran görüntüleri







8 Mart 2017 Çarşamba

Android LoadingIndicatorView Library

Android LoadingIndicatorView Library

Merhabalar,

Sizlere hali hazırda bulunan bir view kütüphanesi olan "AVLoadingIndicatorView" in farklı bir kullanımı için kütüphane hazırladım. 

Mevcut olan "AVLoadingIndicatorView" sadece xml tarafına eklenen bir componenttir. Ben bunu full ekran loading olarak kullanılabilecek bir kütüphane haline getirdim.

Demo proje içerisinde kütüphanenin desteklediği 27 çeşit loading örneğini görebilirsiniz.



Kullanımı
allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }

build.gradle eklenecek olan:
 dependencies {
       compile 'com.github.barisatalay:loadingindicatorview:-SNAPSHOT'
    }

Kullanımı oldukça basit:

   //Parameter 1: Activity,
   //Paremeter 2: Message String or String resource Id
   //Parameter 3: Indicator Type   
   LoadingIndicatorView.show(mActivity, "Please Wait", LoadingType.BallPulseIndicator);

   //For hide Indicator View
   LoadingIndicatorView.hide();

   //For change text Indicator View
   //Paremeter: Message String / String resource Id
   LoadingIndicatorView.changeText("Downloading..");

Aşağıda ekran görüntüleri bulunmakta




7 Mart 2017 Salı

Android Localization Activity

Merhabalar,



Çoğumuz projelerimizde birden fazla dil desteği sağlıyoruz. Bunun için herkes kendisine göre bir yöntem geliştirmiş bulunmakta. Ben genelde Amerikayı yeniden keşfetme taraftarı değilim eğer kütüphane gerçekten istendiği gibi iş yapıyorsa :)

Sizelere bahsedeceğim kütüphane "Android-LocalizationActivity" projenizde istediğiniz kadar dil desteği vermenizi sağlamaktadır.

Ben kendimde nasıl kullanmışsam size öyle bir BaseActivity hazırladım ve aşağıdaki koddan BaseActivitye erişebilirsiniz.

Fakat öncelikle main/res içerisinde hangi dili kullanmak istiyorsanız ona uygun klasörü oluşturmanız gerekmektedir.

Klasör oluştururken kullandığımız isimleri aşağıdaki linkten seçebilirsiniz. Ben bu listedekileri kullanmaktayım.
https://github.com/barisatalay/AndroidLocalizationExample/blob/master/tools/LanguageSource.json

Örneğin almanca için bir dil klasörü oluşturacaksak adı "values-de" olmalıdır ve klasörün içerisinde "strings.xml" dosyası olmalıdır.

Projeyi Github içerisinede yüklüyorum isteyenler Google Play üzerinden uygulamanın demosuna bakabilirler ve githubdan örnek projeyi inceleyebilirler.

Demo: https://play.google.com/store/apps/details?id=com.atalay.androidlocalizationexample
Github: https://github.com/barisatalay/AndroidLocalizationExample

İyi çalışmalar dilerim.


Gradle eklenmesi gereken: compile 'com.akexorcist:localizationactivity:1.1.2'


public class BaseActivity extends AppCompatActivity {
    private LocalizationDelegate localizationDelegate = new LocalizationDelegate(this);
    private String activeLangCode = "";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        localizationDelegate.onCreate(savedInstanceState);
        super.onCreate(savedInstanceState);

        //Aktif olan dil kodunu alıyoruz.
        activeLangCode = (PreferenceManager.getDefaultSharedPreferences(this.getApplicationContext())).getString(getString(R.string.pref_general_language),"en");

        setLanguage(activeLangCode);
    }

    @Override
    public void onResume() {
        super.onResume();
        localizationDelegate.onResume();
    }

    /*
    * Kütüphaneye aktif olan dil kodunu gönderiyoruz ve
    * kütüphane uygulamamızın aktif olan Activitysini yeniden oluşturuyor
    * bu sayede string resourceler gerekli dilden çekiliyor.
    */
    public final void setLanguage(String language) {
        localizationDelegate.setLanguage(language);
    }

    public final void setLanguage(Locale locale) {
        localizationDelegate.setLanguage(locale);
    }

    public final void setDefaultLanguage(String language) {
        localizationDelegate.setDefaultLanguage(language);
    }

    public final void setDefaultLanguage(Locale locale) {
        localizationDelegate.setDefaultLanguage(locale);
    }

    public final String getLanguage() {
        return localizationDelegate.getLanguage();
    }

    public final Locale getLocale() {
        return localizationDelegate.getLocale();
    }

}

20 Şubat 2017 Pazartesi

Android Recyclerview Disable Scrolling

Bu işlem için RecyclerView nesnesinin LayoutManager özelliğinden yardım alacağız.



Öncelikle CustomLayoutManager adında yeni bir sınıf oluşturuyoruz ve aşağıdaki gibi tasarlıyoruz.

public class CustomGridLayoutManager extends LinearLayoutManager {
    private boolean isScrollEnabled = true;

    public CustomGridLayoutManager(Context context) {
        super(context);
    }

    public void setScrollEnabled(boolean value) {
        this.isScrollEnabled = value;
    }

    @Override
    public boolean canScrollVertically() {
        return super.canScrollVertically() && isScrollEnabled;
    }
}


RecyclerView için LayoutManager oluştururken yeni hazırladığımız sınftan extend ediyoruz.

RecyclerView main_dashboard;
CustomGridLayoutManager layoutManager = new CustomGridLayoutManager(this.getApplicationContext());
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
layoutManager.scrollToPosition(0);

main_dashboard.setLayoutManager(layoutManager);
main_dashboard.setHasFixedSize(true);


layoutManage.setScrollEnabled(true/false) şeklinde istediğinizde scroll olayının erişilebilirliğini değiştirebilirsiniz.

11 Şubat 2017 Cumartesi

Android Bluetooth Cihaz Listeleme Sorunu

Merhabalar,

Başıma gelen bir olay sonrası fark ettiğim bir durumdur. Açıklayayım.

Android Marshmallow versiyonundan önce AndroidManifest.xml içerisinde bluetooth izinlerini tanımlamak yeterliydi.

Fakat Marshmallow ile beraber uygulama çalışırken izin isteme istemi geldi bunun için bluetooth izilerini lazım olduğunda istememiz gerekmektedir ve bunun yanı sıra bluetooth cihazlarını tarayabilmek için ek olarak "android.permission.ACCESS_FINE_LOCATION" izinide gerekmektedir. Eğer bu izni sağlamassanız bluetooth cihazları listeleyemiyorsunuz.

İyi çalışmalar.

3 Aralık 2016 Cumartesi

Android activity başlangıçta klavye kapatma

Merhalar,

Kendime notlarımı tekrar yazma gereği duymaya başladım. İş yoğunluğu, günlük hayatta başımıza gelenler derken aklımızdan birçok şey uçabiliyor onların önüne geçmek için sizlere de tavsiyem Online veya Offline notlar tutmanız.

İyi çalışmalar Dilerim..



AndroidManifest.xml dosyası içerisinde hangi activitynin açılış anında herhangi bir inputa konumlanarak klavye açılması engellemek istiyorsanız aşağıdaki örnekteki kodu ekleyiniz.

<activity android:name=".View.QuickSale.QuickSaleActivity"
android:theme="@style/AppTheme.NoActionBar"
 android:windowSoftInputMode="stateHidden"/>

29 Eylül 2016 Perşembe

Unity Visual Studio Debug Plugin

Visual Studio Attach to Unity


Merhabalar,

Unity'de script kısmını visual studio ile yazan arkadaşlar farkadecekler ki debug yapamıyoruz. 

Bunun için bir plugin buldum aşağıda Visual Studio versiyonlarına göre linkleri vericem uygun olanı kendinize indirebilirsiniz. 

Visual Studio 2010 Tools for Unity
Visual Studio 2012 Tools for Unity
 Visual Studio 2013 Tools for Unity
Visual Studio 2015 Tools for Unity   

Gerekli olan plugini kurduktan sonra altaki resimde gördüğünüz gibi "DEBUG>>Attach Unity Debugger" seçeneği geliyor.

Buna tıklayıp Unity üzerinden play tusuna basarak Debug işlemlerinizi yapabilirsiniz.


 

14 Haziran 2016 Salı

PHP Base64 Image Write To Folder

$entry = base64_decode("pqWD7tQXnye4pE6mnUA");// Here your Base64 codes

$image = imagecreatefromstring($entry);
     
$directory = $_SERVER['DOCUMENT_ROOT'];//Server Root directory
     
$directory = $directory. '/Mangalar/testo.jpeg';
     
imagejpeg($image, $directory);

imagedestroy ( $image );

17 Mayıs 2016 Salı

Android Multiple User Chat with NodeJs

Merhabalar,

Can sıkıntısından denemeler yaparken kullandığım temel bir yapıyı sizlerle paylaşmak istiyorum.

Bu projede NodeJs nasıl kullanılır anlatamayacağım için, direk dosyaları sizle paylaşma gereği duyuyorum.

Proje, portumuz üzerinden servere  bağlanan bütün clientlerin tek bir kanal üzerinden birbirleriyle json yardımı ile haberleşmesi üzerine çalışmaktadır. Projeyi temel düzeyde tuttuğum için çok aşırı profsyonel birşey beklemektense herkes üzerine koyup daha komplike bir yapı haline getirebilir.

Json yardımı ile haberleşirken gönderilebilecek bilgiler;

  • Kullanıcı Adı,
  • Kullanıcı Id,
  • Mesaj Tarihi,
  • Mesaj İçeriği
  • Mesajı gönderen kişinin Ip Adresi,
  • Mesajı gönderen kişinin IMEI.
Proje Linki:  http://www.mediafire.com/download/w9yb9cojgmxi3js/AndroidMultiChatWihNodeJs.rar

Örnek Görüntü

10 Ağustos 2015 Pazartesi

Android - equals()

Merhabalar,

Delphici arkadaşların aşina olduğu şekil bir if sorgusunda her zaman birebir eş mi sorusuna cevap ararken kullanılarak operator "=" (eşittir.) idi.

Java ile android programlamaya geçtiğimde burada çok kafam karışmıştı. Birer cümle ile yaptıklarını açıklamak gerekirse.

equals() : String ifadeler içerisindeki karekterleri karşılaştırırken,
== : Operatörüde iki objenin referanslarını karşılaştırır.

Buradan yola çıkarak şunları söyleyebiliriz iki farklı obje aynı string karakterleri içerebili ama referans aldıkları objeler farklı olabilir.

30 Temmuz 2015 Perşembe

Android - Any thread synchron to the MainThread

new Thread(new Runnable() {
  public void run() {
    //Write something code.
    Activity_Name.this.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            EditText1.setText(""); <-- Here
        }
    });
    sendingMessage = "";
  }
}).start();

27 Temmuz 2015 Pazartesi

Java - Dialog remove title


  final Dialog dialog = new Dialog(view_animebolum.this.getApplicationContext());
  dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
  dialog.setContentView(R.layout.layout_sendcomment);

 dialog.show();

13 Temmuz 2015 Pazartesi

Android.os.NetworkOnMainThreadException Hatası ve Çözümü

Bu problemin 2 çözümü var.

1-Ana thread içinde network işlemleri yapıldığı için oluşur.Network işlemlerini Async Task içinde yapmak gerekir.

2-setContentView methodundan sonra aşağıdaki kodu ekleyin ve android.os.StrictMode import edin.

if (android.os.Build.VERSION.SDK_INT > 9)
{
  StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();           StrictMode.setThreadPolicy(policy);
}

Alıntı: http://abdullahcetinkaya.com/

25 Mayıs 2015 Pazartesi

İzmir'de Delphi yazılımcısı aranıyor [BULUNDU]

İzmirde ikametgah etmekte olan veya gelebilecek,
Delphi konusunda tecrübeli,
Tercihen Javascript'de tecrübeli takım arkadaşları aranmaktadır.

 İletişim: sinav.ahmet@gmail.com