Aklımda Kalası Kelimeler

* давайте работать вместе
* Zarf ve Mazruf, Zerafet(xHoyratlık) ile aynı kökten(za-ra-fe) gelir
* Bedesten
* Suç subuta ermiştir - Suç sabit olmuştur

25 Haziran 2014 Çarşamba

NodeJs Çalışmalarım

Önce Visual Studio ile debug yapabileceğimiz Node Tools for Visual Studio 1.0 Alpha videosunu izleyip ilgili eklentiyi indirip kuralım. Hızlıca nasıl kullanıdığına dair bilgiyi edinmek için burasını biraz okuyalım.

Geliştiriciler için doğru Chrome sürümünü de buradan indirelim.


my_module.js
// Sadece içeride kullanılır. Dışarıdan erişilemez!
function private_Hello() {
    return "World";
}

// İhraç edilecek func, içeride private metodu çağırır
function public_Hello() {
    return private_Hello();
}

// public_Hello func dışarıdan Hello ile çağrılabilir
module.exports.Hello = public_Hello;

server.js
var mymodule = require("./my_module.js");
console.log("Hello: " + mymodule.Hello());

REQUEST


GetIp_req.js
// http://nodejs.org/api/http.html#http_http_request_options_callback
var http = require('http');

function getIp(prm1, prm2, doneCallback) {
    var funcParams = [prm1, prm2];

    var options = {
        host: 'ip.jsontest.com',
        //host: 'www.google.com',
        path: '/',
        //path: '/',
        method: 'GET'
    };

    var req = http.request(options, function (res) {
        // Response içindeki STATUS ve HEADER bilgilerini görelim
        console.log('STATUS: ' + res.statusCode);
        console.log('HEADERS: ' + JSON.stringify(res.headers));

        // Tüm cevabı tutacağımız değişken
        var body = '';
        // Gelen veri akışı UTF8 türünden olacağı için başta sabitleyelim
        res.setEncoding('utf8');

        // Her parça veri geldiğinde
        res.on('data', function (chunk) {
            console.log('\n*** YENİ CHUNK veri geldi ****');
            console.log(chunk.toString());
            body += chunk.toString();
        });

        res.on('end', function () {
            console.log('\n*** Tüm veri akışı tamamlandı ****');
            console.log('GELEN VERİ: ' + body);

            // Bilgiyi isteyenin fonksiyonuna geçirelim
            doneCallback(JSON.parse(body));
        });
    });

    req.on('error', function (e) {
        console.log('problem oluştu: ' + e.message);
    });

    req.end();
}

module.exports.GetIp = getIp;

server.js
var getIp = require("./GetIp_req.js");
getIp.GetIp('parametre1', 'param2', function (ip) {
    console.log('Çıkış IP Adresim: ' + ip.ip);
});


Express içinde 4 versiyonuyla birlikte çıkartılanlar:
  1. app.configure()
  2. app.router
  3. express.createServer()
  4. res.charset

Node.Js ile API

Ben yazmaya başladım ama bir baktım pırlanta gibi anlatmış bu arkadaş.
Burada gördüğüm POSTMAN için chrome uzantısını bulunca sizinle paylaşayım dedim.


18 Haziran 2014 Çarşamba

USB Klavye çalışmadı gitti

Özetle Windows/inf klasöründe usb.inf ve usb.PNF dosyaları yerindemi diye bakın ve yoksa bir yerlerden bulup yapıştırın.

Sorunumu aşağıdaki cevap çözdü:
Had the same issue with my keyboard. Keyboards worked fine in BIOS and boot menu, until the windows logon screen appeared.
Windows didn't load a driver, and yellow marks in in device manager no matter what keyboard I connected.
The usb.inf and usb.PNF files were somehow missing from my Windows/inf folder. I restored these from the installation media, and TADA... - it now works again.

14 Haziran 2014 Cumartesi

Redis ve ServiceStack İncelemesi

Redis nedir üzerine epeyce okurken, "neden bunları not almıyorum" diye aklımdan geçirdim ve tüm alıntı, çalıntı bilgileri bir de benim anlayış hizama göre sıralamak istedim. Kendime not almaya devam ediyorum :)

Kaynaklar:
Redis Komutları
http://kodluyorum.blogspot.com.tr
http://gurevin.net/2013/04/05/nosql-iliskisel-veritabanlarina-karsimi/
En temiz şekilde veri tiplerini anlamak için



SET

Tek seferde tek değeri anahtarlamak için kullanılıyor
127.0.0.1:6379> set anahtar deger
OK

MSET

Tek seferde birden fazla değeri anahtarlamak için kullanılıyor ve Redis'e defalarca gidip dönmektense işlemi tek seferde hallettiği için doğal olarak daha hızlı oluyor.
127.0.0.1:6379> mset anahtar1 deger1 anahtar2 deger2
OK

