Personel Takip Uygulaması

Kategori: Referanslar
Tarih: 22nd Nisan 2017

İşletme yada kurumlar için geliştirdiğim personel takip uygulaması. Sahada görevlendirilmiş personeli mobil telefonlarını kullanarak harita üzerinde izleyebilmenizi, görev yönetimini yapabilmenizi, personeller arası iletişimi, zaman takibini vs… Yani sahadaki personel ve görevler hakkındaki tüm işlemlerinizi halletmenizi sağlayan uygulama.

Yorumlar: 0 » tags:

CodeIgniter3++

Kategori: Codeigniter, Php, Referanslar
Tarih: 16th Mart 2015

Codeigniter framework geliştiricileri 2.2. versiyondan sonra artık geliştirme yapmayacaklarını duyurmuşlardı. 2015 Ocak itibariyle bu karar değiştirilmiş. CI3 versiyonu RC sürümleriyle yayınlanmaya başladı. Şuan RC3 yayında. Bende şimdiye kadar yaptığım çekirdek geliştirmelerini ve bazı kütüphaneleri ekleyerek bir temel proje oluşturmaya karar verdim. Bu proje aşağıdaki ekleri ve geliştirmeleri içermektedir. Projeyi buradan indirebilirisiniz.

 

 

1- Serbest Kütüphane

Çeşitli işlermler için yazılmış fonksiyonlar bu kütüphaneye eklendi. Bu kütüphane CI yüklenmeden önce yüklenir ve CI’dan bağımsız olarak uygulamanın istenilen yerinde kullanılabilir. Akla hemen neden helper geliştirilmedi de böyle bağımsız bir kütüphane geliştirildi sorusu gelecektir. Bunun kütüphanedeki bir çok fonksiyon için farklı cevapları var. Bir örnek verelim. Flood kontrol fonksiyonu. Bu, sisteminizi flood saldırılarına karşı korumak için yazılmış bir fonksiyondur. Bu fonksiyon helper içinde tanımlansa idi bir saldırı bile olsa bu fonksiyonu kullanmak için CI’ ın yüklenmesi gerekecekti. Yani saldırılarda bile CI yüklenecekti. Zaman kaybını öncelemek için flood_kontrol fonksiyonu CI yüklenmesinin önüne alınmıştır.

 

2- Güvenlik Geliştirmeleri

  • İlk güvenlik geliştirmesi flood kontrolüdür. Sistem flood saldırılanı tespit ederek uygulamanızın yüklenmesini durdurur. Bu konu ile ilgili ayarı “./kutuphane.php:157” dosyası içinden yapabilirsiniz.
  • Oku fonksiyonu. Serbest kütüphane içinde bulunan bu fonksiyon istenilen modda okuma yapıp okuduğu veriyi “sql enjeksiyon”, “xss saldırısı” gibi güvenlik açıklarından temizler. Bunun yanı sıra faklı kaynaklardan istediğiniz veriyi okumanıza yardımcı olur. Ek olarak Yaz fonksiyonunuda bununlar birlikte inceleyebilirsiniz.
  • Captcha yani resimdeki karakterler koruması. CI’ın mevcut fonksiyonlarının üzerine geliştirilen bu koruma ile sayfanız içersinde herhangi bir yere “<div id=’captcha-alan’ w=’300′ h=’35’></div>” kodu ile istediğiniz boyutta bir captcha oluşturabilirsiniz. Cache kullansanız bile uygulama bu alana dinamik olarak captcha resmini yerleştirip kullanıcıya “captcha” anahtar kelimesi ile resimdeki karakterleri içeren stringi session olarak atayacaktır.
  • Form ID. Bu koruma ile uygulama tarafından form_open() fonksiyonu ile oluşturduğunz her form içine, o form için özel oluşturulmuş bir ID eklenir. Bu şekilde form kopyalanması, formların offline olarak doldurulması, farklı sitelere sizin formunuzun gömülmesi gibi işlemlerin önüne geçmiş olursunuz. Çekirdek geliştirmesi ile “$this->form_validation->run()” kodunu çalıştırırken Form ID’niz de otomatik olarak kontrol edilecektir. ID doğrulanamaz ise kullanıcıya hata sayfası gösterilecek ve log dosyasına hata yazılacak.

 

