Nazir Doğan Code Blog

Getting Started With Titanium Alloy MVC Framework

| Comments

What is Alloy ?

Alloy is a MVC framework by Appcelerator for developer to build cross platform application . Titanium have two way for developing mobile apps. One of them named Titanium classic and second one is Titanium alloy. You are not required to alloy framework .you can still continue classic one . But you will not have alloy benefits. 

Let's look alloy mvc

Model

The model store data local or remote.it can be SQLite , file or web service data.no matter what is data type. Model layer is doing managing or manipulating data.if you heard CRUD  you know what I'm talking about.

Screen Shot 2015-12-07 at 18.07.57

you can create model in project folder like this and as well as the other components.

exports.definition = {
    config: {

    adapter: {
        type: "sql",
        collection_name: "firstmodel"
    }
},
extendModel: function(Model) {
    _.extend(Model.prototype, {
        // extended functions and properties go here
    });

    return Model;
},
extendCollection: function(Collection) {
    _.extend(Collection.prototype, {
        // extended functions and properties go here

        // For Backbone v1.1.2, uncomment the following to override the
        // fetch method to account for a breaking change in Backbone.
        /*
        fetch: function(options) {
            options = options ? _.clone(options) : {};
            options.reset = true;
            return Backbone.Collection.prototype.fetch.call(this, options);
        }
        */
    });

    return Collection;
}

};

 

The view is very simple and easy to understand .its the presentation layer of the application. Users will interact with this layer.If you know xml you know alloy view . Because it’s only xml.

<Alloy>
    <Window class=“container”>
        <Label id=“label” onClick=“doClick”>Hello, World</Label>
    </Window>
</Alloy>

and you can change your view style with  TSS files. its inside styles folder. TSS  similar to CSS but it uses JSON-like syntax.

“.container”: {
    backgroundColor:“white”
}