ServiceStack ile MSET




MGET


(GetValues ya da GetValuesMap), ile tek çağrıda birden fazla anahtarın değerini alabiliriz.
***On the ServiceStack.Redis client you can use GetValues or GetValuesMap (both string and T apis are available) for fetching multiple values (uses MGET) in a single call. Only existing items are returned, which you can detect with GetValues if you have Id's on your models or GetValuesMap which returns a dictionary of existing keys and their values.

Pipelining de MSET'e benziyor ve sonuçlarını anında görmemize gerek olmayan işlemleri gruplayarak tek seferde gönderiyor ve yine doğal olarak hızlı çalışıyor.
Use Pipelining or Transactions***If for some reason you really only want to check the existence of keys in Redis without fetching them, then you can use a Transaction / or Pipeline (both are pipelined) to queue up multiple operations that gets sent to Redis in 1 socket write. Here's an example of this from RedisStackOverflow demo that queues up 30 operations that gets send and executed in a single batch.

SELECT,

ile Redis üzerinde DB seçebiliriz.Parametre 0..n kadar int değer olur.

FLUSHALL,

ile seçili veritabanı içindeki verileri sileriz. ServiceStack içinde komutları void FlushDb(); ve void FlushAll(); olarak geçiyor.

Veri Tipleri

String olarak Object insert

Basit olarak string tipinde veri kaydı ve çekilmesi.
127.0.0.1:6379> set anahtar deger
OK
127.0.0.1:6379> get anahtar 
"deger"

ServiceStack ile

değer kısmına JSON formatında nesnemizi yazabiliriz. Her TC vatandaşının temel bilgilerinin kaydını düşünelim.

NodeJS Redis ile

var redis = require('redis'),
    c = redis.createClient(),

    a = c.SET("users:1", '{"name":"Fred","age":25}');

LIST

Bir anahtar içine List olarak verileri yazalım:


Sonuç:


SETs



Farklı anahtar için veri girişi:

HASHES

8 Haziran 2014 Pazar

POSTGRESQL ile JSON alanlarda veri tutma aşkım alevlendi

Beklediğim PostgreSQL, JSON verilerini tutabilecek şekilde nihayet sürüm olarak yapıldı ve ben de üzerime düşeni yapmak üzere kuruluma başlıyorum. Amacım EAV modeliyle projemizi yazarak ve umarak okuduğum onlarca makaledeki performans sorunlarını yaşamamayı, çok sevgili şirketimiz için yine yeni bir projeye hayat vermek.
Önce zip halinde indirmek üzere aşağıdaki bu adrese gidilir:

Zipimiz açılır ve aşağıdaki şekilde klasör yapısına getirilir:

Data klasöründe veri dosyalarını, Log da ise çorba tariflerini tutacağımızdan bu iki klasörü oluşturduk ve zipin içinden çıkanları yapıştırdık POSTGRESQL_ROOT klasörümüze.

İlk başlatmak için:
C:\POSTGRESQL_ROOT\bin>initdb -U postgress -A password -E utf8 -W -D c:\POSTGRESQL_ROOT\data
yazıp entırladığımızda bize şifre soracağı ana kadar veritabanı ayarlarını yaparak ilerler
The files belonging to this database system will be owned by user "cem".
This user must also own the server process.

The database cluster will be initialized with locale "Turkish_Turkey.1254".
The default text search configuration will be set to "turkish".

Data page checksums are disabled.

fixing permissions on existing directory c:/POSTGRESQL_ROOT/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
creating configuration files ... ok
creating template1 database in c:/POSTGRESQL_ROOT/data/base/1 ... ok
initializing pg_authid ... ok
Enter new superuser password:
Enter it again:
Sonrasında yine işleme devam ederek:
setting password ... ok
initializing dependencies ... ok
creating system views ... ok
loading system objects' descriptions ... ok
creating collations ... not supported on this platform
creating conversions ... ok
creating dictionaries ... ok
setting privileges on built-in objects ... ok
creating information schema ... ok
loading PL/pgSQL server-side language ... ok
vacuuming database template1 ... ok
copying template1 to template0 ... ok
copying template1 to postgres ... ok
syncing data to disk ... ok

Success. You can now start the database server using:

    "postgres" -D "c:\POSTGRESQL_ROOT\data"
or
    "pg_ctl" -D "c:\POSTGRESQL_ROOT\data" -l logfile start
ilk başlatma işini tamamlar.
Bana düşen artık C:\POSTGRESQL_ROOT\bin>"postgres" -D "c:\POSTGRESQL_ROOT\data" komutuyla PostgreSQL sunucumu başlatmak:

Ve artık sunucumuz çalıştığına göre PostgreSQL Admin ile bağlanalım: