Python Django Web Framework

2 sene kadar önce Django kullanarak kendi blogumu yapmaya çalışmıştım. Aynı zamanda bu geliştirme sürecini de hazırladığım blogda paylaşacaktım. Blogum birkaç kere hosting transferi ve zararlı dosya saldırısı gibi problemlerden dolayı çökmüştü. Sonra dedim ki blogum her zaman sağlam kalmalı bu yüzden wordpress altyapıya geçtim.

Django ve Spring 2 sevdiğim web frameworkünü ise profesyonel ve amatör işlerimde kullanacaktım. Bu amaçla da bir arkadşımın istediği sonucu masaüstü uygulaması hazırlamak istiyorum. Görüşmekte olduğum bir firma için de Python bilgimi tazelemek istiyorum. Bu sebeple  Python QT kullanayım dedim: PyQt

Ancak kendi grafik komponentlerini pek beğenmedim eski windowslar gibi bir izlenim bıraktı. Kendisi Html de destekliyor ama madem html yazacağım o zaman Django kullanayım dedim. Bilindiği gibi Django , en kapsamlı Python web frameworkü. Diğerleri sunduğu özellikler olarak lightweight kalıyor. Bir vatandaş bizim için benchmark testi yapmış http://klen.github.io/py-frameworks-bench/

Django kullanmaya karar verdik bir sonraki adım ise bunu paketleyip masaüstü uygulaması haline getirmek olacak. Yani bizim geliştirme makinamızda kurduğumuz python 3.4 interpreter’ı bizim uygulama kodlarımızla beraber paketleyecek. İçine windows için bir bat veya exe atacak. Bu starterlar ise biizm scriptimiz çağıracak.

Spring Boot Referans dökümünanını Türkçe’ye çeviriyorum

Bu dökümanı https://www.gitbook.com adresinde yayınlayacağım. Bildiğiniz gibi git’in çoğu ürünü çıktı. Github’da kodlarımızı tutup versiyonluyoruz.  https://gitter.im/ ile konuşuyoruz. Gitbook’da kitap yazma veya döküman yayınlamak için bize altyapı sunuyor.

Şimdilik şu adreste kitap : https://www.gitbook.com/book/gosmik/spring-boot-turkce/details

Şekil olarak düzeltmeyi devam ederken tamamlamış olacağım.

No compiler is provided in this environment hatası ve çözümü

TR: Spring Boot ve STS tool kullanırken JDK kullanmalıyız JRE yerine. Çünkü biz hem derleme hem de run işlemleri yapıyoruz. Bu derlemeyi de biz Eclipse veya STS aracılığı ile yaptığımızda bunu onlar da bilmeli. Aşağıdaki adrese gidip JDK yı tanımlamalıyız.

Eclipse -> Window -> Preferences -> Java -> Execution Enviroments

EN: It means you use JRE instead of JDK

My setup consist of Eclipse Mars and Tomcat Server. Go to below adress and declare your jdk into STS as shown above screenshot

Eclipse -> Window -> Preferences -> Java -> Execution Enviroments

WordPress upload limit artırma

Bu konuda 3 yöntem var. Sırası ile

1 . php.ini üzerinde edit (Paylaşımlıu hosting kullanıyorsanız bunu elde etmek zor)

2. “.htaccess ” yı değiştirmek = > ku bu da paylaşımlı hostingde kısıtlar yüzünden çalışmıyor. Bu dosyayı normalde şartlarda göremezsiniz. Cpanel dosya yöneticisi üzerinde sağ üst köşede settingsden gizli dosyaları göster seçeneğini aktif etmeniz gerekiyor

 

3. Tema nın functions.php dosyasına bir ekleme yapmak. Bu dosyanın konumu public_html/wp-content/themes/bones-master(Benim temam bones oldugu için adress böyle sizde farklı olabilir).

Buraya şöyle bir yeni fonksiyon eklemeniz gerekiyor.

add_filter( ‘upload_size_limit’, ‘wpse_70754_change_upload_size’ );
function wpse_70754_change_upload_size()
{
return 1000 * 1024;
}

Gradle İyileştirmeleri

Android ile gelen gradle plugin ile derleme ve sonrasında farklı işler yapabiliyoruz. Öyle ki bu plugin de java ile yazıldığını söylersem ne kadar şey yapabileceğimizi daha iyi anlatmış olurum sanırım.

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        output.outputFile = new File(
                output.outputFile.parent,
                output.outputFile.name.replace(".apk", "-${variant.versionCode}.apk"))
    }
}

Yukarıdaki kod derlenen apk’nın isminin sonuna Manifest’te yazılı olan versioncode’u çekip koyuyor.  Bu kodu ana modulün build.gradle içinde android { …. } içinde herhangi bir yere koyarsanız derlemeden sonra operasyon yapıp değiştirecektir.

Bir de derleme ve build süresini kısalmak için gradle’ı configure ettim. Bunun için de gradle.properties dosyasında değişiklik yapıyoruz.

Bunlar derleme süresini ve startup süresini kısaltıyor.

org.gradle.configureondemand=true
org.gradle.parallel=true
org.gradle.daemon=true

 

