Eğitim & Danışmanlık

Değişen ve gelişen günümüz iş dünyasında, teknoloji servislerinin kurumlara sunduğu katma değer gitgide artmakta ve önem kazanmaktadır. AYASİS, 2010 yılından bu yana bilişim teknolojileri alanında uzmanlaşmış profesyoneller yetiştirmektedir. AYASİS’in eğitmen kadrosu, her biri kendi alanında güncel bilgi ve becerilerle donanmış ileri seviyede teknoloji bilgisine sahip, alanlarında uzman kabul edilen profesyonellerden oluşur. AYASİS eğitim ve hizmetlerinde, yenilenme ve daha çok kişiye bilgi ulaştırma çabasını ilke edinmiştir.

AYASİS Yazılım ve Bilişim Teknolojileri, bilişim alanında sadece eğitim hizmetleri değil, sistem ve yazılım çözümleri ile danışmanlık hizmetleri de sunmaktadır.

Programlama dili, yazılımcının bir algoritmayı ifade etmek amacıyla, bir bilgisayara ne yapmasını istediğini anlatmasının tektipleştirilmiş yoludur. Programlama dilleri, yazılımcının bilgisayara hangi veri üzerinde işlem yapacağını, verinin nasıl depolanıp iletileceğini, hangi koşullarda hangi işlemlerin yapılacağını tam olarak anlatmasını sağlar.

Ayasis bünyesinde İleri Seviye C, Linux platformunda multi-processing, multi-threading ve socket programlama (TCP / UDP), nesneye yönelik Java, Visual Studio.NET, C++ tabanlı QT ve Web Service programlama eğitimleri verilmektedir.

Multi-Processing

Multi-Processing bir sistemde aynı anda birden fazla işlemin (process) çalışmasına verilen isimdir. İşletim sistemlerinin gelişimi süreci incelendiğinde ilkel işletim sistemlerinde bu özellik bulunmuyordu. Tek işlem (uniprocess) çalıştıran işletim sistemlerinde hafıza yönetimi bir işlemin kontrolünde yapıldığı için işletim sisteminin işlem üzerinde bir kontrolü bulunmuyor ve bir hafıza yönetimi yapılması gerekmiyordu. Benzer şekilde işlem yönetimi (process management) konusunda da oldukça rahatlık sağlayan tek işlemli işletim sistemlerinin en meşhur örneklerinden birisi de DOS (Disk Operating System)’dur.

Zamanla gelişen birden fazla programın (dolayısıyla işlemin) aynı anda çalışması ihtiyacı ile hafıza yönetiminde ve MİB (Merkezi İşlem Birimi (CPU Central Processing Unit)) planlaması üzerinde bazı değişiklikler yapıldı. Yeni işletim sistemlerinde her işlem kendi adres alanında diğer işlemlerden habersiz bir şekilde çalışmaktadır. Çalışan her işlemin kendi adres bilgisine sahip olabilmesi için mantıksal (logical) adres ataması yapılmaktadır. Bu sayede çalışan programlar her seferinde hafızanın farklı alanlarına yüklenseler bile aynı mantıksal alana erişebilmektedirler.

Multi-Threading

Çok Kanallı Programlama (Multi-Threaded Programming), bir programda aynı anda birden fazla işin yapılabilmesidir. Yani bir kod parçası bir işlemi gerçekleştirirken aynı anda ona paralelel olarak bir başka kod parçasının çalışması demektir. Birbirine paralel çalışan kod parçalarından her birine kanal (thread) denir.

Eğitim bünyesinde Multi-Threading kavramı ve yöntemleri ile Linux ve Windows platformlarında Multi-Threading Programlama konularına değinilmektedir.

Socket Programlama

Socket, network üzerinde protokol tabanlı iletişime olanak sağlayan kavrama verilen isimdir. Linux İşletim Sistemlerinde network yardımcı ağ programları, işletim sisteminin içinde gömülü bir şekilde gelmiştir.

Win32 sistemlerinde soket programlama için kullanılan araç; wsock32.dll isimli dinamik kütüphane dosyasıdır ve kısaca winsock olarak adlandırılır. Ancak .NET platformunda soket programlama, “System.Net.Sockets namespace’i içerisinde bulunan programatik araçlar kullanılarak gerçekleştirilmektedir.