3- Çoklu ve Dinamik Dil Desteği

Bu destek sayesinde veritabanınızdan dinamik yüklediğiniz dil bilgileriyle uygulanızı istediğiniz her dilde sunabilirsiniz. Sistem dil bilgisini url ‘in ilk segmentinden tespit eder. Bu dil bilgisi iki harfli olmalıdır. “http://siteniz/tr/” yada “http://siteniz/en/” gibi. Desteklediğiniz dilleri veritabanında dil tablosuna eklemelisiniz. Ayrıca dil klasöründe “<modül ismi>_lang.php” dosyası içine dil verilerinizi eklerseniz, sistem dili tespit ettikten sonra lang dosyasını otomatik yükleyecektir. Mesela “http://siteniz/tr/panel/sinif/method” adresine gitmek istediğinizde sistem turkce klasöründeki panel_lang.php dosyasını yükleyecektir. Siz view içerisinden yeni bir yükleme işlemi yapmaya gerek olmadan istediğiniz dili kullanabilirsiniz.

 

4- Modüler Yapı

CI üzerinde modüler olarak sisteminizi geliştrimenizede izin verilmiştir. Uygulama kullanıcının geldiği url den hangi modüle gitmek istediğiniz tespit eder ve ilgili yüklemeleri ona göre yapar. Örneğin “http://siteniz/tr/panel/sinif/method” adresine gitmek istediğinizde sistem “./tema/panel/” adresindeki temayı dikkate alacak ve dil olarak da türkçe dilini yükleyecektir. Site ve Panel isminde iki adet modül olduğu varsayılmıştır.  Bu konu ile ilgili ayarı “./kutuphane.php:123” dosyası içinden yapabilirsiniz.

 

5- Tema Motoru

CI yapılan geliştirmelerle kullanıcının farklı modüller ve diller için farklı temlar kullanmasına ve her modül için birden fazla tema yükleyebilmesine izin vermektedir. Şöyle ki CI bir temanın seçilebilmesi için sistem ikiparametreyi dikkate almaktadır. İlki modül ismi. “./tema” klasöründe modül isimleriyle aynı isimde ve sayıda klasör bulunmalıdır. “./tema/panel” ve “./tema/site” gibi. Sistem gelen url’e bakarak tema klasörü içerisinde hangi klasörü dikkate alacağını otomatik seçecektir.  “http://siteniz/tr/panel/sinif/method” adresi için “./tema/panel/” i tema klasörü olarak kabul etmek gibi. İkinci parametre ise veritabanında yüklenecek tema ayarının tutulduğu kayıt. Veri tabanında ayar tablosu altında ilgili modül  için hangi temanın yükleneceği ayarı tutulur. Bu kayıda erişmek için anahtar kelime “<modül ismi>_tema” şeklindeki kayıt adıdır (panel_tema yada site_tema gibi). Karmaşık görünse de değil. Hemen bir örnekle anlatalım.

 

Tema klasörünün ağaç yapısının aşağıdaki gibi olduğunu kabul ediyorum.

/tema

—–/panel
———-/varsayilan
———-/panel_icin_yeni_tema

—–/site
———-/varsayilan
———-/site_temasi2

 

Veri tabanındaki ayar tablosunda da aşağıdaki veriler vardır.

id dil ad veri aktif
1 0 site_tema varsayilan t
2 0 panel_tema site_temasi2 t

 

“http://siteniz/tr/panel/sinif/method” adresine gitmek isteyen bir kullanıcıya “./tema/panel/varsayilan/views” klasörü view klasörü olarak gösterilecektir. Bir başka deyişle $this->load->view(‘deneme’); komutunu yazdığımız bir sayfada yukarıdaki adres için gelen kullancıya “./tema/panel/varsayilan/views/deneme.php” sayfası view olarak yüklenecektir.

 

Her bir tema klasöründe css, js, less ve view klasörleri varsayılan olarak olmalıdır. Daha fazla gerekirse resim, dosya gibi klasörler de ihtiyaca göre temayı kodlayan tasarımcı tarafından eklenebilir. Ayrıca views içindede varsayilan adında bir klasör olmalıdır. Bu klasör bir sonraki paragrafta anlatılacak olan js, css ve less dosyaları içinde php kodu yazabilmemiz için gereklidir. Saydığımız dosyalar direk statik bir dosya olarak eklenmez. Bunun yerine CI üzerinden yüklenir. Bu klasör eski bir temadan direk kopyalanabilir. Peki ama neden js dosyasında php kodu yazmak isteyelim? En basitinden dil desteği için. Js dosyasındaki string ifadeleri CI dil fonksiyonu aracılığıyla yazdırırsak sistem dili otomatik yüklediği için bizim istediğimiz dildeki js dosyasınıda otomatik olarak oluşturacaktır. Standart bir tema dosyasında olması gereken yapı aşağıdadır.

 

tema_adi
—–/css
—–/js
—–/less
—–/views
———-/varsayilan
—————/css.php
—————/degiskenler.php
—————/dosya.php
—————/javascript.php
—————/less.php
Bu yapıyı oluşturduktan sonra istediğimiz dosyamızı istediğimiz isim ile ekleyebiliriz. Herşey artık bizde. Mesela css içerisine sitil.css js icerisinede kutuphane.js, less içerisinede sitil.less dosyasını oluşturduğumuzu düşünelim. Bu dosyalarımızı view sayfamıza aşağıdaki gibi ekleme yapabiliriz.

 

<!– Tema css kütüphanesi –>
<?=css(‘sitil.css’) ?>

<!– Tema less kütüphanesi –>
<?=less_file(‘sitil.less’) ?>
<!– .less dosyalarını çalıştıracak js kütüphanesi –>
<?=less() ?>

<!– Tema js kütüphanesi –>
<?=javascript(‘kutuphane.js’) ?>

 

Son olarak bu dosyaların içerisinde php kodu kullanmayı örnekleyelim:


function facebook_giris()
{
var on = $( "#beni_hatirla:checked").length == 1 ? 'on' : '';
alert("<?=lang('hatirla_mesaj') ?>");
window.location = "<?=url('panel')?>anasayfa/facebook?beni_hatirla="+on;
}

CI less ile uyumludur.

 

6-Form elemanları

Form elemanları için yine önemli geliştirmeler yapılmıştır. Buradan bu konu hakkındaki yazıya ulaşabilirisiniz. Bunların yanı sıra çoklu dosya yükleme ve zengin metin editörüde kullanabilirsiniz. Örnek kod aşağıdadır.


<?php angular_editor('aciklama', '<b>html</b> Test') ?>

<?php coklu_dosya_yukleme('resimler', '', dosya_turu('site', 'id')) ?>

“dosya_turu(‘site’, ‘id’)” bu fonksiyon bir numara geri döndürür. coklu_dosya_yukleme(,,) fonksiyonunun 3. parametsi olarak fonksiyona gönderilir. Bu parametre ile çoklu dosya yükleme aracı dosyaları hangi dizine yükleyeceğini belirler.  Örnekteki dosyalar “./dosya/site/” klasörü altına yıl/ay/gün dizini takip olarak yüklenecektir. Dosya türleri hakkındaki ayarlamaları “./kutuphane.php:992” dosyasından yapabilirsiniz.

 

7- Kullanıcı girişi

Örnek olarak bir tema ve kullanıcı girişi tasarlanmıştır. Tasarlanan tema tüm mobil cihazlarda da tam uyumlu çalışmaktadır. Ayrıca kullanıcının yetkili olup olmadığı kontrol edilip kullanıcı girişi yapmadan panel klasörü altındaki hiç bir sayfaya giriş yapmasına izin verilmemektedir. Sadece giriş ekranına erişebilmesi için “Anasayfa” controller’ına ve js, css, less dosyalarına erişebilmesi içinde proxy klasörüne izin verilmiştir. Bu konu ile ilgili ayara “.\application\config\config.php:7” dosyasından ulaşabilirsiniz.

 

8- Raporlamalar

Ek kütüphaneler ile CI üzerinden Word, Excel ve Pdf raporlar alabilmeniz sağlanmıştır. Bunlarla ilgili birer örnek “http://siteniz/tr/panel/rapor/excel”, “http://siteniz/tr/panel/rapor/word” ve “http://siteniz/tr/panel/rapor/pdf” adresinde bulabilirsiniz.

 