“Label”: { width: Ti.UI.SIZE, height: Ti.UI.SIZE, color: “#000” }

“#label”: { font: { fontSize: 12 } }

Controller

Controller is business logic your application.its glue between model and views.

function doClick(e) {
    alert($.label.text);
}

$.index.open();

you can see doClick function in your view. When user interact label on device screen. doClick will work.

if you create Controller in your alloy project with Appcelerator Studio. Studio will create view(.xml) and style(.tss) files. and will be named same your controller.

For Example:  you create home.js  controller and created file home.xml and home.tss .But if you do this manually. you must add other files manually.

 

 

 

Integrating Jshint in Ionic Framework

| Comments

if you are developing ionic apps.  you can see build system in your projects which is  Gulp . it's not ionic specific but it's used in ionic projects and many other project ,its so similar to Grunt.

in this post ,I write about how can save time  with linting javascript files  in your ionic project.

 

Let's create an ionic project

//
ionic start jshint-ionic

//in your project folder

 npm install


After creating an ionic project for using JSHint ,we must load gulp-jshint and  jshint-stylish  from npm.

//


npm install gulp-jshint jshint-stylish --save-dev


//

We installed gulp-jshint and jshint-stylish. jshint-stylish is not necessary but make output looks good.

After that we must edit gulpfile.js include this line of code.

//

var  jshint = require('gulp-jshint');

//

then add gulp  task

//


gulp.task('lint', function() {
  return gulp.src('./www/js/*.js')
    .pipe(jshint())
    .pipe(jshint.reporter('jshint-stylish'));
});


//

 

Now you can run  gulp lint  command  see syntax and logical error.

if you want to watch jshint  then add this line in "watch" task

//


gulp.task('watch', function() {
  gulp.watch(paths.sass, ['sass']);

    gulp.watch('./www/js/app/*.js', ['lint']);
});

//

you dont write gulp lint command. if you serve your project jshint works automatically.

 

 

 

 

Chrome Developer Tools -Console API Referans

| Comments

Chrome Developer Tools birçok web geliştiricinin vazgeçilmez bir araçtır. Console API ise uygulamamızda hata ayıklama, ekrana bilgi yazdırma ve Javascript  analizi yapmamıza imkan sağlamaktadır.

Eğer yazdığınız expression false degerini alıyorsa mesajı ekrana basar.

Örnegin:

var list = document.querySelector('#myList');

console.assert(list.childNodes.length < 10, "List item count is >= 10");

assert-failed-list

console.clear()

Console ekranını temizler

 

count()  fonkisyonunun kaç defa çağrıldığını  gösterir.

function login(user) {   
 console.count("Login called");
   // login() code...
}

 

Farklı bir örnek ile count() methoduna bakarsak  her isim için farklı çağrıldıgı için 1,2,3 şeklinde artmayıp  farklı farklı yazmıştır.

function login(user) {   
 console.count("Login called for user '" +  user + "'");   
 // login() code...
}

 

console.log() ile aynıdır.

 

Belirtilen nesneyi Javascript  nesnesi görünümünde  ekrana basar.

console.dir(document.body);

 

Ayrıca  console.log'a  "%0 " yazarak  console.dir ile aynı şekilde kullanabilirsiniz.

console.log("document body: %O", document.body);

 

 

console.log()'a  benzer olarak method nerede çağrılıyor ise stack trace'leri içerir.

function connectToServer() {  
  var errorCode = 1;    
if (errorCode) {    

  console.error("Error: %s (%i)",
  "Server is  not responding", 500);  
  }}

connectToServer();

 

 

 

Yazı Güncellenecektir...

Cocos2d-JS Intellij IDEA Kurulumu

| Comments

Bu yazımda Cocos2D-JS platformunu  Intellij IDEAüzerinde nasıl kullanacağız  onu göstereceğim. Öncelikle başlık  sizi yanıltmasın  Bu plugini Webstorm veya diğer Intellij tabanlı IDE'lerede kurabilirsiniz.

Neyse lafı fazla uzatmadan adım adım kuruluma  geçelim.

Öncelikle Cocos2d-js'yi ve Intellij IDEA pluginini indiriyoruz.cocosidea

 

 

Intellij  IDEA kurulu degil ise buradan topluluk sürümünü indirebilirsiniz. Daha sonra indirdigimiz   Cocos2d-js'yi zip dosyasından çıkaralım.

 

İntelliji kurduktan sonra   açalım. Açtıktan sonra File -Settings-Plugin kısmında Install plugin from disk'e tıklayıp açılan pencereden indirdiğimiz pluginin yolunu verelim.

2015-05-09 16_33_13-Settings

Hepsi bu kadar artık Intellij içerisinde cocos2d-js projesi oluşturabilirsiniz. ama yapmanız gereken birkaç şey daha var.Bunlarıda ilk proje oluştururken yada ayarladan yapabilirsiniz. şimdi onu anlatalım.

Plugini ekledikten sonra Intellij değişiklerin çalışması için kapatıp açılması için soracaktır. onu yapalım yoksa projeler içerisinde göremeyeceksiniz.

Tekrar açtıktan sonra ise yine File-Settings altında other Settings kısmında Cocos ve Cocos Framework başlıklarını göreceksiniz.

2015-05-09 16_36_58-Settings

2015-05-09 16_48_18-Settings

 

ilk ekranda Python'nun Python 2.7 olması gerekmekte.  Android SDK ve NDK yollarınını doğru oldugundan emin olun.ANT ve JDK'ye özellikle dikkat ediniz. Çünkü bunlar olmadan hiçbir derleme işlemini yapamazsınız. ikinci ekranda ise Framework olarak girecegimiz şey indirdigimiz  Cocos2d-js dosyasından başka birşey degil .Simulator kısmını boş bırakın kendisi oluşturacaktır.Daha sonra her iki ekrandada Apply diyerek etkin hale getirin.

Bütün ayarlar bu kadar diyebilirim.

şimdi ise Projemizi oluşturalım.

2015-05-09 16_55_02-New Project

Burada Cocos Js yi seçerek ileri diyelim.

2015-05-09 16_56_27-New Project

2015-05-09 16_56_36-New Project

 

 

Finish dedikten sonra projemiz oluşacaktır. Projemizi çalıştırmak için üst menüden direk run diyebiliriz.

2015-05-09 17_02_24-untitled2 - [C__Users_nazir.dogan_Documents_Cocos_untitled2] - IntelliJ IDEA 14.

Projemizi böyle çalıştırdıgımızda direk olarak  Windows uygulaması şeklinde açacaktır. Ama bir ayar ile Android'te çalıştırabiliriz.

Bunun için ise

Run menüsünden Edit Configuration'a tıklayın açılan pencereden JSBinding altında Android Debug Mode'u göreceksiniz.

2015-05-09 17_01_18-Run_Debug Configurations

Burda ayar yaptıktan sonra ise projemiz Android'te çalılşacaktır.

Şimdilik hepsi bu kadar. Kolay gelsin.

IMG_0916

 

 

 

Electron Ile Web Teknolojilerini Kullanarak Masaüstü Uygulama Geliştirme

| Comments

Electron , Javascript ile masaüstü uygulaması geliştirmenize  olanak  sağlayan bir runtime'dir.Electron  açık kaynak ve çapraz platfromdur .HTML ,CSS ve io.js'ten gücünü almaktadır.Electron GUI olarak web sayfasını kullanır.yani göreceginiz aslında minimal bir Chromuium tarayıcıdı.r İlk olarak Github'un Atom Editörü için geliştirilmiştir. Electron'u kullanan firmalar arasında  Microsoft ,Facebook ,Slack  ve Docker vardır. Hatta yeni çıkan Microsoft Visual Studio Code Electron tabanlıdır.

Lafı fazla uzatmadan kurulum ve uygulama oluşturma  kısmına geçelim.

Electron'u kurmak için

# Install the `electron` command globally
npm install electron-prebuilt -g

# Install as a development dependency
npm install electron-prebuilt --save-dev

Yukardaki işlemi yaptıktan sonra Electron sistemimize kurulmuş olacaktır. Doğrulamak için

electron -v

 

electronCMD

 

Doğruladıktan sonra uygulama oluşturmak için üç tane temel dosyaya ihtiyaçımız var.Bunlar package.json ,main.js,index.html  dosyalarıdır.

your-app/
├── package.json
├── main.js
└── index.html

 

//package.json

{
  "name"    : "your-app",
  "version" : "0.1.0",
  "main"    : "main.js"
}

 

//main.js
var app = require('app');  // Module to control application life.
var BrowserWindow = require('browser-window');  // Module to create native browser window.

// Report crashes to our server.
require('crash-reporter').start();

// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the javascript object is GCed.
var mainWindow = null;

// Quit when all windows are closed.
app.on('window-all-closed', function() {
  if (process.platform != 'darwin')
    app.quit();
});

// This method will be called when Electron has done everything
// initialization and ready for creating browser windows.
app.on('ready', function() {
  // Create the browser window.
  mainWindow = new BrowserWindow({width: 800, height: 600});

  // and load the index.html of the app.
  mainWindow.loadUrl('file://' + __dirname + '/index.html');

  // Emitted when the window is closed.
  mainWindow.on('closed', function() {
    // Dereference the window object, usually you would store windows
    // in an array if your app supports multi windows, this is the time
    // when you should delete the corresponding element.
    mainWindow = null;
  });
});
//index.html
<!DOCTYPE html>
<html>
  <head>
    <title>Hello World!</title>
  </head>
  <body>
    <h1>Merhaba Dünya!</h1>
    We are using io.js <script>document.write(process.version)</script>
    and Electron <script>document.write(process.versions['electron'])</script>.
  </body>
</html>

Uygulamayı çalıştırmak için  terminal de electron yazıp Enter'layalım.

electronGUI

 

Daha sonra oluşturdugumuz  klasörü yani your-app klasörünü sürükleyip bırakalım.

electronMerhaba

 

Söyleyecek çok şey olsada   temel olarak şimdilik bu kadar. Electron hakkında daha fazla   bilgi için

electron.atom.io sayfasına   bakabilirsiniz.

 

LabVIEW Ile Arduino Programlama

| Comments

Labview Nedir?

LabVIEW (Laboratuary Virtual Instruments For Engineering Workbench)

LabVIEW, ölçüm ve kontrol uygulamaları oluşturmak için ihtiyacınız olan araçları ile bilim adamları ve mühendisler sağlayan tek sistemi tasarım yazılımıdır. Bu sorunları çözmek için çok  güçlü, verimlilik hızlandırmaya yardımcı olur ve sürekli yenilik güven veren bir yazılımdır.Görsel programlama dediğimiz kodlara girmeden kendimize özgü programlar oluşturabiliriz. Bir çok kütüphanesi mevcuttur.

 

Labview'in ne oldugunu öğrendikten sonra şimdi bunu Arduino ile nasıl konuştururum kısmına   gelelim.

Adım adım anlatacağım için sorun çıkacağını  düşünmüyorum.

1- Öncelikle LabVIEW programını indirin ve kurun.  2011 veya sonrası bir sürüm  olmasına dikkat edin.

labview-logo

 

2- NI-VISA  indirin ve kurun.  Bu LabVIEW için RS-232 sürücülerini içermeketedir.

ni_logo_trans

 

3- Arduino IDE'sini indirin ve kurun burda dikkat edilmesi gereken Arduino IDE'sinin sürümü 1.0.5 olması gerektigi .(Diğerleride ilede çalışabilir ama test etmek lazım)

ve Arduino sürücülerini  yükleyin.

Şimdi ise asıl önemli adımlara geçelim.

 

4- LabVIEW Interface for Arduino  VI Package Manager'i kullanarak indirin.  VI Package Manager LabVIEW ile beraber gelmektedir.

 

2-_search_arduino

VI Package Manager'i açın.   Arama yerine Arduino yazdıktan sonra  göreceksiniz. Daha sonra ise Sağ tıklayıp "install " diyebilirsiniz.

 

5-   Yükledikten sonra  Arduino'yu bilgisayarımıza bağlıyoruz.

LIFA Firmware'ini  Arduino'ya  yüklememiz gerekmekte.

C:\Program Files\National Instruments\LabVIEW 2014\vi.lib\LabVIEW Interface for Arduino\Firmware\LIFA_Base

Yukardakı dosya yolunda  LIFA_Base klasörünün içerisindeki Arduino kaynak  kodlarını Arduino'da   açın .Hepsini seçtiginizden emin olun. Eğer "error compiling " gibi hata alırsanız  LIFA_Base klasörünü alıp başka  bir yere taşıyıp deneyin.

6- Daha sonra  LabVIEW programını açın .

1_-_help_findexamples

 

Daha sonra  Analog Read Serial örnegini açın. Açtıktan sonra Ctrl+E yaparak  block diagramı açın.

analogread

Arduino'da  gerekli bağlantıları yaptıktan sonra "run " diyerek çalıştırın.

 

potantiometer

 

Arduino Bağlantılarını ve sürücüleri düzgün yüklediyseniz sorunsuz çalışacaktır kolay gelsin. :)

 

 