Protokol Kavramı

Protokol, iletişim için tarafların uymak zorunda olduğu kurallar bütünüdür. Protokoller çeşitli katmanlardan oluşabilmektedir. Bir protokol başka bir protokolü kullanmak sureti ile daha yüksek seviyeli bir yapıyı oluşturabilir. Örneğin TCP ve UDP isimli protokoller, IP protokolünü temel alarak tasarlanmış protokollerdir. HTTP protokolünde ise; TCP/IP protokolü temel alınmıştır.

TCP/IP Protokolü

IP protokolünü kullanan, TCP/IP (Transmission Control Protocol); bağlantı kullanımı açısından, bağlantılı (connection oriented) bir protokoldür. Bunun anlamı; iletişim halindeki tarafların belirli süreçlerde istemci-sunucu biçiminde organize edilmeleri gereğidir.

Ayrıca TCP protokolünde iletişim, tarafların birbirlerini sürekli kontrol etmesini gerektirmektedir. Şüphesiz bağlantılı protokollerdeki bu kontrol mekanizmasının performansa yansıması olumsuzdur.

TCP/IP, byte tabanlı bir protokoldür. Yani iletilen bilgiler sıradan byte’lardan oluşmaktadır. Gönderen ve alan taraflar herhangi bir byte bilgiyi gönderip alabilirler.

UDP Protokolü

UDP protokolü de IP protokolünü kullanır, fakat bağlantı kullanımı açısından bağlantısız (connectionless) bir iletişim modelini öngörür. Bu nedenle UDP protokolünde istemci-sunucu ayrımı yoktur.

Bağlantılı protokollerin aksine, UDP protokolünde iletişim sırasında herhangi bir kontrol/onay mekanizması kullanılmamaktadır. Bu nedenle UDP, TCP protokolünden daha az güvenilir fakat daha hızlı bir protokol olabilmektedir. Hız faktöründeki artışa rağmen, UDP protokolünde gönderilen bir bilginin yerine ulaşıp ulaşmadığının garanti edilebilmesine imkan yoktur.

UDP, TCP/IP ‘nin aksine mesaj tabanlı bir protokoldür. Yani gönderici tarafın gönderdiği her bir bilgi topluluğu mesaj benzeri ayrı bir yapı oluşturmaktadır. Örneğin, gönderici sırasıyla 50, 100, 150 byte bilgi göndermiş ise alıcı taraf da bilgiyi aynen bu miktarlarda alacaktır.

Port Kavramı

Bildiğiniz gibi IP protokolünde, iletişim halindeki makineler, tekil IP numaraları ile ayrıştırılmış durumdadır. Network üzerinde iletişim için tekil bir IP numarasına ya da başka bir deyişle tek bir bağlantıya bağımlı olan makineye farklı yerlerden gelen bilgiler nasıl ayrıştırılacaktır? Bu noktada port kavramı devreye girerek, tek bir bağlantı üzerinden farklı bilgilerin iletişimini olanaklı kılar. Network üzerinde çalışan uygulamalar, aynı IP numarası fakat farklı port’lar üzerinden iletişim gerçekleştirmektedirler.

İleri Seviye C

AT&T Bell laboratuvarlarında, Ken Thompson ve Dennis Ritchie tarafından UNIX İşletim Sistemi' ni geliştirebilmek amacıyla B dilinden türetilmiş yapısal bir programlama dilidir. Geliştirilme tarihi 1972 olmasına rağmen yayılıp yaygınlaşması Brian Kernighan ve Dennis M. Ritchie tarafından yayımlanan "C Programlama Dili" kitabından sonra hızlanmıştır. Günümüzde neredeyse tüm işletim sistemlerinin (Microsoft Windows, GNU/Linux, *BSD, Minix) yapımında %95' lere varan oranda kullanılmış, halen daha sistem, sürücü yazılımı, işletim sistemi modülleri ve hız gereken heryerde kullanılan oldukça yaygın ve sınırları belirsiz oldukça keskin bir dildir.

Keskinliği, programcıya sonsuz özgürlüğün yanında çok büyük hatalar yapabilme olanağı sağlamasındak kaynaklanmaktadır.