9- Cache

Cache kütüphaneleri de daha kolay bir cache yönetimi için geliştirilmiştir. Bu şekilde cache yapılan dosya url dizini ile aynı şekilde cache dosyasında tutulmaktadır. Dosya adında da dil bilgisi ayrıca indexlenmiştir.

 

10- Geliştirici ayarlamaları ve Özel ayarlar

Geliştirme esnasında ve sistem kullanıma başladıktan sonra sistemi hızlandırma adına bazı ayarlar size bırakılmıştır. Bu ayarları sabit tanımlamaları ile “./kutuphane.php:32” den itibaren bulabilirsiniz. Örneğin sistem dil bilgisini her seferinde yeniden veri tabanından okumak yerine bir sefere mahsus okuyup sizin “VERI_CACHE” sabiti ile belirlediğiniz veri kaynağına yazar. Sonraki her ziyaretçi için bu kaynaktan okur. Burada buna benzer bir sürü ayar bulabilirsiniz.

 

11- Ek kütüphaneler

CI içerisine sizin kullanımızı kolaylaştıracak bir sürü ek kütüphane konulmuştur. Jquery, JquqryUI, Bootstrap, Bootstrap notify, Openlayers, Less… Bu kütüphaneler view dosyası içerisine aşağıdaki koldlarla eklenebilir.


<?=jquery() ?>

<?=bootstrap() ?>

<?=bootstrap_notify() ?>

<?=openlayers() ?>

<?=ui() ?>

<?=angular() ?>

<!-- Framework varsayılan js kütüphanesi -->
<?=javascript() ?>

<!-- Framework varsayılan css kütüphanesi -->
<?=css() ?>
<!-- Tema css kütüphanesi -->
<?=css('sitil.css') ?>

<!-- Framework varsayılan less kütüphanesi -->
<?=less_file() ?>
<!-- Tema less kütüphanesi -->
<?=less_file('sitil.less') ?>
<!-- .less dosyalarını çalıştıracak js kütüphanesi -->
<?=less() ?>

<?=google_analytics() ?>

 

12- Facebook API

CI içerisine Facebook API v4.4 de eklenmiş ve kullanıcı girişi için örnek bir kütüphane tasarlanmıştır. Paneli inceleyerek detayları görebilirsiniz.

 

Not:

  • SQL dosyası kök dizindedir. Veritabanı olarak Posgresql 9.1.15 kullanılmıştır. Kendi Veri Tabanı Yönetim Sisteminize göre sql kodlarını revize etmeniz gerekebilir. Veritabanı bağlantı ayarlarınada “./kutuphane.php:96” dosyasından erişebilirsiniz.
  • Sistem varsayıla olarak APC cache kullancak şekilde planlanmıştır. APC desteklemeyen sistemler için VERI_CACHE sabitine session değeri verilebilir. “./kutuphane.php:56”
  • APC durumunun incelenmesi için “http://siteniz/apc.php” adresini ziyaret edebilirsiniz.
Yorumlar: 2 » tags: , , , ,

Sıcaklık/Nem Kontrol ve Uyarı Sistemi – 2

Kategori: Arduino, C#, Güvenlik, Referanslar
Tarih: 13th Mart 2015

Bu yazıda artık ortamın sıcaklık ve nem değerlerini ölçüp bilgisayarımıza aktaracak olan devreyi tasarlamaya geçebiliriz. Burada devreyi bağımsız iki parça halinde ele alabiliriz. Birinci parça sıcaklık sensöründen verinin okunması. İkinci parça okunan değerin 7 segmentli göstergede gösterilmesi.

Önce sıcaklık sensörü kısmını halledelim. Biz burada DHT11 sıcaklık ve nem sensörünü kullanacağız. İsteyen buradan sensörü detaylı inceleyebilir. Sensörü devremize aşağıdaki gibi bağlıyoruz.

dht11_arduio_baglanti_semasi

 