AngularJS Ve Topcoat Ile Mobil Uygulama Geliştirme

| Comments

AngularJS'i muhtemelen duymuşsunuzdur. Topcoat ise hızlı web uygulamaları geliştirmek için geliştirilen bir CSS framework'u desek yanlış birşey söylememiş oluruz sanırım.

Bu kısa yazımda üzerinde duracağım konu ise AngularJs ve Topcoat ile mobil uygulama geliştirme üzerinde duracağım.

Öncelikle her zaman yaptıgımız gibi  uygulamamızı oluşturup Android'i ekleyelim.

cordova create topcoat com.example.topcoat Topcoat

//
cd topcoat

//
cordova platform add android

Daha sonra AngularJS ve Topcoat'i indirelim.

Bundan sonra yapmamız gereken oldukça basit. index.html içerisinde Angular ve Topcoat'i include etmek.

 <link rel="stylesheet" type="text/css" href="css/topcoat-mobile-dark.css" />
 <link rel="stylesheet" type="text/css" href="css/index.css" />
 <script src="js/angularjs_1.3.14.js"></script>

Artık Topcoat CSS'i AngularJS ile beraber kullanarak oldukça hızlı uygulamalar geliştirebilirsiniz.

Dakikalar içinde yaptıgım  Angular Topcoat Demosunun Github sayfasına bakabilirsiniz. Kolay Gelsin.

 

 

 