Programlamanın gelişim süreciyle beraber karmaşıklaşması, gereksinimlerin artması ile uygulama programlarında nesne yönelimliliğin ortaya çıkmasından sonra C programcıları büyük ölçüde nesne yönelimliliği destekleyen C++ programlama diline geçmişlerdir.

Visual Studio.NET

Microsoft Visual Studio, Microsoft tarafından geliştirilen bir tümleşik geliştirme ortamıdır (IDE). Microsoft Windows, Windows Mobile, Windows CE, .NET Framework, .NET Compact Framework ve Microsoft Silverlight tarafından desteklenen tüm platformlar için yönetilen kod ile birlikte yerel kod ve Windows Forms uygulamaları, web siteleri, web uygulamaları ve web servisleri ile birlikte konsol ve grafiksel kullanıcı arayüzü uygulamaları geliştirmek için kullanılır.

Visual Studio IntelliSense'in yanı sıra "code refactoring" destekleyen bir kod editörü içerir. Entegre hata ayıklayıcı, hem kaynak-seviyesinde hem de makine-seviyesinde çalışır. Diğer yerleşik araçlar, GUI uygulamaları, web tasarımcısı, sınıf tasarımcısı ve veritabanı şema tasarımcısı yaratabilmek için bir form tasarımcısı içerir. Hemen hemen her işlevsellik düzeyinde dahil olmak üzere, kaynak kontrol sistemleri için destek (Subversion ve Visual SourceSafe gibi) sunan eklentileri kabul eder.

Visual Studio, değişik programlama dillerini destekler, bu da kod editörü ve hata ayıklayıcısının neredeyse tüm programlama dillerini desteklemesini sağlamaktadır. Dahili diller C/C++ (Görsel yoluyla C++), VB.NET (Visual Basic .NET üzerinden), C# (Visual C# ile), ve F# (Visual Studio 2010 itibariyle) içermektedir.

Java

Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmış açık kodlu, nesneye yönelik, platform bağımsız, yüksek verimli, çok işlevli, yüksek seviye, adım adım işletilen (yorumlanan-interpreted) bir dildir.

Java, Sun Microsystems'den James Gosling tarafından geliştirilen bir programlama dilidir (Sun Microsystem'in şu anda Oracle Corporation ile bağlı ortaklığı bulunmaktadır) ve 1995 yılında Sun Microsystems'in çekirdek bileşeni olarak piyasaya sürülmüştür. Bu dil C ve C++'dan birçok sözdizim türetmesine rağmen bu türevler daha basit nesne modeli ve daha az düşük seviye olanaklar içerir. Java uygulamaları bilgisayar mimarisine bağlı olmadan herhangi bir Java Virtual Machine (JVM)'de çalışabilen tipik bytecode uygulamalardır (sınıf dosyaları).

Java ilk çıktığında daha çok küçük cihazlarda kullanılmak için tasarlanmış ortak bir platform dili olarak düşünülmüştü. Ancak platform bağımsızlığı özelliği ve tekbiçim kütüphane desteği C ve C++'tan çok daha üstün ve güvenli bir yazılım geliştirme ve işletme ortamı sunduğundan, hemen her yerde kullanılmaya başlanmıştır. Şu anda özellikle kurumsal alanda ve mobil cihazlarda son derece popüler olan Java, masaüstü uygulamalarda da yaygınlaşmaya başlamıştır. Java'nin ilk sürümü olan Java 1.0 (1995) Java Platform 1 olarak adlandırıldı ve tasarlama amacına uygun olarak küçük boyutlu ve kısıtlı özelliklere sahipti. Daha sonra platformun gücü gözlendi ve tasarımında büyük değişiklikler ve eklemeler yapıldı. Bu büyük değişikliklerden dolayı geliştirilen yeni platforma Java Platform 2 adı verildi ama sürüm numarası 2 yapılmadı, 1.2 olarak devam etti. 2004 sonbaharında çıkan Java 5, geçmiş 1.2, 1.3 ve 1.4 sürümlerinin ardından en çok gelişme ve değişikliği barındıran sürüm oldu. Java SE 7 ise (kod adı Dolphin) Sun'un üzerinde çalıştığı, Java teknolojisinin günümüz sürümüdür. 13 Kasım 2006'da Java düzlemi GPL ruhsatıyla açık kodlu hale gelmiştir.

QT

Qt, birden çok platformu destekleyen bir grafiksel kullanıcı arayüzü geliştirme araç takımıdır. Genellikle GUI programları geliştirmek için kullanılsa da gelişmiş kütüphanesi GUI bileşenlerinin dışında birçok araç içermektedir. Qt, en çok KDE masaüstü ortamında, Opera ağ tarayıcısında ve Skype anında mesajlaşma programlarında kullanılmasıyla bilinir.

Qt, C++ kullansa da, farklı dillere olan bağlantıları sayesinde Python, Ruby, PHP, Perl, Pascal, C# ve Java ile de kullanılabilir.

Yazılım Geliştirme Kiti olarak dağıtılan Qt, kurulduğunda birçok örnek uygulama ile birlikte gelmektedir. Yeni Tümleşik Geliştirme Ortamı olan Qt Creator sayesinde geliştirme süreci büyük ölçüde hızlandırılmıştır.

Web Service

Web service ya da Türkçe ifade etmek gerekirse Web Servis, adından da anlaşılacağı gibi web üzerinden servis veren program parçacıklarıdır. Web servisi, XML mesajlaşma tabanlı bir sistem entegrasyon metodudur. Bir başka deyişle bilgisayarlar arasında ağ üzerinden etkileşimi ve uyumluluğu sağlayacak yazılım sistemidir.

Web servisi, XML tabanlı veri iletimini temel alır. Örneğin, Java ile geliştirilmiş ve UNIX sistem üzerinde çalışan bir uygulama ile .NET ile geliştirilmiş ve Windows işletim sistemi üzerinde çalışan bir uygulama, birbirlerinin çalışma ortamlarından bağımsız olarak, XML iletişim standartları aracılığıyla iletişim kurabilir

Bir uygulamanın fonksiyonlarını, Internet üzerinden çok geniş bir kullanıcı kitlesine açmak web servislerle mümkün olmaktadır. Örneğin, Merkez bankasının döviz kurları bilgisine diğer web sitelerin, bankaların, ajansların ulaşablimesi gibi.

İşletim sistemi, bilgisayarda çalışan, bilgisayar donanım kaynaklarını yöneten ve çeşitli uygulama yazılımları için yaygın servisleri sağlayan bir yazılımlar bütünüdür. İşletim sistemi, uygulama kodları genellikle direkt donanım tarafından yürütülmesine rağmen, girdi-çıktı, bellek atama gibi donanım fonksiyonları için uygulama programları ve bilgisayar donanımı arasında aracılık görevi yapar.

İşletim sistemleri sadece bilgisayar, video oyun konsolları, cep telefonları ve web sunucularında değil; arabalarda, beyaz eşyalarda hatta kol saatlerinin içinde bile yüklü olabilir. İşletim sistemleri işlevsellerinin genişliği ile değil, donanımı belli bir amaç doğrultusunda programlayabilme nitelikleriyle değerlendirilmelidir.

Ayasis bünyesinde ileri seviye Linux, Unix ve AIX Unix sistem yönetimi eğitimleri verilmektedir.

UNIX Sistem Yönetimi

UNIX, 1969 yılında,Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, Michael Lesk ve Joe Ossanna tarafından Bell Laboratuvarları'nda geliştirilmiş, çok kullanıcılı (multiuser), çok görevli yapıyı destekleyen (multitasking) bir bilgisayar işletim sistemidir. Komut yorumlayıcı yazılımlar (shell) aracılığı ile kullanıcı ve bilgisayar sisteminin iletişimi sağlanır.

UNIX türevi işletim sistemleri çok işlemcili çok pahalı makinalardan, tek işlemcili basit ve çok ucuz ev bilgisayarlarına kadar pek çok cihaz üzerinde çalışabilen esnek ve sağlamlığı çok değişik koşullarda test edilmiş sistemlerdir. Fakat özellikle kararlı yapısı ve çok kullanıcılı-çok görevli yapısıyla çok işlemcili sunucularda adeta standard haline gelmiştir ve özellikle akademik dünyada iş istasyonları üzerinde çok yaygın bir kullanım alanı bulmuştur.