Şimdi ikinci kısma geçelim. Bu kısım biraz daha karışık. Önce 7 segmentli göstergeden başlayalım. Aşağıda elemanın yapısı eklenmiştir.

 

ortak-katot-display-baglanti-semasi

 

İncelenince görülecektir ki 7 segmentli gösterge için 1 gönderiyim 1 yazsın 3 gönderiyim 3 yazsın gibi bir yapı yok. Birbirinden bağımsız 7 tane led var. Mesela 1 yazmak için GND bağlantılarını yaptıktan sonra, 6. ve 4. bacaktan 5V vermelisiniz. Her sayı için bu ayrı ayrı hesaplanıp yazılım tarafında bir fonksiyon ile çözülebilir. Ama bu şekilde Arduino tarafında 7 pin meşgul edecektir. İki tane digit bağlarsak 14 pin. Bu çok saçma bir kullanım olur. Ne yapalım. İlk akla gelen bir lojik devre tasarlayıp binary gelen sayıyı 7 segmentli göstergede yazdırmak. Bu şekilde 4 pin kullanarak tüm rakamları yazdırırız. (Örneğin pinlerden 0011 verildiğinde göstergede 3 yazdırmak) Bunun için bir devre tasarlamamıza gerek yok zaten bu işi yapan bir entegre var. 4511 entegresi. Bu entegre 4 pin ile binary gelen değeri 7 segmentli göstergede yazdırmak için tasarlanmış. Buradan datasheeti inceleyebilirsiniz. Bacak bağlantıları ve açıklama tablosu aşağıda.

 

4511

pin isim

bağlantıları

1 B girişi B girişi
2 girişi C C girişi
3 lamba test girişi Lojik-1
4 ripple girişi Lojik-1
5 aktif etme girişi Lojik-0
6 girişi D D girişi
7 A girişi A girişi
8 VSS 0 V güç kaynağı 0 V
9 segment e 7-segment ortak katot ekran, e
10 segment d 7-segment ortak katot ekran, d
11 segment c 7-segment ortak katot ekran, c
12 segment b 7-segment ortak katot ekran, b
13 segment a 7-segment ortak katot ekran, a
14 segmenti g 7-segment ortak katot ekran, g
15 segment f 7-segment ortak katot ekran, f
16 VDD + V güç kaynağı +9 V (aralık 5-15 V)

 

Aşağıdaki örnek bir bağlantı görülebilir.

 

4511-proteus

 

Bu şekilde sadece 4 pini kullanarak tüm rakamları gösterebiliyoruz. Hala bir sorun var. Sıcaklık değeri göstereceğimiz için iki rakama ihtiyacımız var. İki göstergeyi iki ayrı entegre ile tasarlayıp toplam 8 pin kullanarak bunu yapabiliriz. Ama bu çok hızlı olan donanımımızı çok hantalca kullanmak olur. Bunun yerine bilgisayarların mükemmel hızlı olmasını kullanarak maliyeti düşürebiliriz. Tek entegrenin çıkışılarını iki göstergeye birden versek. Sonra bu göstergelerden ilkini bir kaç mili saniye, ardından diğerini bir kaç milisaniye yakıp söndürsek. Ve yanma anlarında da entegreye ilgili rakamları göndersek aynı entegreyi kullanarak iki ayrı rakamı gösterebilmiş oluruz. Göstergeleri yakıp söndürme işlemleri içinde GND bacağını kullanırız. Bir katot göstergede GND bacağından 5V verir isek gösterge söner, toprak verirsek gönderdiğimiz rakam yanar.

 

Herşey tamam artık devreyi tasarlayıp uygulamamızı yazabiliriz. Sıcaklık sensörünü bağlamıştık. Şimdi entegreyi ve digitleri bağlayalım.

 

 

Scanned-image-0

Scanned-image-1-0

 

Devreyi resimdeki gibi oluşturalım. Karmaşık görüntüyü engellemek için 4511 entegresinden diğitlere giden kablolar çizilmemiştir; harflendirilmiştir. Artık programımızı yazıp arduino’ya yükleyebiliriz. Program kodları aşağıdaki gibidir. Bu uygulama  bir yandan, sensörden okuduğu sıcaklık değerini digitlere yazdırır. Diğer yandan da bağlı bulunduğu bilgisayarın seri portunu dinler. Eğer seri porttan “a”, “b”, yada “c” verisi gelirse yine seri porttan sırsaıyla sıcaklık, nem ve çiğ oluşturma verisini yazar. Bu konu ile ilgili ayarlamaları serialEvent() fonksiyonundan görebilirsiniz.