Scanner Kullanımı ve bir trick

Merhabalar, Javada Scanner kütüphanesi ile komut satırından yapılan girdileri okuyabiliriz ve diğer girişleri de bekleyebiliriz. Bu basit bir konu ancak bir trickten bahsedeceğim. O da scanner’ın bize vermiş olduğu methodlardan biri olan nextline() input üzerinde bir satır ileri giderken nextInt() ve nextDouble() ilerlemiyor.

import java.util.Scanner;

public class Solution {

public static void main(String[] args) {
 Scanner scan = new Scanner(System.in);
 
 int i = Integer.parseInt(scan.nextLine()); 
 Double d = Double.parseDouble(scan.nextLine());
 String s = scan.nextLine();
 
 System.out.println("String: " + s);
 System.out.println("Double: " + d);
 System.out.println("Int: " + i);
 }
}

Yukarıdaki aşağıdaki gibi bir input denersek doğru sonuç verecek

42
3.1415
Welcome 

Sonuç:

String: Welcome
Double: 3.1415
Int: 42

 

Şöyle olsa idi eksik sonuç basacaktı. Sonuç da aşağıda. gördüğünüz gibi Stringde eksik var

 Integer i = scan.nextInt();
 Double d = scan.nextDouble();
 String s = scan.nextLine();

String: 
Double: 3.1415
Int: 42

Düzeltmek için ise kod şöyle olmalı(Dikkat ederseniz en üstteki methodlardan farklı methodlar bunlar)

 Integer i = scan.nextInt();
 Double d = scan.nextDouble();
 String s = scan.nextLine();

s = scan.nextLine();

Özetle şunu söylüyoruz. nextInt veya nextDouble() gibi methodlar yerine nextLine() ile okuyup parse etmek en temizi. böylece cursorun nerde kaldığını biz takip etmiyoruz.

İyi çalışmalar

Yusuf

 

app:transformClassesWithDexForDebug solution

I have faced below problem

Error:Execution failed for task ‘:app:transformClassesWithDexForDebug’. > com.android.build.api.transform.TransformException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: Error while executing java process with main class com.android.dx.command.Main with arguments {–dex –force-jumbo –num-threads=4 –multi-dex –output C:\Users\dtyunlu\AndroidStudioProjects\iris-mobil-android\app\build\intermediates\transforms\dex\debug\folders\1000\5\slice_2 C:\Users\dtyunlu\AndroidStudioProjects\iris-mobil-android\app\build\intermediates\transforms\instantRunSlicer\debug\folders\1\5\slice_2}

Although, tried the solutions from here : https://stackoverflow.com/questions/33915955/android-studio-transformexception-errorexecution-failed-for-task-apptransf

didn’t solve my problem.

So I have deleted this part from my gradle:

dexOptions {
    preDexLibraries true
    javaMaxHeapSize "4g"
    dexInProcess = true
}

It worked and solved my problem

SimpleDateFormat kullanımı

Amacımız bize “25.05.2017 09:00” gibi gelen bir tarih string’ini doğru parse istediğimiz formatta çıktı alabilmek.

Sadece saat kısmı için : “09:00” gibi sadece tarih için “25:05:2017”

“2001-07-04 12:08:56” şeklinde U.S. Pacific Time time zone da gelen stringi alıp

12:08 PM  olarak veya 12 o’clock PM  bastırabiliriz.

2001.07.04 AD at 12:08:56 PDT  => PDT pasifik daylight time demek.

Bu işler için 2 adım var 1. si gelen string için patterni bilip o pattern ile parse edip Date objesine aktarmak.

SimpleDateFormat inFormat = new SimpleDateFormat("yyyy-MM.dd HH:mm:ss");
Date date = inFormat.parse("");

Wed, Jul 4, ’01 olarak dışarı aktarmak istersek ise aşağıdaki kodu kullanırız

SimpleDateFormat timeOutputFormat = new SimpleDateFormat("EEE, MMM d, ''yy");
String timeString = timeOutputFormat.format(date);

Tarih ve saat patternleri için aşağıdaki tabloyu kullanabilirsiniz

Letter Date or Time Component Presentation Examples
G Era designator Text AD
y Year Year 1996; 96
M Month in year Month July; Jul; 07
w Week in year Number 27
W Week in month Number 2
D Day in year Number 189
d Day in month Number 10
F Day of week in month Number 2
E Day in week Text Tuesday; Tue
a Am/pm marker Text PM
H Hour in day (0-23) Number 0
k Hour in day (1-24) Number 24
K Hour in am/pm (0-11) Number 0
h Hour in am/pm (1-12) Number 12
m Minute in hour Number 30
s Second in minute Number 55
S Millisecond Number 978
z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
Z Time zone RFC 822 time zone -0800

 

Android version code ve version name

Bu değerler Androidmanifest.xml içinde

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.yusuf.mobil"
    android:installLocation="auto"
    android:versionCode="2"
    android:versionName="2.0">
...

olarak yazılır. Ancak build.gradle ile de override edilebiliyor.

defaultConfig {
    applicationId "com.digiturk.iris"
    minSdkVersion 16
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"
    multiDexEnabled true
}