LINUX Sistem Yönetimi

Linux Unix’e fikirsel ve teknik anlamda atıfta bulunarak geliştirilmiş; açık kaynak kodlu, özgür ve ücretsiz bir işletim sistemi çekirdeğidir. Çekirdeğin kaynak kodları GNU Genel Kamu Lisansı çerçevesinde özgürce dağıtılabilir, değiştirilebilir ve kullanılabilir. Linux ismi ilk olarak Linus Torvalds tarafından yazılan ve 5 Ekim 1991 Linux 0.02 etiketiyle duyurusu yapılan, Linux çekirdeğinden gelmektedir. Linux'un Unix ile herhangi bir kod ortaklığı bulunmamaktadır yani Linux'un kodları sıfırdan başlanılarak yazılmıştır.

Çok geniş bir donanım desteğine sahip olan Linux çekirdeği; Sunucu bilgisayarlar, masaüstü-dizüstü bilgisayarlar, iş istasyonları, akıllı telefonlar, yeni nesil TV'ler ve tabletler gibi hemen her platformda tam bir uyum içerisinde çalışabilmektedir. Linux sunucu işletim sistemlerinde kullanım oranı bakımından ilk sırada tercih edilmekte ve dünyanın 10 hızlı süperbilgisayarında da kullanılmaktadır.

Linux gelişimi açık bir şekilde yapılmaktadır. Bunun anlamı, işletim sisteminin her aşaması açık olarak Internet üzerinde yayınlanmakta, dünyanın dört bir yanında kullanıcılar tarafından test edilmekte, hataları ve eksiklikleri tesbit edilerek düzeltilmekte ve geliştirilmektedir. Zaman zaman bu deneme aşamaları belirli bir noktada durdurulur ve güvenilir bir işletim sistemi sunulup, geliştirme için ayrı bir seriye devam edilir. Hatalar, anında kullanıcılar tarafından tesbit edilip rapor edilmekte ve birçok kişinin katkısıyla düzeltilmektedir.

Son kullanıcılar açısından bakılacak olursa Linux, tek başına bir çekirdek olarak bir anlam ifade etmez. Ancak Linux çekirdeğini kullanan çeşitli "Linux dağıtımları" bu çekirdeğin üzerine bir grafiksel masaüstü ortamı, Internet tarayıcı, ofis seti, video-müzik oynatıcı gibi yazılımlar ilave edilerek son kullanıcıya tam teşekküllü bir işletim sistemi olarak sunmaktadır.

Türkiye'de Linux çalışmaları 2005 yılında TÜBİTAK tarafından başlatılan Pardus işletim sistemi projesinin etkisiyle önemli bir hız kazanmıştır.

Veri tabanı yönetim sistemleri, verilerin tablolarda satır ve sütunlar halinde tutulduğu ve yüksek bir veri tutarlılığına sahip veri depolama sistemleridir.

Ayasis bünyesinde uzman seviyede IBM - DB2, Oracle, MySQL ve MsSql Veri Tabanı Yönetimi eğitimleri verilmektedir.

IBM DB2 Yönetimi

DB2 uzun bir geçmişe sahiptir. Oracle'ın ticari veritabanı ürünü daha önce üretilmesine rağmen IBM DB2, SQL kullanan ilk veritabanı yazılımı olarak kabul edilir.

DB2 veritabanı yönetim sistemi IBM tarafından 1983'te yayınlandı. DB2'nin alt yapısını hazırlayan ve IBM'de çalışan Edgar Codd, Haziran 1970'te ilişkisel veri tabanı modeli teorisini sunmuştu. Daha sonra bu teorisini gerçekleştirmek için Alpha isminde bir ilişkisel veritabanı dili yaptı. O dönem IBM Codd'un bu fikrine inanmadı fakat Codd'un gözetiminde olmayan bir grup programcı, Codd'un temellerini attığı ilişkisel modeli devam ettip SEQUEL dilini geliştirdi. (Structured English QUEry Language – Yapılandırılmış İngilizce Sorgu Dili). IBM ilk ilişkisel veritabanı ürününü yayınladıktan sonra, bu ürüne bir de kurumsal düzeyde kullanılabilecek bir dil ihtiyacı duydu ve SEQUEL'i elden geçirip değiştirerek SQL (Structured Query Language – Yapılandırılmış Sorgu Dili) olarak adlandırdığı dili kullandı.