PhoneGap/Cordova Uygulamalarında ActionSheet Kullanımı

| Comments

Action Sheet  native olarak kullanıcıya seçenek listesinden birşey seçtirmek için kullanabileceginiz bir plugindir.  Birçok uygulamada görebilirsiniz. ( Yazının sonundaki görsele bakarsanız daha anlaşılır olabilir.) Plugin iOS, Android ve Windows Phone platformlarını desteklemektedir.

Şimdi  basit bir uygulama oluştururak  nasıl kullanıldığını görelim.

//
cordova create actionsheet com.example.actionsheet ActionSheet
//
cd  actionsheet

//
cordova platform add android

//

ActionSheet pluginini ekliyoruz ve hazırlıyoruz.

cordova plugin add https://github.com/EddyVerbruggen/cordova-plugin-actionsheet
//
 cordova prepare

Demo olarak bu kodu inceleyebilirsiniz. oldukça basit Javascript kodu oldugu için açıklamaya gerek yok diye düşünüyorum.

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="format-detection" content="telephone=no" />
    <!-- WARNING: for iOS 7, remove the width=device-width and height=device-height attributes. See https://issues.apache.org/jira/browse/CB-4323 -->
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height" />
    <link rel="stylesheet" type="text/css" href="css/index.css" />
    <meta name="msapplication-tap-highlight" content="no" />
    <title>Hello ActionSheet</title>