Bu serinin bir sonraki yazısında bir wcf servis yazacağız. Bu servis gelen isteklere göre sıcaklık nem ve çiğ oluşma noktası verisini seri port aracılığıyla arduino devremizden okuyup istemciye iletecek. Bu şekilde oda sıcaklık vs bilgilerini hem digitler ile odada gösterip hemde masaüstü uygulama, android cihaz vs. gibi farklı platformlara servis edebiliyor olacağız.

 


#include <SimpleTimer.h>
#include <dht11.h> 

dht11 SicaklikSensoru;
SimpleTimer timer;

int pinOtele = 10;
int digitEntegreIzinPin = 9;
int digitBirIzinPin = 8;
int digitSifirIzinPin = 7;
int ZamanKesmesiSuresi = 20000;

float sicaklik = 0, nem = 0, cig = 0;

void digiteYaz(int rakam)
{
 if(rakam < 0 || rakam > 9) return;

 int deger, cikis;

 for(int i = 3; i >= 0; i--)
 {
 deger = pow(2, i) + (i > 1 ? 1 : 0); 

 digitalWrite(i + pinOtele, deger > rakam ? LOW : HIGH);

 rakam -= deger > rakam ? 0 : deger;
 }

 digitalWrite(digitEntegreIzinPin, HIGH);
}

void digitSec(int d)
{
 boolean kontrol;
 if(d == 0)
 kontrol = false;
 else if(d == 1)
 kontrol = true;

 digitalWrite(digitBirIzinPin, !kontrol);
 digitalWrite(digitSifirIzinPin, kontrol);
}

void digitlereYaz(int sayi)
{
 if(sayi < 0 || sayi > 99)
 return;

 int bekleme = 5;

 digitSec(0);
 digiteYaz((sayi > 9 ? sayi % 10 : sayi));
 delay(bekleme);
 digitalWrite(digitEntegreIzinPin, LOW);
 delay(bekleme);

 digitSec(1);
 digiteYaz((sayi > 9 ? sayi/ 10 : 0));
 delay(bekleme);
 digitalWrite(digitEntegreIzinPin, LOW);
 delay(bekleme);
}

void timerInterrupt()
{
 SicaklikSensoru.read(2);

 sicaklik = (float)SicaklikSensoru.temperature;
 nem = (float)SicaklikSensoru.humidity;
 cig = (float)SicaklikSensoru.dewPoint();
}

void serialEvent()
{
 char istek = (char)Serial.read();

 if(SicaklikSensoru.read(2) != 0)
 {
 Serial.print("Hata: 1|Sensor Okunamadı");
 return;
 }

 switch(istek)
 {
 case 'a':
 sicaklik = (float)SicaklikSensoru.temperature;
 Serial.println(sicaklik, 2);
 break; 

 case 'b':
 nem = (float)SicaklikSensoru.humidity;
 Serial.println(nem, 2);
 break; 

 case 'c':
 cig = (float)SicaklikSensoru.dewPoint();
 Serial.println(cig, 2);
 break; 

 default:
 Serial.println("Hata: 2|Gecersiz Istek");
 }
}

void setup()
{
 Serial.begin(9600);

 //Pinler Aktif
 for(int i = 0; i <= 3; i++)
 pinMode(i + pinOtele, OUTPUT);

 //Digitler Aç/Kapat
 pinMode(digitEntegreIzinPin, OUTPUT);
 pinMode(digitBirIzinPin, OUTPUT);
 pinMode(digitSifirIzinPin, OUTPUT);

 timerInterrupt();
 timer.setInterval(ZamanKesmesiSuresi, timerInterrupt);
}

void loop()
{
 digitlereYaz((int)sicaklik); 

 timer.run();
}

Yorumlar: 0 »

Sıcaklık/Nem Kontrol ve Uyarı Sistemi – 1

Kategori: Arduino, C#, Güvenlik, Referanslar
Tarih: 15th Aralık 2014

Yazmaya uzun bi süre ara verdikten sonra ancak bugün birşeyler yazmaya fırsat bulabildim. Bu yazıda bir sıcaklık/nem kontrol devresi ve sıcaklığın farklı platformlara sunulabilmesi hakkında planlamalar yapcağız. İhtiyacımız sıcaklığı farklı sebeplerden dolayı sık sık yükselen server odasını kontrol altında tutmak. Öngörülemeyen bi sıcaklık artışı olduğunda da ilgili personele bilgi verilmesi.

 

Sıcaklık kontrol devresi için ilk başlarda 16F877A mikrodenetleyici ve uyumlu bir sıcaklık sensörü kullanmayı planlamıştım. Ama biraz araştırma yaptıktan sonra Arduino diye birşey gördüm. Bu mikrodenetleyici dünyası için bir framework diye düşünülebilir. Açık kaynak, İtalyan menşeli bir proje. Açık kaynak olduğundan dolayı piyasada çok farklı kombinasyonlarda hatta çin üretimi ürünler bile mevcut. Peki tam nedir bu Arduino. Bu, üzerinde bir mikrodenetleyicisi olan, özel tasarım bir kart. Bu kart sayesinde bir çok özel yazılmış fonksiyonu bu microdenetleyici üzerinde çalıştırabiliyor, kart üzerindeki portları kullanarak da microdenetleyici ile çok rahat bir şekilde iletişim kurabiliyor hatta bir bilgisayar ile seri port iletişimine geçebiliyorsunuz. Buda sizi hem devre kurma çabasından kurtarırken hem de projelerini daha hızlı kodlayabilme imkanı sunuyor. Dezavantajı yok mu? Var tabiki. Mikrodenetleyici üzerinde halihazırda çalışan bir framework olduğundan dolayı bu donanımı 100% verimle kullanamıyorsunuz. Biraz daha yavaş kalıyor. Bu durum C/C++ ve C# dillerinin kıyaslanması gibi düşünülebilir. Daha yavaş olduğu için -bazı özel projeler hariç- C# dan vazgeçmezsiniz herhalde.

 

Arduino’ ya uyumlu bir sensör ile (DHT11) sıcaklığı ve nemi okuyup, 7 segmentli digitler kullanarak yazdırmayı planlıyorum. Ayrıca okunan değerleri seri port üzreinden server odasındaki bir bilgisayarada ileteceğim. İş buradan sonra sizin planınıza kalmış. Ben bütün platformlardan bu bilgiye erişmek istediğim için; bu sunucu üzerinden bilgileri servis edeceğim. Devam eden yazılarımda tarasımları ve kodları paylaşarak bunu bir seri yazı halinde yazmayı planlıyorum. Yapılacak işin kaba taslak bir çizimi aşağıdadır. Herkese iyi günler.

 

Scanned-image-0

Yorumlar: 1 »

Kübis ar-ge çalışması tamamlandı

Kategori: Referanslar
Tarih: 23rd Temmuz 2013

İstekler:

  • Lisans ücreti olmasın
  • Linux işletim sistemi üzerinde çalışsabilsin
  • Harita sunucusu yazılımı dahil istediğimiz her noktaya müdahale edebileceğimiz yazılımlar olsun
  • Web üzerinde çalışsın
  • Bir MVC framework kullansın
  • Tema motoru, Çoklu dil desteği, Cache motoru olsun

– Yeni sisteme geçilirse mevcut lisanslar boşa alınmış olmayacak mı?

– Mevcut lisanslar ile (Oracle ve MapXtrame) Afet Acil Müdürlüğününde bir uygulaması bizim sunucumuz üzerinden çalışmaktadır. Mevcut lisansları onlar kullanmaya devam edecekler.

Çözüm:

İşletim Sistemi: Ubuntu 13.04 Server
Harita Sunucu Yazılımı: Geoserver
Veri Tabanı: PostgreSQL
Uygulama Platformu: Php
Kullanılacak Framework: Codeigniter
Tarayıcı taraflı uygulama kütüphanesi: OpenLayers, jQuery UI, jQuery Mobile, jQuery File Upload
Tema: usmanhalalit-charisma, Asif Aleem-anibor

Yapıştır! Etiket Programı

Kategori: C#, Referanslar
Tarih: 1st Nisan 2013

Kütahya il özel idaresi için geliştirilmiş etiket yazdırma programı. Program standart bir etiket kağıdı için pdf çıktı oluşturuyor. Şuan nette 3-4 tane etiket programı var ama çok esnek değiller tam istediğiniz etiketi yazdıramıyorsunuz.

Program WPF üzerine MVC pattern kullanılarak geliştirilmiştir. Arayüzle kodlamayı tamamen bağımsızlaştırmak içinde MVVM pattern kullanılmıştır. Veri Tabanına bağlantı için Entity Framework ile Mysql kullanılmıştır. EF ile istediğiniz veritabanına bağlayabilirsiniz.  Ekran önizlemeleri, kaynak kod ve veritabanı dosyası aşağıdadır indirerek istediğiniz şekilde özelleştirebilirsiniz.

Projeyi İndir

Edit: Programda tespit edilen bazı hatalar giderilmiş ve bazı fonksiyonlar geliştirilmiştir v1.1 i buradan indirebilirsiniz.

Yorumlar: 0 » tags: , , , ,

Dpü wireless misafir modülü

Kategori: Php, Referanslar
Tarih: 11th Mart 2013

Dumlupınar Üniversitesi kampüs içi kablosuz ağlara miafir kullanıcıların güvenli bir şekilde bağlanabilmesi için geliştirilmiş bir uygulama. Sistem bağlanmak isteyen kullanıcının bazı kimlik bilgilerini isteyip nufus vatandaşlık işleri servisinden doğrulama yapıyor. Eğer geçerli ise üniversitein ldap servisine kullanıcının istediği saat kadar bağlanabileceği bir üyelik oluşturuyor. Süre dolunca da üyeliğini iptal ediyor.

 

Teknik Not: php ve wcf bağlantı sıkıntılarından dolayı web sunucusunun nvi servisine erişimi için dönüştürücü bir masaüstü uygulaması da geliştirilmiştir.

1 2

DPÜ Kurumsal Web Sitesi İçin Tema

Kategori: Php, Referanslar
Tarih: 11th Mart 2013

tema1

 

Arayüz Dpü tarafından çizilmiştir. Tarafımdan kodlanarak güncelleme olarak sisteme eklenmiştir.

 

Dumlupınar Üniversitesi Kurumsal Web Sitesi

Kategori: Php, Referanslar
Tarih: 11th Mart 2013

Arayüz Dpü tarafından çizilmiştir. Programlaması bana aittir. Standart özelliklerin üzerine tema motoru, dil motoru ve cache sistemi vardır. P4 3.0 işlemci ve 1 Gb ram sanal makine ile sayfayı saniyede yaklaşık 1000 sefer yükleyebiliyor.

İçerik Yönetim Sistemi V4.0

Kategori: Php, Referanslar
Tarih: 15th Ağustos 2012

Versiyon 4 artık hazır!

Çoğu paneldeki standart özelliklerin üzerine :

-Tümleşik; Web sitesi, Mobil site ve Facebook uygulamsı yönetimi

-Kişiselleştirilebilir kısayollar, tablolar, menüler

-Her kayıt için karşılaştırmalı sayaç (Facebook uyg., Mobil Site ve Web sitesi karşılaştırması )

-Sınırsız dil ekleyebilme

-Verilerinizi ve istatistiklerinizi pdf, jpg vs. olarak kaydedebilme

-Arama motoru dostu kodlama

-Her sayfa için anahtar kelimeler ve açıklamalar

-Codeigniter yapısı ile çok hızlı ve güvenli

-Cache.

-Mail listesi.

-Yönetici yetkilendirme

-Kayıtları yorumlayabilme

-Güncelleme

-Yedekleme

-Uzman kullanıcılar için sql ile veritabanına müdahale edebilme sorgulama yapabilme.

Ve daha fazlası…

Buradan demoyu inceleyebilirsiniz (Kullanıcı: demo Şifre: demo)

Optimization WordPress Plugins & Solutions by W3 EDGE