İlerleyen yıllarda IBM DB2 ürününü geliştirerek platform desteğini ve programlama dili desteğini arttırdı. Günümüzde DB2 PDA'lar da dahil olmak üzere 19 farklı platformda 15'ten fazla programlama dilini desteklemektedir.

2009'da DB2 motoru MYSQL içerisinde kullanılabilir hale geldi.

Oracle Sistem Yönetimi

Oracle, Microsoft ve IBM'in ardından dünyanın üçüncü büyük yazılım firmasıdır. Veritabanı, uygulama geliştirme araçları, uygulama sunucusu ve de iş uygulamaları alanlarında yazılım çözümleri bulunmaktadır.

MYSQL Yönetimi

MySQL, altı milyondan fazla sistemde yüklü bulunan çoklu iş parçacıklı (multi-threaded), çok kullanıcılı (multi-user), hızlı ve sağlam (robust) bir veritabanı yönetim sistemidir.

UNIX, OS/2 ve Windows platformları için ücretsiz dağıtılmakla birlikte ticari lisans kullanmak isteyenler için de ücretli bir lisans seçeneği de mevcuttur. Linux altında daha hızlı bir performans sergilemektedir. Kaynak kodu açık olan MySQL'in pek çok platform için çalıştırılabilir sürümleri de mevcuttur. Ayrıca ODBC sürücüleri de bulunduğu için birçok geliştirme platformunda rahatlıkla kullanılabilir.

Web sunucularında en çok kullanılan veritabanıdır, ASP, PHP gibi birçok web programlama dili ile kullanılabilir.

MySQL, çok kullanıcılı sistemlerde söz konusu olan erişim hakları sorununu başarılı bir şekilde çözmektedir. MySQL'in 4.0 sürümü ile birlikte "transaction" desteği, 4.1 sürümüyle birlikte de alt sorgu desteği eklenmiştir.

Ayrıca veri tutarlılığını (referential integrity) sağlama işinin programcıya bırakılması tercih edilmiştir, ancak bu bir dezavantaj olarak görülmeyebilir. Çünkü pek çok veritabanı programcısı VTYS'lerdeki veri tutarlılığının esnek olmayan, zorlayıcı bir özellik olduğunu düşünmektedir.

Microsoft Sql Server Yönetimi

Microsoft SQL Server en çok kullanılan veritabanı sunucu yazılımlarından biridir. Veritabanlarının oluşturulmasını ve yönetilmesini sağlayan kurumsal çaplı bir veritabanı yönetim sistemidir. SQL Server kullanarak veriler istenilen şekilde depolanıp yönetebilir ve stored prosedürler yardımı ile çok sayıda ve komplike sonuçlar elde edilebilir.

Gömülü sistem, bilgisayarın kendisini kontrol eden cihaz tarafından içerildiği özel amaçlı bir sistemdir. Genel maksatlı, örneğin kişisel bilgisayar gibi bir bilgisayardan farklı olarak, gömülü bir sistem kendisi için önceden özel olarak tanımlanmış görevleri yerine getirir. Sistem belirli bir amaca yönelik olduğu için tasarım mühendisleri ürünün boyutunu ve maliyetini azaltarak sistemi uygunlaştırabilirler. Gömülü sistemler genellikle büyük miktarlarda üretildiği için maliyetin düşürülmesinden elde edilecek kazanç, milyonlarca ürünün katları olarak elde edilebilir.

Gömülü bir sistemin çekirdeğini, belirli bir sayıda görevi yerine getirmek için programlanan mikroişlemciler ya da mikrodenetleyiciler oluşturur. Kullanıcıların üzerinde istediği yazılımları çalıştırabildiği genel maksatlı bilgisayarlardan farklı olarak, gömülü sistemlerdeki yazılımlar yarı kalıcıdırlar ve firmware ismiyle anılırlar.