</head>
<body>
<div class="app">
    <h1>ActionSheet demo</h1>
    <div id="deviceready" class="blink">
        <p class="event listening">Connecting to Device</p>
        <p class="event received">Device is Ready</p>
        <button onclick="testShareSheet()">Test Share</button><br/><br/>
        <button onclick="testDeleteSheet()">Test Delete</button><br/><br/>
        <button onclick="testLogoutSheet()">Test Logout</button>
    </div>
</div>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<script type="text/javascript">

    app.initialize();

    var callback = function(buttonIndex) {
        setTimeout(function() {
            alert('button index clicked: ' + buttonIndex);
        });
    };

    function testShareSheet() {
        var options = {
            'androidTheme' : window.plugins.actionsheet.ANDROID_THEMES.THEME_HOLO_LIGHT,
            'title': 'What do you want with this image?',
            'buttonLabels': ['Share via Facebook', 'Share via Twitter'],
            'addCancelButtonWithLabel': 'Cancel',
            'androidEnableCancelButton' : true,
            'winphoneEnableCancelButton' : true,
            'addDestructiveButtonWithLabel' : 'Delete it'
        };
        window.plugins.actionsheet.show(options, callback);
    }

    function testDeleteSheet() {
        var options = {
            'addCancelButtonWithLabel': 'Cancel',
            'addDestructiveButtonWithLabel' : 'Delete note'
        };
        window.plugins.actionsheet.show(options, callback);
    }

    function testLogoutSheet() {
        var options = {
            'buttonLabels': ['Log out'],
            'androidEnableCancelButton' : true,
            'winphoneEnableCancelButton' : true,
            'addCancelButtonWithLabel': 'Cancel'
        };
        window.plugins.actionsheet.show(options, callback);
    }

</script>
</body>
</html>

ActionSheet Github sayfasını ziyaret edip daha fazla bilgi alabilirsiniz.

snapshot41

Node-WebKit Ile Masaüstü Uygulama Geliştirme

| Comments

Node-Webkit nedir ?

Node-Webkit  Chromium ve Node.js üzerine kurulmuş bir  uygulama runtime'dir.  Node-Webkit ile HTML ve Javascript kullanarak masaüstü uygulaması geliştirebilirsiniz. Ayrıca Node modüllerini  kullanabilirsiniz.

Özellikleri:

  • HTML5  ,CSS3 ,Javascript ve WebGL ile uygulama yazabilirsiniz.
  • Node.js API'lerini ve üçüncü parti modülleri  kullanabilirsiniz.
  • Kolay Paketleme
  • Çapraz Platform :Linux, OS X, Windows

Nasıl uygulama oluşturacağım ?

Öncelikle Github sayfasından sisteminize uygun olarak indirin.

Bu arada kısa zaman önce node-webkit isim değişikliğine gidip nw.js adını almıştır.

Hadi başlayalım.

Öncelikle bir package.json dosyası oluşturuyoruz.

{
  "name" : "nw-demo",
  "main" : "index.html",
  "window" : {
    "toolbar" : false
  }
}

Daha sonra ise uygulamamızın başlangıç sayfası olan index.html'i oluşturalım.

<html>
  <head>
    <title>Node-Webkit</title>
    <meta content="">
    <style></style>
  </head>
  <body></body>
  <h1>Merhaba NW.JS</h1>
</html>

Daha sonra ise indirdiğimiz node-webkit'i çalıştıralım.

/node-webkit-installer/nw  /projemizin yolu

Örnegin benim yaptıgım projede

~/node-webkit-v0.11.6-linux-x64/nw   ../NWJS

snapshot40

Temel olarak hepsi bu kadar. Node-Webkit ile web teknolojilerini kullanarak istediğiniz masaüstü uygulamasını geliştirebilirisiniz. Geliştirlmiş uygulamalara burdan göz atabilirsiniz.Umarım faydalı olur .Kolay gelsin :)

 

PhoneGap/Cordova - AdMob İle Uygulamaya Reklam Eklenmesi

| Comments

Appstore'da ve Google Play'deki uygulamaların birçoğu  ücretsiz olup gelir modeli olarak  ise  reklam alma olarak belirlenmiştir. Bunun için birçok reklam servisi vardır. Bunlardan en ünlüsü ve en tercih edileni ise Google'un sahibi olduğu  AdMob'tur.

Bu yazımda ise  Admob reklamlarını PhoneGap/Cordova uygulamalarına nasıl ekleyecegimizden bahsedeceğim.

ilk iş olarak Admob'a  Google hesabımızı kullanarak giriş yapıyoruz.

https://www.google.com/admob/

Giriş yaptıktan sonra bu ekranı göreceksiniz.

snapshot38

"Monetize New App"  diyerek uygulamamızı ekliyoruz. Burda uzun uzadıya bahsetmeme gerek yok sanırım.

Phonegap/Cordova tarafında ise eklentiyi kullanamak oldukça basit.Ayrıca plugin Android iOS ve Windows Phone 8 platformlarını desteklemektedir.

Plugini eklemek için.

cordova plugin add com.rjfun.cordova.plugin.admob

Plugini ekledikten sonra koda geçebiliriz.

https://gist.github.com/nazrdogan/7535c81d584b67f04323

Ekran görüntüsü:

Screenshot_2015-02-28-20-04-12

 

Plugin hakkında daha fazla bilgi almak için Github sayfasısını ziyaret edebilirsiniz.