Posts Tagged :

mezo

Introduction to AI on Microsoft Azure 853 480 mezo

Introduction to AI on Microsoft Azure

Hello my dear padawans I would like to write some notes about AI for everyone, I am preparing for Microsoft AI Engineer certification exams and I will put my notes here as much as possible 🙂

What is AI? AI is a powerful tool, paving the way for innovative software that enhances health care, assists individuals with physical limitations, fortifies smart infrastructure, delivers captivating entertainment experiences, and contributes to environmental conservation.

Exploring AI

AI is characterized by its ability to mimic human behaviors and skills. It encompasses:

  • Machine Learning: The cornerstone of AI, enabling computers to learn from data and make informed predictions.
  • Computer Vision: Allows AI to interpret visual information from images and videos.
  • Natural Language Processing: Enables computers to understand and respond to human language.
  • Document Intelligence: Manages and processes vast amounts of data in documents efficiently.
  • Knowledge Mining: Extracts valuable information from unstructured data sources.
  • Generative AI: Creates original content ranging from text to images.

Diving Deep into Machine Learning

Machine learning stands as the bedrock of many AI applications. Since its inception in the 1950s, it has been a focal point for data scientists globally. This branch of AI intertwines computer science with mathematics.

Consider sustainable farming – an area where machine learning proves instrumental. Companies like The Yield leverage sensors, data analytics, and machine learning algorithms to provide farmers with actionable insights on weather patterns, soil quality, and plant health.

Unraveling Machine Learning Mechanisms

In today’s digital age, we are inundated with a plethora of data daily. Machine learning algorithms sift through this extensive dataset – including social media posts, emails, photographs – discerning patterns and relationships that inform decision-making processes.

For instance in environmental conservation efforts; machine learning models analyze complex datasets identifying correlations between various elements. These insights are pivotal for developing strategies aimed at preserving our planet’s biodiversity while promoting sustainable practices.

Unleashing the Power of AI: A Deep Dive into Machine Learning and Computer Vision

In the ever-evolving field of Artificial Intelligence (AI), a team of dedicated botanists and scientists are making remarkable strides in understanding wildflower species. Armed with labeled data meticulously collected from wildflower samples, these professionals employ sophisticated algorithms to unveil intricate relationships between various features and species.

The Journey from Data Collection to Model Creation

The process begins in the heart of nature, where every sample is labeled with precision, ensuring accuracy in data collection. This labeled data then undergoes rigorous processing through an algorithm designed to uncover hidden patterns and relationships. The culmination of this process is a comprehensive model that encapsulates these findings.

As AI continues its upward trajectory, new samples discovered by volunteers can now be easily identified by this model, marking a significant milestone in AI’s capabilities.

Microsoft Azure: Your Companion in Machine Learning

Machine learning has found a formidable ally in Microsoft Azure. With its Azure Machine Learning service, users are endowed with a cloud-based platform tailored for creating, managing, and publishing machine learning models with ease.

Azure Machine Learning Studio stands out with its diverse authoring experiences including Automated machine learning for quick model creation; Azure Machine Learning designer for no-code solution development; Data metric visualization for experiment analysis; and Notebooks for personalized code writing on integrated Jupyter Notebook servers.

A Glimpse into the World of Computer Vision

Venturing into the realm of computer vision unveils possibilities that were once considered beyond reach. The Seeing AI app exemplifies computer vision’s prowess. Crafted for individuals with blindness or low vision, this app employs AI to narrate the visual world around them – an innovation transforming lives.

For an immersive experience on Seeing AI’s capabilities watch this video or explore more on the Seeing AI web page.

In Conclusion

AI’s journey from collecting wildflower samples to identifying species labels using complex models underscores its phenomenal growth. With platforms like Microsoft Azure enhancing machine learning and innovations like Seeing AI illuminating paths in computer vision, we are indeed witnessing a renaissance in artificial intelligence!

TaskDescription
Image classificationAn image of a taxi with the label "Taxi".
Image classification involves training a machine learning model to classify images based on their contents. For example, in a traffic monitoring solution you might use an image classification model to classify images based on the type of vehicle they contain, such as taxis, buses, cyclists, and so on.
Object detectionAn image of a street with buses, cars, and cyclists identified and highlighted with a bounding box.
Object detection machine learning models are trained to classify individual objects within an image, and identify their location with a bounding box. For example, a traffic monitoring solution might use object detection to identify the location of different classes of vehicle.
Semantic segmentationAn image of a street with the pixels belonging to buses, cars, and cyclists identified.
Semantic segmentation is an advanced machine learning technique in which individual pixels in the image are classified according to the object to which they belong. For example, a traffic monitoring solution might overlay traffic images with “mask” layers to highlight different vehicles using specific colors.
Image analysisAn image of a person with a dog on a street and the caption "A person with a dog on a street".
You can create solutions that combine machine learning models with advanced image analysis techniques to extract information from images, including “tags” that could help catalog the image or even descriptive captions that summarize the scene shown in the image.
Face detection, analysis, and recognitionAn image of multiple people on a city street with their faces highlighted.
Face detection is a specialized form of object detection that locates human faces in an image. This can be combined with classification and facial geometry analysis techniques to recognize individuals based on their facial features.
Optical character recognition (OCR)An image of a building with the sign "Toronto Dominion Bank", which is highlighted.
Optical character recognition is a technique used to detect and read text in images. You can use OCR to read text in photographs (for example, road signs or store fronts) or to extract information from scanned documents such as letters, invoices, or forms.

Understand natural language processing

Natural language processing (NLP) is a subfield of artificial intelligence that deals with the interaction between computers and humans in natural language. It involves processing natural language datasets, such as text corpora or speech corpora, using either rule-based or probabilistic (i.e. statistical and, most recently, neural network-based) machine learning approaches. The goal is a computer capable of “understanding” the contents of documents, including the contextual nuances of the language within them. The technology can then accurately extract information and insights contained in the documents as well as categorize and organize the documents themselves.

NLP has a wide range of applications, including:

  • Sentiment Analysis: Identifying the sentiment of a piece of text, such as whether it is positive, negative, or neutral.
  • Named Entity Recognition: Identifying and categorizing named entities in text, such as people, organizations, and locations.
  • Machine Translation: Automatically translating text from one language to another.
  • Question Answering: Automatically answering questions posed in natural language.
  • Chatbots: Interacting with users in natural language to answer questions or perform tasks.

NLP is a rapidly evolving field, with new techniques and models being developed all the time. Some of the most recent advances include:

  • Pre-trained Language Models: Large neural network models that are trained on massive amounts of text data, allowing them to perform a wide range of NLP tasks with high accuracy.
  • Transformers: A type of neural network architecture that has revolutionized NLP by allowing models to process entire sequences of text at once, rather than one word at a time.
  • Zero-shot Learning: A technique that allows models to perform NLP tasks in languages they have never seen before, by leveraging their knowledge of related languages.

NLP is a powerful tool that has the potential to transform the way we interact with computers and with each other. As the field continues to evolve, we can expect to see even more exciting applications of this technology in the years to come.

Document intelligence

Document Intelligence is a subfield of AI that focuses on managing, processing, and utilizing large volumes of data found in forms and documents. It enables the creation of software that can automate processing for contracts, health documents, financial forms, and more. This technology can extract valuable information from unstructured data sources, categorize and organize documents, and efficiently manage high volumes of data. Knowledge Mining is another area of AI that deals with extracting information from large volumes of often unstructured data to create a searchable knowledge store. It is a powerful tool that can help organizations extract valuable insights from their data and make informed decisions. Together, Document Intelligence and Knowledge Mining are transforming the way businesses manage and process data, enabling them to work more efficiently and effectively.

Generative AI

Generative AI is a subfield of artificial intelligence that deals with creating original content. It is often used in chat applications, where it takes in natural language input and returns appropriate responses in a variety of formats, including natural language, image, code, and audio. Generative AI models learn the patterns and structure of their input training data and then generate new data that has similar characteristics. This technology has a wide range of applications, including art, writing, script writing, software development, product design, healthcare, finance, gaming, marketing, and fashion. With the advent of large neural network models and transformer-based deep neural networks, generative AI has become more powerful and capable of performing a wide range of tasks with high accuracy.

Responsible AI 

Responsible AI is an approach to developing, assessing, and deploying AI systems in a safe, trustworthy, and ethical way. It emphasizes accountability, fairness, and inclusivity. The goal is to ensure that AI is created and applied in an ethical way that benefits everyone, while minimizing the potential for artificial intelligence to cause harm. Responsible AI practices aim to mitigate bias, ensure privacy, and prioritize the well-being of all users. Microsoft Azure provides a suite of tools to help you create a customized, end-to-end responsible AI experience, including the Responsible AI Dashboard, which offers a range of tools to help you operationalize responsible AI practices for your organization or business. As the field of AI continues to evolve, responsible AI practices will play an increasingly important role in ensuring that AI is developed and deployed in a way that benefits society as a whole.

At Microsoft, AI software development is guided by a set of six principles, designed to ensure that AI applications provide amazing solutions to difficult problems without any unintended negative consequences.

  • Fairness
  • Reliability and safety
  • Privacy and security
  • Inclusiveness
  • Transparency
  • Accountability

I hope that is helpful

May the knowledge be with you

Components on Blazor 1024 557 mezo

Components on Blazor

Hi my fellow Padawans

Blazor is a frontend framework like Angular or React but mostly like React and it has components for create pages and reusable objects functionalities.

But how can we create a component and use it on the pages in our Blazor application?

First Read this Article and create your first Blazor application 🙂

Then on your Solution Explorer find Pages and right click on it and Add -> Razor Component

On Add New Item windows write your components name and create it

I decided to make something different and I created Todo.Razor file and I add these codes on the page

@page "/todo"
@using BlazorApp1.Data;

<h3>Todo</h3>

<ul>
    @foreach (var todo in todos)
    {
            <li>@todo.Title</li>
    }
</ul>

<input placeholder="Something todo" @bind="newTodo" />
<button @onclick="AddTodo">Add todo</button>

@code {
    private List<TodoItem> todos = new();
    private string? newTodo;

    private void AddTodo()
    {
        if (!string.IsNullOrWhiteSpace(newTodo))
        {
            todos.Add(new TodoItem { Title = newTodo });
            newTodo = string.Empty;
        }
    }
}

And find NavMenu.razor file inside of the Shared folder on your Solution Explorer. Find the last item of menu divs and Add this code:

  <div class="nav-item px-3">
            <NavLink class="nav-link" href="todo">
                <span class="oi oi-list-rich" aria-hidden="true"></span> Todo
            </NavLink>
        </div>

You will have a NavMenu.Razor page like this:

<div class="top-row ps-3 navbar navbar-dark">
    <div class="container-fluid">
        <a class="navbar-brand" href="">BlazorApp1</a>
        <button title="Navigation menu" class="navbar-toggler" @onclick="ToggleNavMenu">
            <span class="navbar-toggler-icon"></span>
        </button>
    </div>
</div>

<div class="@NavMenuCssClass" @onclick="ToggleNavMenu">
    <nav class="flex-column">
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="" Match="NavLinkMatch.All">
                <span class="oi oi-home" aria-hidden="true"></span> Home
            </NavLink>
        </div>
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="counter">
                <span class="oi oi-plus" aria-hidden="true"></span> Counter
            </NavLink>
        </div>
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="fetchdata">
                <span class="oi oi-list-rich" aria-hidden="true"></span> Fetch data
            </NavLink>
        </div>
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="todo">
                <span class="oi oi-list-rich" aria-hidden="true"></span> Todo
            </NavLink>
        </div>
    </nav>
</div>

@code {
    private bool collapseNavMenu = true;

    private string? NavMenuCssClass => collapseNavMenu ? "collapse" : null;

    private void ToggleNavMenu()
    {
        collapseNavMenu = !collapseNavMenu;
    }
}

When you open the webpage you will see the Todo on your left navigation menu and then you will see your amazing Todo application like below:

If you want to use this component in other pages for example add this component on the home page. Go to your Index.Razor inside of the Pages folder and add this code :

<Todo/>

Your index.Razor will look like this

@page "/"

<PageTitle>Index</PageTitle>

<h1>Hello, Everyone!</h1>

Welcome to your new app. Hello 

<SurveyPrompt Title="How is Blazor working for you?" />




<Todo/>

Then we RUN our app oooorrr we can Hot Reload and we will see the result like below:

That is easy isn’t it ?

I hope that is helpful

May the knowledge be with you

Create Your First Blazor Application 1024 557 mezo

Create Your First Blazor Application

Hello My Fellow Padawans 🙂

Today I will tell you about a new Frontend Technology called “Blazor”. It sounds similar from somewhere… Yes Razor and yes its a Microsoft technology.

Ok but lets remember what is RAZOR first: Razor is a format for generating text-based content, like HTML. Razor files have cshtml or a razor file extension, and contain a mix of C# code along with HTML.

What is Blazor

Blazor is a user-interface framework built on .NET and Razor. Blazor applications can run on a server as part of an ASP.NET application or can be deployed to run in the browser on a user’s machine similar to a single-page application. It comes with 2 different app styles.

Blazor Server: is an implementation of the Blazor user-interface framework as part of the ASP.NET Core web development framework, deployed to a web server. Developing an application with Blazor Server generates HTML on a web server as it is requested by web site visitors, typically using a web browser. That HTML is then delivered to the visitor’s browser, and a two-way communication pipeline is maintained using ASP.NET Core SignalR and preferring a Web Sockets connection.

Users that click buttons, navigate, and perform other interactions with a Blazor Server application have their actions transmitted on this SignalR connection, and the server responds with user-interface updates using the same connection. The Blazor Server framework automatically updates the browser with the content generated on the web server.

Blazor WebAssembly: Shortened to Blazor WASM, is an implementation of the Blazor user-interface framework that runs on the HTML 5 standard WebAssembly runtime present in all modern browsers. The binary output of your application, the DLL files, are transmitted to the browser and run with a version of .NET that has been optimized to work with the WebAssembly runtime regardless of the underlying operating system of the device browsing to the website.

Since WebAssembly is a technology that runs entirely in the browser, it’s possible to deploy this model of the Blazor application using files that a web server doesn’t parse or interact with. This type of “static” approach reduces the requirements for a web server and shifts all processing for the application to the user’s machine.

Advanced processing and logic can take place in the browser. When the application needs data or to interact with other services, it can use standard web technologies to communicate with HTTP services.

How to build an application with Blazor

Start your Visual Studio 2022

Then create Blazor Server App and in the Configure your new project window, enter BlazorApp as the project name and select Next.

In the Additional information window, select .NET 7.0 (Standard Term Support) in the Framework drop-down if not already selected and click the Create button.

Your project is created and loaded in Visual Studio. Take a look at the contents of your project using Solution Explorer.

Several files were created to give you a simple Blazor app that is ready to run.

  • Program.cs is the entry point for the app that starts the server and where you configure the app services and middleware.
  • App.razor is the root component of the app.
  • The Pages directory contains some example web pages for the app.
  • BlazorApp.csproj defines the app project and its dependencies and can be viewed by double-clicking the BlazorApp project node in the Solution Explorer.
  • The launchSettings.json file inside the Properties directory defines different profile settings for the local development environment. A port number is automatically assigned at project creation and saved on this file.

To run your application basically click the Run button.

When you made some changes and you want to see your changes on the browser you need to click the Hot Reload button

If you want to make “Hot Reload” every time you save your changes then you need to click the menu button next to “Hot Reload” and select “Hot Reload on File Save” Then VS will watch your file save and refresh your web app on the browser to show your changes.

After you run your app you will see the default app of the Blazor.

Congrats you made your first Blazor App and make it run!

Last thing I want to show is how Blazor files and pages look like

_Host.cshtml This holds our application and renders page components.

@page "/"
@namespace BlazorApp1.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@{
    Layout = "_Layout";
}

<component type="typeof(App)" render-mode="ServerPrerendered" />

Index.razor : This is the Home page that you see on the screenshot below.

@page "/"

<PageTitle>Index</PageTitle>

<h1>Hello, Everyone!</h1>

Welcome to your new app. Hello 

<SurveyPrompt Title="How is Blazor working for you?" />

Counter.razor and this is the counter component as a page. It’s easy to render and reuse.

@page "/counter"

<PageTitle>Counter</PageTitle>

<h1>Counter</h1>

<p role="status">Current count: @currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

@code {
    private int currentCount = 0;

    private void IncrementCount()
    {
        currentCount++;
    }
}

Congrats 🙂 you open the new Blazor App and make that work

I will keep continuing to write about it coz I probably will use it for my company.

I hope that is helpful

May the knowledge be with you

Binary representation of floating-point numbers 1024 420 mezo

Binary representation of floating-point numbers

Have you ever considered the process by which computers store floating-point numbers such as 3.1416 (𝝿) or 9.109 × 10⁻³¹ (the mass of the electron in kg) in the memory which is limited by a finite number of ones and zeroes (aka bits)?

For integers (i.e., 17). It appears to be fairly straightforward. Assume we have 16 bits (2 bytes) to store the number. We can store integers between 0 and 65535 in 16 bits:

(0000000000000000)₂ = (0)₁₀

(0000000000010001)₂ =
    (1 × 2⁴) +
    (0 × 2³) +
    (0 × 2²) +
    (0 × 2¹) +
    (1 × 2⁰) = (17)₁₀

(1111111111111111)₂ =
    (1 × 2¹⁵) +
    (1 × 2¹⁴) +
    (1 × 2¹³) +
    (1 × 2¹²) +
    (1 × 2¹¹) +
    (1 × 2¹⁰) +
    (1 × 2⁹) +
    (1 × 2⁸) +
    (1 × 2⁷) +
    (1 × 2⁶) +
    (1 × 2⁵) +
    (1 × 2⁴) +
    (1 × 2³) +
    (1 × 2²) +
    (1 × 2¹) +
    (1 × 2⁰) = (65535)₁₀

On the off chance that we really want a marked number we might utilize two’s supplement and shift the scope of [0, 65535] towards the negative numbers. For this situation, our 16 pieces would address the numbers in a scope of [-32768, +32767].

As you would have seen, this approach will not permit you to address the numbers like – 27.15625 (numbers after the decimal point are simply being disregarded).

However, we’re not the initial ones who have seen this issue. Around ≈36 years ago a few brilliant people conquered this limit by presenting the IEEE 754 norm for floating-point arithmetic.

The IEEE 754 standard portrays the way (the framework) of utilizing those 16 bits (or 32, or 64 bits) to store the numbers of wider range, including the small floating numbers (smaller than 1 and closer to 0).

To get the thought behind the standard we could review the logical documentation – an approach to communicating numbers that are excessively huge or excessively little (for the most part would bring about a long string of digits) to be helpfully written in decimal structure.

As you might see from the picture, the number portrayal may be parted into three sections:

sign
division (otherwise known as significant) – the important digits (the significance, the payload) of the number
example – controls how far and in which direction to move the decimal point in the fraction
The base part we might preclude simply by settling on what it will be equivalent to. For our situation, we’ll involve 2 as a base.

Rather than utilizing every one of the 16 bits (or 32 bits, or 64 bits) to store the fraction of the number, we might share the bits and store a sign, type, and portion simultaneously. Contingent upon the numbers of bits that we will use to store the number we end up with the accompanying parts:

Floating-point formatTotal bitsSign bitsExponent bitsFraction bitsBase
Half-precision1615102
Single-precision3218232
Double-precision64111522

With this approach, the number of bits for the fraction has been reduced (i.e. for the 16-bits number it was reduced from 16 bits to 10 bits). It means that the fraction might take a narrower range of values now (losing some precision). However, since we also have an exponent part, it will actually increase the ultimate number range and also allow us to describe the numbers between 0 and 1 (if the exponent is negative).

For example, a signed 32-bit integer variable has a maximum value of 2³¹ − 1 = 2,147,483,647, whereas an IEEE 754 32-bit base-2 floating-point variable has a maximum value of ≈ 3.4028235 × 10³⁸.

To make it possible to have a negative exponent, the IEEE 754 standard uses the biased exponent. The idea is simple – subtract the bias from the exponent value to make it negative. For example, if the exponent has 5 bits, it might take the values from the range of [0, 31] (all values are positive here). But if we subtract the value of 15 from it, the range will be [-15, 16]. The number 15 is called bias, and it is being calculated by the following formula:

exponent_bias = 2 ^ (k−1) − 1

k - number of exponent bits

I’ve tried to describe the logic behind the converting of floating-point numbers from a binary format back to the decimal format on the image below. Hopefully, it will give you a better understanding of how the IEEE 754 standard works. The 16-bits number is being used here for simplicity, but the same approach works for 32-bits and 64-bits numbers as well.

Checkout the interactive version of this diagram to play around with setting bits on and off, and seeing how it would influence the final result

Here is the number ranges that different floating-point formats support:

Floating-point formatExp minExp maxRangeMin positive
Half-precision−14+15±65,5046.10 × 10⁻⁵
Single-precision−126+127±3.4028235 × 10³⁸1.18 × 10⁻³⁸

Be aware that this is by no means a complete and sufficient overview of the IEEE 754 standard. It is rather a simplified and basic overview. Several corner cases were omitted in the examples above for simplicity of presentation (i.e. -0-∞+∞ and NaN (not a number) values)

Code examples

In the javascript-algorithms repository, I’ve added a source code of binary-to-decimal converters that were used in the interactive example above.

Below you may find an example of how to get the binary representation of the floating-point numbers in JavaScript. JavaScript is a pretty high-level language, and the example might be too verbose and not as straightforward as in lower-level languages, but still it is something you may experiment with directly in the browser:

See the Pen bitsToFloat.js by mzekiosmancik (@mzekiosmancik) on CodePen.

References

You might also want to check out the following resources to get a deeper understanding of the binary representation of floating-point numbers:

Javascript Algoritmaları – Bubble Sort 230 300 mezo

Javascript Algoritmaları – Bubble Sort

Bubble Sort okullarda öğretilen ilk algoritmadır diyebiliriz. Bu algoritma verim olarak en verimsiz sıralama algoritmasıdır ancak yapısal olarak anlaşılması en kolayıdır. Buradaki temel fikir sıralanacak dizi içindeki elemanların karşılaştırılmasıdır. Her seferinde 2 eleman karşılaştırılır ve sonrasında yerleri değişmeden önce doğru sıradalarmı diye emin olur. Basit olarak : 
*Ilk eleman ile ikinciyi karşılaştırır
*Eğer ilk eleman ikinci elemandan sonra gelmeliyse yerlerini değiştirir
*Sonra üçüncü eleman ile ikiyi karşılaştırır 
*Eğer  ikinci eleman , üçüncü elemandan sonra gelecekse yerlerini değiştirir ve bu işlem dizinin son elemanına kadar devam eder. 
Aşağıdaki resim anlattığım şu mantığı anlamanıza yardımcı olacaktır. 

Flowchart:

Örnek Kod:

See the Pen Bubble Sort by mzekiosmancik (@mzekiosmancik) on CodePen.

Javascript Algoritmaları – Binary Search 386 878 mezo

Javascript Algoritmaları – Binary Search

Binary search sıralı bir dizi içinde aradığımız değeri bulabilmek için çok verimli bir algoritmadır.  Verilen sıralı diziyi tekrar tekrar 2 ye bölerek aramaya devam eder sonunda aradığı değerin index numarasını bulana kadar. Binary search kullanımı için bir örnek verecek olursak , diyelim ki Google Maps ile çalışıyorsunuz ve kullanıcıdan aldığınız bir mekan ismini DB den gelen sıralı listenizden bulup o mekanın koordinatlarını alıp haritada gostermek istiyorsunuz bunun için en verimli arama algoritması Binary Search olacaktır. Nedenini açıklayacak olursak linear arama da algoritma tüm listeyi bastan sona gezer ve bulmaya çalışırdı bu da binlerce mekan bilgisi içinden bir isim bulabilmek için tek tek bastan sona hepsini incelemesi gerektiği anlamına geliyor hem uzun hemde yorucu bir işlem ancak binary search ile bu binlerce mekanı tek tek kontrol etmek zorunda değiliz.

İnsanlara bir algoritmayı anlatırken bazı küçük detayları söylemeye gerek yoktur örneğin bir kek yapılmasını istediğimizde buzdolabını nasıl açması gerektiğini yada yumurtaları dolaptan çıkarıp nasıl kırmaları gerektiğini söylememize gerek kalmaz insan bu gibi küçük detayları kendisi tamamlayarak kek yapma işlemini tamamlayabilirler ancak bilgisayarda bu gibi küçük detaylar  bilgisayar tarafından tamamlanamaz tüm detayların bilgisayara tanımlanması gerekir.

Programlama boyutunda algoritmaları uygulayabilmek için algoritmanın tüm detaylarını bilmek gerekiyor. Problem için girdiler nedir ? Çıktısı nedir ? Hangi değişkenler tanımlanmalı ? Bu değişkenler ne türde olmalı? Bir döngü olmalı mı ne gibi koşullarda olmalı gibi detaylar.

Hadi bu kadar boş yaptıktan sonra şu binary search e dikkatlide göz atalım. Buradaki ana fikir belirttiğimiz sayıyı bulabilmek için belirli aralıkları takip etmek. Diyelim ki bir tahmin oyunu oynuyoruz ve bu tahmin oyununda aklımızdan 1 ile 100 arasında bir sayı tutuyoruz. Ardından siz de bana tahminimizi söylüyorsunuz ve 25 diyorsunuz ve ben size Yukarı diyorum. Ardından siz 81 diyorsunuz bende size Aşağı diyorum. Şimdi biliyorsunuz ki sayı artık kırmızı ile işaretlediğimiz 26 ile 80 aralığında yani 25 ten küçük ve 81 den büyük sayıların hepsini elemiş olduk.

Her seferinde tahmininiz eğer doğru değilse kalan aralıktaki sayıları belli tahmin edilebilir bir aralığa bölerek devam ediyor. Üçüncü tahmininde53 diyorsunuz ve bende Aşağı diyorum yine ne yapmış olduk 26-80 aralığındaki sayıyı tekrar bölmüş olduk 

Doğru sayıyı bulana kadar böyle sürüp giden ama sonunda sayıyı bulduğumuz bir oyun gibi çalışır Binary Search.

İşlem sırası yazacak olursak

1-Min = 1 ve Max = n

2-Max ve Min sayı aralığında bir integer bir değer tut

3-Eğer sayıyı bulduysan çık. Doğru tahmin

4-Eğer tutulan sayıdan düşük ise Min değişkenine tahmin edilen sayıya 1 ekleyip atama işlemini gerçekleştir.

5-Eğer tahmin edilen sayı tutulandan büyük ise o zaman Max değerini tahmin edilenden 1 çıkarıp atama işlemini gerçekleştir.

6-2 numaralı işleme geri dön.

See the Pen Binary Search by mzekiosmancik (@mzekiosmancik) on CodePen.

Javascript Algoritmaları – Merge Sort 625 598 mezo

Javascript Algoritmaları – Merge Sort

Bır baska sıralama tekniği ile birlikteyiz inkilizcesi Merge Sort türkçesi birleştirme kaynaştırma sıralaması olan bu algoritma 2 diziyi alıp küçükten büyüğe sıralamak üzerine kurulmuştur.

Aşağıdaki animasyondan da anlayacağınız üzere 2 dizi alınıyor daha sonra bunları n kadar alt dizilere bölerek bu alt listeleri karşılaştırılarak results dizisine ekleme yaparak sıralıyor.
Animasyon :

Flowchart :

Örnek Kod :

See the Pen Merge Sort by mzekiosmancik (@mzekiosmancik) on CodePen.

Javascript Algoritmalari – Quick Sort 453 593 mezo

Javascript Algoritmalari – Quick Sort

Merhaba arkadaşlar bazı aldığım notları sizlerle paylasmak istiyorum bunlar javascript  ile temel algoritma soruları ve yöntemleri olarak nitelendireceğimiz küçük yazılar olacak.
Hızlı sıralama
Hızlı sıralama bir dizi içindeki elemanları herhangi bir ilişki kuralı koymadan dümdüz küçükten büyüğe sıralamamıza yarayan bir algoritma hadi bakalım nasıl bir şeymiş…

Bu sıralama önce diziden bir ilk elemanı pivot olarak belirler ve onun etrafında sıralama yapmaya başlar. Küçükse left dizisine büyükse right dizisine. Yani pivot eleman her zaman ortada kalıcak şekilde ,ondan büyük ve kücükleri sıralar. Dikkat edecek olursanız fonksiyonun sonunda sıralanmış olan diziyi döndürürken left ve right dizileri içinde aynı metodu cağırarak yani onları da bir daha sıralamaya koyarak geri döndürüyoruz.
Sıralama Animasyonu :
Sorting quicksort animation

FlowChart :

Örnek Kod :

See the Pen Quick Sort by mzekiosmancik (@mzekiosmancik) on CodePen.

C# – DataTable İçindeki Verilerin Sıralarını Ters Çevirmek 150 150 mezo

C# – DataTable İçindeki Verilerin Sıralarını Ters Çevirmek

Merhaba arkadaşlar
Her yazılımcının korkulu rüyası olan test uzmanı arkadaşlarımdan biri olan Bill bir hata kaydı açmış ve demiş ki şu şu sayfada ki listelenen verilerin sıralamaları yanlış ters olması lazım demiş. Bende ufak bir araştırma sonucu bir metod oluşturarak bu problemi çözdüm ve pratik bir bilgi olması açısından sizlerle paylaşmak istedim.
İşte o kodlar 🙂

[codebox 1]

Bilgiyle Kalın
M.Zeki OSMANCIK

AngularJS – Services 333 302 mezo

AngularJS – Services

Merhaba arkadaşlar
AngularJS de servisler hem kodların kolay okunması hemde test edilmesini kolaylaştıran javascrıpt dosyalarıdır. Servisler genelde kod içersinde kullanacığımız bazı methodlar için yazabiliriz. Örneğin bir hesaplama yapması gereken bir methodu servis olarak oluşturup Controller üzerinde birden fazla yerde kolayca kullanıkmasını mümkün kılabiliriz. AngularJS servis ve factory yi kullanarak Separation of Concerns konseptini desteklemektedir.
Peki Separation Concerns nedir ? Bir yazılımı oluşturan kodların katmanlara ayrılmasıdır. Web sitemizin veritabanından bir veri alıp bize sunması için gerekli olan her bir işlemi ayrı ayrı konumlandırmak da diyebiliriz ; veri tabanına bağlanan kod ayrı , onu alıp işleyen kod ayrı , son olarak web sayfası üzerinde gösteren kod ayrı yerlerde katmanlar halinde yazılır ki bu katmanları okuması hata tespiti yada test kodlarımızın çalışması kolaylaşsın. Bu konsepte en uygun örnek MVC Design Pattern dir.
Konumuza geri dönecek olursak AngularJS ile oluşturulan bir projede servis iç işlevlerin birden fazla controller üzerinden çağırılabilmesi için oluşturacağımız klasik javascript metotlarıdır.
Hemen kısa bir örnekle merakımızı dindirip. Örneği inceledikten sonra hemen Factory yazısınıda okursanız sizlere çok katkısı olacağını umuyorum.

Umarım Yararlı Olur.
Bilgiyle Kalın.
M.Zeki OSMANCIK

Raspberry Pi 3 Nedir ? 1024 647 mezo

Raspberry Pi 3 Nedir ?

Merhaba arkadaşlar

pi_3Raspberry Pi ARM işlemcili kredi tartı büyüklüğünde bir bilgisayar olarak karşımıza 4 sene once çıkmıştı. Önceki sürümlerinde bluetooth ve wireless bağlantılar için USB donglelar kullanmak zorunda kalsakda 4. senesinde çıkardıkları Raspberry Pi 3’de bu özellikleride kart üzerine entegre ederek bizlere daha fazla USB portu bırakmış 🙂
RaspberryPı bir düşük özellikli bir masaüstü bilgisayardır yani klavye mouse ve ekranınızı bağlayarak temel sözcük işleme işlemleri HD videolar düşük özellik gerektilren oyunlar oynanabilir. Aynı zamanda GPIO pinleri sayesinde kapsamli bir kontrol kapasitesine sahip oluyorsunuz.

GPIO ile kucuk motorlar ledler kameralar çeşitli sensörler vb bir çok cevre birimini kullanabilir kontrol edebilirsiniz. Yapılabilecekler hayal gücünüzle sınırlı 🙂

 

Peki Yeni Raspberry Pi 3 uzerinde neler var ?

Asagidaki resimde de gorebileceginiz uzere

4 Port USB 2 , Ethernet LAN girişi , ses cıkışı (HDMI üzerinden de ses alabilirsiniz ) , CSI Kamera portu , HDMI Portu , Harddisk gibi kullandığımız Micro SD kart girişi , daha önce daha az sayıda olan suan sayısı 40 Pine çıkarılmış GPIO paneli , entegre Bluetooth ve Wireless LAN , 1 GB Ram , 1.2 GHz işlemci mevcut.  Ilk bilgisayarimi hatırlıyorumda Raspberry ondan çok çok çok daha hızlı 😀

Pi3+Breakout+Feb+29+2016

 

İlk etapta aklınıza sadece basit bir bilgisayar resmi canlandırdığı icin kapasitesini bilemeyebilip “Peki bu cihazla ne yapabiliriz?” diyebilirsiniz bu sorunuzun cevabi icinde sürekli takip ettiğim bir Youtube kanalı olan Geek Life in tatlı hatunu Luria Petrucci ‘nin en Cool 10 projeyi tanıttığı videoyuda paylaşıyorum.

Umarım yararlı olur.

Bilgiyle Kalın.

M.Zeki OSMANCIK

AngularJS – Dinamik Değişken 980 400 mezo

AngularJS – Dinamik Değişken

Merhaba arkadaşlar
Bildiğiniz gibi AngularJS de html ile js dosyası arasındaki bağı scope ile sağlıyorduk. Yani controller üzerinde tanımladığımız bır scope nesnesini html üzerinde {{}} veya ng-bind ile çağırabiliyoruz. Bahsettiğimiz değişkenler sabit tanımlanıp görüntülenenler. Bir de JS tarafında tanımlayabildiğimiz değişkenler var ki bu yazımızın konusuda budur zaten 🙂

Hemen HTML kodlarımızı yerlestirelim
[codebox 1]

ve Controller kodlarımız
[codebox 2]

Burada tanımladığımız $scope.dynamicVariable = {}; objemiz içersine istenilen miktarda değişken tanımlanabilir ve HTML tarafından da {{dynamicVariable[company.CompanyID]}} şeklinde kullanabiliyoruz.

ve AngularJS ile dinamik değişkenimiz hayırlı olsun 🙂 Bu da ornegimiz.

Umarım Yararlı Olur
Bilgiyle Kalın
M.Zeki OSMANCIK

AngularJS – Basit Search Filter 1024 789 mezo

AngularJS – Basit Search Filter

Merhaba arkadaşlar
Bu kez de AngularJS ile çooooooook ama çok basit şekilde listelediğimiz nesneler üzerinde bir Text input ile nasıl arama yapabiliriz sorusunun cevabını 2 satırda bir fiddle’da paylaşmak istiyorum.

Bu datayı AngularJS ile Controller içersinde oluşturalım ve bir $scope değiskeni içersine şu şekli tanımlamamız gerekiyor .
[codebox 2]

ve her zaman olduğu gibi HTML kodlarımızı bir oluşturalım ve listeme işlemini gerçekleştirelim.
[codebox 1]

Bu asamadan sonra JSON nesnemizin içersindeki elemanların ekranımıza listelendiğini görebileceksiniz.

İş arama kısmına geldiğinde ise HTML de de şu şekli bir değişiklik yapmamız gerekmekte.

[codebox 3]

Burada kullandığımız FILTER bizim listelediğimiz JSON nesnesi ya da array içersinde input üzerine tanımladığımız ng-model yardımı ile filtreleme yapıp $scope.companyList adında ki objeye atama yapar böylelikle siz de listeye abc yazdığınızda listedeki abc yi bularak $scope.companyList nesnesine atamasını yaparak bizlere gösterir 🙂

Benim yorumlamam bu kadar 🙂
Iste bu kadar basıt 🙂
Örnek kodu Fiddle’dan inceleyebilirsiniz.

Umarım Yararlı Olur
Bilgiyle Kalın.
M.Zeki OSMANCIK

Unity – Kurulum ve IDE 1024 457 mezo

Unity – Kurulum ve IDE

Merhaba arkadaşlar

Unity ile oyun yazmaya merak sardım bu aralar hobi olsun diye işin ustası Tolga Kaçar ve biz öğrencileri Ahmet Kayar ve ben birlikte öğle aralarımızı Unity öğrenerek değerlendirmeye başladık. 🙂  İlk iş olarak nasıl kurulum yaparsınız diye anlatmak istedim hemen arkasından da IDE üzerindeki pencerelerden bahsedeceğim.

Unity ‘de “merhaba dünya” falan yapmayacagim bu yazımda sadece Unity nedir ,ne yapar, nerden kuracagiz actigimizda gelen ekranlar nedir kisaca ve basitce bunlardan bahsedecegim oncelikle Unity biz developerlara sunulmus 3d veya 2d oyun programlama sağlayan çok eyi ,çok da güzel eyi bir IDE. 🙂 Oyun programlama ile ilgili hiç bir fikriniz yoksa şu soru kafalarda belirebilir ben 3 boyutlu çizim bilmiyorum nasil olacak ? Dert etmeyin hazır, beleş veya ücretli yada ücretli ama beleş assetler yani 3 boyutlu yada 2 boyutlu cizimler nesneler internette mevcut 😉 Çizim olayini hallettik peki ya kod olayi derseniz onuda C# ile hallediyoruz 🙂
Evet cok geyik yapmadan kuruluma gecelim artik 😉 Ilk olarak unity3d  sitesine giriyoruz ve GET UNITY butonuna tıklayarak installer dosyasını PC ye indiriyoruz ve kuruluma geçiyoruz 🙂

Unity-setup1

Download bittiyse sıra ile kurulum islerine gecebiiriz. Kurulumda dikkat edilecek isaretlenecek onemli bir configurasyon yok o yuzden resimleri arka arkaya koyuyorum

Unity-setup2

Unity-setup3

Unity-setup4

Unity-setup5

Unity-setup6

Kurulumu yaptik programimizi actik heyecanliyiz 😉 gelelim Unity yi açıp ilk etapda cikan ekranda neler var gordugumuz seyler neler onlara bakalım:

Unity-setup7

Unity-setup9

unity5

 

Hieracrhy : Bu listede oyun nesnelerimiz yer alir karakter yerler gokler gorup gorebilecegimiz hersey burada yer alir ilk etapda zaten bir kamera nesnesinin eklenmiz oldugunu gorebiliyoruz.

Inspector : adiindanda anlasilacagi gibi oyun nesnelerimizin pzelliklerini gorebildigimiz ve editleyebilgimiz penceredir kendisi 😉 u ity i actiginizda sol tarafta hicbirsey gorunmuyorsa kamera nesnesine tikladigimizda bu kameranin ozelliklerini gorebiliriz.

Scene : orta kisimda bulunan bu yer bizim sahnemiz oyunumuzu bu sahne uzerinde goruntuleyip nesneleri burada yerlestiriyor olacagiz. Ilk bakildiginda kamerani. Sahne uzerine yerlesmis oldugunu gorebiliriz

Asagidaki pencere . Bu pencerede projemiz icersinde bulunan resimler spritelar materialler , script dosyalari kisaca proje icerigi yer alir.

Evet bu yazida bu kadar unity i kurduk ve pencereleri tanidk bir sonraki yazida 2 boyutlu bir oyuna baslayacagiz birlikte tabi cok hizli ilerlemeden 🙂 tek makalede bi mario beklemeyin 😉 ayrica projemizide yine size duyuruyor olacagiz 😉

Şimdilik bu kadar 🙂

Umarım Yararlı Olur

Bilgiyle Kalın

M.Zeki Osmancık

Windows 10 Klavye Kısayolları 1024 576 mezo

Windows 10 Klavye Kısayolları

Merhaba arkadaşlar

Untitled

Windows 10 Pro Technical Preview son halini aldı artık dün akşam gelen sağlam bir update ile sürekli şekil değiştiren Windows 10 stabil halini aldı artık diye umuyoruz 🙂 Herneyse ben kısayollardan bahsetmek istiyorum hemen kısaca 🙂 Windows 10 da Linux ve MacOs ta bulunan multiDesktop özelliği falan gelmiş 🙂 Bunlar içinde kısayol tuşlarını sizlerle paylaşmak istedim 🙂

Pencereleri sağa sola yapıştırmak için  : Windows key + Sağ yada Sol Yukarı tuşu pencereyi full screen yapar Aşağı tuşuda full screnden normal pencere boyutu tekrar basarsanızda simge boyutunda küçültür.

Penceler arası geçiş için : Alt + Tab – Bu bildiğimiz Alt Tab

Task view: Windows + Tab – Bu tuşla hem pencereler arası geçiş hemde desktoplar arası geçiş yapmak için bir ekran açılıyor.

Yeni bir Desktop oluşturmak için  : Windows key + Ctrl + D

Açık olan Desktop u kapamak için : Windows key + Ctrl + F4

Bu Desktoplar arası geçiş yapabilmek için  : Windows key + Ctrl + Sağ yada Sol

 

Umarım yararlı olur

Bilgiyle Kalın

M.Zeki OSMANCIK

 

 

Whatsapp PC ye Geldi :) 880 695 mezo

Whatsapp PC ye Geldi :)

Merhaba arkadaşlar

Artık PC başındayken telefondan Whatsapp tan yazışma derdine son !!!!! WhatsApp web versiyonunu açıkladı kullanıma açtı bile 😀 Bende denedikten sonra hemen yazayım dedim 🙂  Kulanmak için ne yapmak gerek 🙂 Android işletim sistemli telefonunuzdan WhatsApp taki menüyü açıyorsunuz ve karşınıza bir WhatsApp Web seçeneği geliyor açtığınızda bir kamera çıkıyor kod mod bişi diyor ne olaki la bu derken hemen web.whatsapp.com adresine giriyorsunuz ve karşınıza sayfa çıkınca kafada şimşekler çakıyor 😀 neden kod istediğini anlıyoruz telefonumuzla kodu okutur okutmaz TA DAAAAAAAAA 😀 WhatsApp artık webde 😀 klavyeden yaz yazabildiğin kadar 😀

10947710_10153678930762366_181967451_n,whatsappweb

Web WhatsApp üzerinden resim çekebiliyor yada mevcut resimleri gönderebiliyorsunuz ve ses kaydı yollayabiliyorsunuz 😉

Biz resim yollamanın denemesini yaptık bile işte oda aşağıda gözlerimizden ne kadar sevindiğimiz belli oluyordur heralde 😛 😀

Untitled picture

Haydi Hepimize Hayırlı Olsun 😀

 

Bilgiyle Kalın

M.Zeki Osmancık

Proje Geliştirme Süreçleri – V Model 1024 704 mezo

Proje Geliştirme Süreçleri – V Model

Merhaba arkadaşlar

Yeni bir gün yeni bir Proje Geliştirme Süreci olan V Model ile karşınızdayım 🙂

Daha önce ki yazılarda Waterfall ve Agile yöntemlerinden bahsetmiştik. V model biraz Waterfall metoduna benzer. Yani Waterfallda olduğu gibi tüm analiz ve dökümantasyonun en başta yapılması ve bitirilmesi ihtiyaçların kesinleştirilmesi gerekiyor. Verification and Validation olarak bilinen ve V Model olarak kısaltılan bu metotda Waterfall dan farklı olarak analiz ve ihtiyaçlar kesinleştikten sonra yazılım geliştirmeye başlamadan önce bir test planı oluşturulmalıdır. Bu modelin yazılım ve test döngüleri çizildiğinde V harfi ortaya çıkar 😀  Walla çıkar 😀 aşağıdaki resmi inceleyebiliriz 😀

V-Model

 

Resimde görüldüğü gibi V harfi çıkıyormuş 🙂 resim üzerinden bahsetmek gerekirse burada process sırası olarak sol taraftan sağ tarafa gidiliyor. Öncelikle Analizlerimiz çıkıyor sonra Fonksiyonel özellikler belirleniyor sonra Dizayn aşamasından geçiyor bu analizler ve Programcıların anlayabileceği şekle getiriliyor en ortada kocaman yazdığı gibi programı kodluyoruz sonra unit testi unutmuyoruz onlarsız olmaz 😀 unit testten sonra entegrasyon testi sonra sistem testi sonra kullanıcı kabulu ve kapanış 😀

Burada V harfininde bir özelliği var aslında şimdi her maddenin hemen karşılığında bir madde mevcut soldan sağa doğru giderken kodlama aşamasından sonra sağ tarafta bulunan aşamalardan birinde bir sakatlık bir eksik efendime söyleyeyim bir istek arzu gelirse bu hemen karşısındaki aşamaya atlar yine resimde görüldüğü gibi.

Yani User Acceptence aşamasına gelmiş bir yazılımda kullanıcı bu ürünü kabul etmezseeee 😀 en başa dönüyoruz 😀 tekrar analiz tekrar falan falan falan 😀 Sil baştan olmasada istenilen yeni özellik ile alakalı tüm processler için tekrar bir döngü tekrar bir iş tekrar bir çalışma gerekiyor 🙂

V model çokda zor değil değilmi 🙂 resim zaten açıklıyor…

Umarım yararlı olur

Bilgiyle Kalın

M.Zeki OSMANCIK

 

Kanban Ne Ola ki ? 508 212 mezo

Kanban Ne Ola ki ?

Merhaba arkadaşlar

Proje geliştirme süreçleri ve bu süreçlerde kullanılan metotlar vs ile ilgili küçük bilgiler vermeye tam gaz devam ediyorum 😀 Sırada Kanban var

Kanban, tam zamanında Üretim ortamında malzeme hareketlerinin kontrolü amacıyla kullanılan bir çizelgeleme yaklaşımıdır. Toyota’nın üretim verimliliğini artırmak amacıyla Taiichi Ohno tarafından geliştirilmiştir. Yöntem 1953’ten bu yana kullanılmaktadır. Aslında japoncada görsel işaret veya kart anlamına gelir. Üretimin tam zamanında gerçekleşmesi konusunda başarılı bir metotdur. Tüm olayları görselleştirir ve üretim sürecini büyük resimde görme imkanı sağlar.

Toyotada kullanılmaya başladığına göre küçük bir tahminle biraz hayalgücü ile bu sistemin aslında nasıl çalıştığını hayal etmek çok da zor değil. Bir üretim hattı mevcut ve bu üretim hattı üzerinde ürün bazı işlemlere tabi tutuluyor ve en son olarak bir ürün yani araba ortaya çıkıyor. Örneklemek gerekirse bir band üzerinde önce arabanın iskeletine parçalar sıra ile takılıyor kapılar , çeşitli aksamlar , motoru ,camları, iç aksesuarları gibi bu sıra ile giden işlemlerde bir aksilik olmaması önemli bunun içinde süre ve malzeme kontrolü önemli 😉 Kanban tüm bu işlemleri görselleştirip takibi kolaylaştırıyor 😉

Sen ne anlatıyorsun değişik 😀 Toyota kullanıyorda bizdemi araba üreteceğiz ?  diyebilirsiniz 😀 demeyin çünkü Kanban olayının yazılımada uyarlanması çok da zor değil. Adamlar yapmış 2004 yılında bu Kanban felsefesini yani görselleştirme işini yazılımada uyarlayıp bir metodoloji haline getirmişler.

Özet olarak bahsetmek gerekirse Kanban metodu mevcut sürecinizde hemen bir değişikliğe gitmenizi zorunlu kılmaması önemli avantajlarından bir tanesi. Zamanla yazılımın veya sürecin evrimleşeceğini öngörür.

Yani Kanban Yazılım Geliştirme Süreci veya Proje Yönetimi diye bir şey yoktur. Kanban bir süreç değildir, sürekli akışı teşvik eden, hafif siklet bir metodtur.

Kanban, temelde 4 temel prensibi kullanır:

  • Ne biliyorsan onunla başla,
  • Artırımsal ve evrimsel değişimi takip etmeyi kabul et,
  • Mevcut sürece, rollere, sorumluluklara ve ünvanlara saygı göster.
  • Tüm seviyelerde liderliği teşvik et

Bu prensipler akabinde Kanban’ın 5 ana özelliğide şöyle özetlenebilir :

  • İş akışını görselleştirir
  • Aynı anda yapılan işleri sınırlandırır
  • Akışı yönetmeyi ve ölçmeyi kolaylaştırır
  • Süreç ilkelerini belirgin kılar
  • İşbirliği yaparak iyileştirmeyi sağlar

Bu süreçte belli adımlarda yapılan iş diğer adımlarda yapılan işlerden daha çabuk sonuçlanabilir. Bir adımın çıktısı diğer bir adımın girdisidir. Zamanında tüketilemeyen görevler o adımda bir birikime neden olacaktır. Kanbanda her bir adımda eş zamanlı yapılacak işlerin sayısına bir sınır getirilmesi sürecin darboğazlarının azalmasına imkan tanır. Bir üretkenlik yaratılıp arkadan gelmekte olan işler için bir yer açar. Sınırlama getirilmemesi durumunda bir sürecin belli bir adımında çok iş yapılıyor olmasına rağmen biten bir iş olmayacaktır. Sonuç olarak takım ne kadar çok çalışırsa çalışsın o zamana kadar bir değer üretememiş olacaktır.

Örnek olarak bir Web sayfası yapıyorsanız bu aşamada tasarım için 1 kişi , programlama için 2 kişi olduğunu varsayarsak kodlamada gerçekleşecek bir gecikme tasarımdan çıkan işler bitip ,development aşamasına gelen işleri çoğaltacak ve bu aşamada developer arkadaşlar zorlanacak belki de yeni bir developer ihtiyacı doğacak . Ama bu işler sınırlandırılırsa bu dar boğaz yada işlerin belli aşamalarda artması durumu desek daha doğru olur biraz daha aza indirgenmiş olur. Ayrıca Kanban ile büyük resim görüldüğünden , resimde bu problemin yöneticiler tarafından görüntülenmesi  çalışanlar açısından da önemli ve rahatlatıcı bir özellik.

Kanban’da görselleştirme Değer Akış diyagramları ile ve kanban tahtası ile sağlanabilir. Değer akış diyagramları mevcut durumun, gelecekteki sistemin anlaşılması ve israfın önlenmesi için kullanılır.
Kanban Tahtası ahanda aşağıdaki gibi birşeydir.

kanban-movement

Resimde görüldüğü gibi işler belli başlıklarla ayrılır her iş bittiğinde bir sonraki aşamaya geçer ve bitirilirler.

Kanban ile kendi kişisel işlerinizi bile takip etmek kolay 😉 bunun için internet ortamında kullanılan bazı uygulamalarda mevcut. 😉

Umarım Yararlı Olur

Bilgiyle Kalın

M. Zeki OSMANCIK

C# ile Powerpoint Sunumu Hazırlamak 554 382 mezo

C# ile Powerpoint Sunumu Hazırlamak

Merhaba arkadaşlar
Uzun süreden beri bir makale yazmaya vakit bulamıyorum ama yavaş yavaş geri dönüyorum. Bu yazıda sizlere zevkli küçük bir örnek göstermek istiyorum. 😀 C# üzerinden program yardımı ile PowerPoint sunumu hazırlamanın nasıl olduğu ile ilgili başlangıçta çok işinize yarayacak bir kod parçası
Bunun için öncelikle bir windows Forms projesi açalım ve 1 tane Buton ekleyelim 🙂 Projemiz içersine Referans olarak 2 önemli kütüphane eklememiz gerekiyor. Sağa tıklayıp “Add Reference” dedikten sonra “COM” sekmesi içersinde bulunan microsoft graph 15.0 object library ve microsoft PowerPoint 15.0 object library kütüphanelerini seçip ekleyelim.
Artık gerisi çok kolay 🙂 işte bundan sonra işi yapacak olan kod parçası

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Office.Interop.PowerPoint;
using Microsoft.Office.Core;

namespace testToCreatePttFileFromImages
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
string pictureFileName = “C:\\picToVideo\\2.jpg”;

Microsoft.Office.Interop.PowerPoint.Application pptApplication = new Microsoft.Office.Interop.PowerPoint.Application();

Microsoft.Office.Interop.PowerPoint.Slides slides;
Microsoft.Office.Interop.PowerPoint._Slide slide;
Microsoft.Office.Interop.PowerPoint.TextRange objText;

// Create the Presentation File
Presentation pptPresentation = pptApplication.Presentations.Add(MsoTriState.msoTrue);

Microsoft.Office.Interop.PowerPoint.CustomLayout customLayout = pptPresentation.SlideMaster.CustomLayouts[Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutText];

// Create new Slide
slides = pptPresentation.Slides;
slide = slides.AddSlide(1, customLayout);

// Add title
objText = slide.Shapes[1].TextFrame.TextRange;
objText.Text = “The Header Of The Presentation”;
objText.Font.Name = “Arial”;
objText.Font.Size = 32;

//objText = slide.Shapes[2].TextFrame.TextRange;
//objText.Text = “this text come after the heading with bullet”;

Microsoft.Office.Interop.PowerPoint.Shape shape = slide.Shapes[2];
slide.Shapes.AddPicture(pictureFileName, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue, shape.Left, shape.Top, shape.Width, shape.Height);

//slide.NotesPage.Shapes[2].TextFrame.TextRange.Text = “the text is for the notes to specific page”;

pptPresentation.SaveAs(@”c:\picToVideo\fppt.pptx”, Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsDefault, MsoTriState.msoTrue);
pptPresentation.Close();
pptApplication.Quit();

}
}
}

Java – AES Algoritması ile Encryption ve Decryption 691 618 mezo

Java – AES Algoritması ile Encryption ve Decryption

Merhaba arkadaşlar

Bu yazımda sizlere AES algoritması kullarak nasıl Encryption işlemi yapabilirsiniz en basit haliyle anlatmak istiyorum. Eclipse i açtık yeni bir Java projesi olusturduk sonrasında 2 adet class’ı projemiz içersine ekledik isimleri TEST.java  ve ENCRYPT.java.

Amaç aslında Encrypt.java class ını başka projelerde de kullanılacak şekilde dizayn etmek 😉

Encrypt class ı içersine aşağıdaki kodları ekleyeceksiniz. 🙂

import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.*;
public class encrypt {

	private static final String ALGO = "AES";
	private static final byte[] keyValue =  new byte[] 
        { 'M', 'e', 'Z', 'O', 'b', 'l', 'o','g', 's', 'B', 'e','s', 't', 'K', 'e', 'y' };

	public static String encrypt(String Data) throws Exception {
		Key key = generateKey();
		Cipher c = Cipher.getInstance(ALGO);
		c.init(Cipher.ENCRYPT_MODE, key);
		byte[] encVal = c.doFinal(Data.getBytes());
		String encryptedValue = new BASE64Encoder().encode(encVal);
		return encryptedValue;
	}
	public static String decrypt(String encryptedData) throws Exception {
		Key key = generateKey();
		Cipher c = Cipher.getInstance(ALGO);
		c.init(Cipher.DECRYPT_MODE, key);
		byte[] decordedValue = new BASE64Decoder().decodeBuffer(encryptedData);
		byte[] decValue = c.doFinal(decordedValue);
		String decryptedValue = new String(decValue);
		return decryptedValue;
	}
	private static Key generateKey() throws Exception {
		Key key = new SecretKeySpec(keyValue, ALGO);
		return key;
	}
}

Ardından test.java yani çalıştırılacak olan class ımız içersinde main metodu bulunduran class içersinede aşağıdaki kodları ekliyorsunuz. Encrypt classı içersinde oluşturduğumuz metotları çağırıyoruz.

public class test {
	public static void main(String[] args) {
		String password = "Hello Word İt's MEZO Blog";
		String passwordEnc;
		String passwordDec;
		try {
			passwordEnc = encrypt.encrypt(password);
			passwordDec = encrypt.decrypt(encrypt.encrypt(password));

			System.out.println("Plain Text : " + password);
			System.out.println("Encrypted Text : " + passwordEnc);
			System.out.println("Decrypted Text : " + passwordDec);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Ve işlemimiz bitti işte bu kadardı 🙂  artık Run As Java Application diyerek çalıştırıyor aşağıdaki çıktımızı alıyoruz.

 

Programımızın Çıktısı
Encrypt edilecek Text : Hello World It’s MEZO Blog
Encrypt edilmiş Text : 2loMo4Zhrtsbqg/4NOk1MpYp1uVbXkDwUNZKnons30o=
Decrypt edilmiş Text : Hello World It’s MEZO Blog

 

Umarım Yararlı Olmuştur

Bilgiyle Kalın

M.Zeki OSMANCIK

İlk Bilgisayar… 436 308 mezo

İlk Bilgisayar…

 

Merhaba arkadaşlar

Internette dolanırken ilk bilgisayar resimleri denk geldi sizlerlede paylaşmak istedim 🙂  😛 ortalama 120 m2 bir alan içersinde aşağıdaki ablaların kabloları soketlere sokup çıkarmasıyla işlem yapıyormuş.:D hatta bu DEBUG olayıda bu bilgisayarın soketlerinden birinin içersindeki bir böceğin bulunması ile çözülen sorun ardından çıkmış… 😀

ilk-bilgisayarlari-gorunce-sasiracaksiniz_bda2

 

ilk-bilgisayarlari-gorunce-sasiracaksiniz_f412

ilk-bilgisayarlari-gorunce-sasiracaksiniz_1b3f

ilk-bilgisayarlari-gorunce-sasiracaksiniz_3291

ilk-bilgisayarlari-gorunce-sasiracaksiniz_4109

ilk-bilgisayarlari-gorunce-sasiracaksiniz_3268

 

JSP MasterPage Sayfası Nasıl Yapılır? 299 299 mezo

JSP MasterPage Sayfası Nasıl Yapılır?

Merhaba arkadaşlar

JSP ile uğraşmaya devam ederken ASP.Net in kıymetini biraz daha iyi anlamaya başlıyorum ve sizlerede anlatmaya devam ediyorum.

Başlıktanda anlaşılacağı gibi JSP web sayfalarında ASP.Net de bulunan masterpage gibi bir şablon oluşturup o şablon üzerinde nasıl işlem yaparız biraz bahsedelim 🙂

Arkadaşlar JSP sayfalarına ekleyebileceğiniz bir Masterpage yapısı YOK !!! Maalesef ki yok…

Peki napıyoruz o kadar başlık açtık bari bir yol yordam gösterelim değilmi 😛  Diyelim ki aşağıdaki giib bir yapımız var ve bunun bütün sayfalar için şablon olmasını istiyoruz.

layout

Hemen kendimize Header.jsp adında bir dosya oluşturup bu dosya içersine istediğiniz header da bulunması gereken kodları yerleştiriyorsunuz örneğin  aşağıdaki kodlar gibi 🙂
[codebox 1]
Sonra hemen devam ediyoruz Footer.jsp adında bir dosya daha ekleyip içersine istenilen HTML kodlarını yazıyorsunuz. Gerekiyorsa LeftMenu.jsp adında bir jsp dosyası daha ekleyip sonra index.jsp yani anasayfamıza geliyoruz şimdi bunları index.jsp içine tek tek ekleyip dosya üzerinden kullanılmasını sağlayacağız. PHP gibi yani. 🙂  Aşağıdaki gibi sayfaların içersine tek tek <jsp:include page=”header.jsp”/> tagını kullanarak istediğimiz alanların farklı sayfalar üzerinden tek bir sayfada gösterilmesi işlemini gerçekleştirebiliyoruz.

[codebox 2]

İşte böyle 🙂 Masterpage kadar güzel olmasada bu da bir yöntem 🙂

Umarım Yararlı Olur. 😀

Bilgiyle Kalın

M.Zeki Osmancık

 

Java JSP Projesi Oluşturmak 452 302 mezo

Java JSP Projesi Oluşturmak

Merhaba arkadaşlar

İşim gereği biraz Java ile uğraşmam gerektiğinden Java ile alakalı yazılarda paylaşmaya başlayacağım sizlerle. Bu yazıda sizlere JSP projesi nasıl oluşturulur çalıştırılır resimlerle anlatmak istiyorum.

Önce Eclipse lazım bize hemen Eclipse i indirebileceğimiz linke  gidiyoruz ve download ediyoruz 🙂

01

Zip dosyasının içindeki eclipse klasörünü çıkarın.

02

Exe sinden Eclipse i çalıştırın

04

Bir workspace belirleyin ki Eclipse projelerinizin hepsini oraya kaydetsin 😉

005

Eclipse açıldığına göre şimdi proje açıp işimize bakabiliriz 🙂  Şimdi File menüsünden “New” o sekmeden de “Other” seçeneğini seçiyoruz (yada Ctrl+N kısayoluda işimizi görür)

06

Yeni Proje penceresinde Dynamic Web Project  seçmemiz gerekiyor eğer bu projeyi göremiyorsanız kötü haber yanlış Eclipse versiyonunu indirmişsiniz demektir 🙂 hemen JAVA EE versiyonunu indirmeniz gerekiyor 🙂

07

İlk JSP projesi olduğu için Eclipse TomCat ile ilgili birşey kurmuyor yada oluşturmuyor o yüzden Target  RunTime boş geliyor. Aktif etmemiz gerekiyor. 😉

08

New Runtime butonuna tıkladığınızda dikkat etmemiz gereken küçük bir tik var. Create a new local server i işaretlemeyin 

09

Tomcat i indirip kurmuş olduğunuzu farzederek devam ediyorum 🙂 kurmadıysanız hemen kurun hemen 🙂

TomCat i nereye kurmuşsanız bir önceki pencereden seçtiğiniz versiyonun nerede kurulu olduğunu göstermeniz gerekiyor 😉

10

Bu işlemden sonra artık  New Dynamic Web Project kısmında görüntülenmeyen Target Runtime da TomCat bir seçenek olarak görüntülenecek.

11

Artık Finish butonu ile birlikte projemizi görüntüleyebiliriz 😉

12

 

Projemiz bomboş bizi karşılıyor ve bundan sonrasında sayfalarımızı eklememiz gerekiyor hemen WebContent  klasörü üzerine sağ tık New ile bir JSP dosyası eklememiz gerekiyor 🙂

13

14

 

Ana sayfa olmasını istiyoruz o halde index ismini kullanmalıyız 😉 Bu pencerede nereye ekleneceğini seçip ardından ismini belirledikten sonra Finish  butonuna basmıyorsunuz. Next ile devam ediyoruz.

15

New JSP File(html) seçiyoruz  ve Finish ile JSP dosyamızı oluşturmuş oluyoruz 😉  index.jsp vatana millete hayırlı olsun 😉

16

Sayfam açıldığına göre nasıl çalıştığı ile ilgili bir bilgi olacağından çok basit şekilde nasıl çalıştığını göstereyim.

17Tamamdır çok basit bir toplama işlemi ile nasıl kod yazacağımızı görmüş olduk 😀  Şimdi çalıştırma vakti geldi bakalım nasıl görünüyor 🙂

18

Çalıştır butonuna bastıktan sonra Run As penceresi üzerinden “Run on Server” seçilerek OK butonu ile devam ediyoruz.

19

Localde kendi makinamız üzerinde yeni bir TomCat server oluşturuyoruz.

20

Projemiz oluşturduğumuz TomCat server üzerinde build edilmeye başlayacak ve index.jsp dosyamız bilgisayarımızdaki Eclipse üzerinde görüntülenmeye başlayacak. Yazdığımız koda göre ekranda 4 görüyorsak dinamik bir web sayfasına ilk adımı attık demektir. 🙂

21

Şimdi browser üzerindede görüntüleyelim ve toplama işlemimizin sonucunu görelim 😉

22

Browserdaki kaynak kodlara bakarsak buradada sadece 4 olduğunu yazdığımız kodların görüntülenmediğini görüyoruz 😉

24

Son olarak server i durdurarak işlemimize son veriyoruz 🙂

25

Hayırlı ve uğurlu olsun ilk JSP uygulamamızı yapmış olduk 🙂

Umarım yararlı olur

Bilgiyle Kalın

M.Zeki Osmancık

 

 

Training – ASP.NET MVC 4 Application Development 376 292 mezo

Training – ASP.NET MVC 4 Application Development

Hello my fellow Padawans  

I found this complete set of ASP.Net MVC 4 training and i thought that it will be so useful for everyone. Its from pluralsight but you don’t need to login or sign up to web site. I watched all of it and I really like style of Scott Allen. Here’s the content of this training.

77-asp-net-mvc-4-codingcluster-745669
  • Introduction
  • Web Installer
  • The Tools
  • New Project
  • Modules, Views, Controller
  • Making Changes
  • Unit Testing
  • JavaScript and CSS
  • Summary

Click Here for watch Videos 

Stay with force

Mezo

Kolon Adını Tablolarda Aramak 150 150 mezo

Kolon Adını Tablolarda Aramak

Merhaba arkadaşlar
Uzun zamandır bir konu anlatmıyorum ancak hatalar ve düzeltilmeleri ile ilgili yazılar paylaşıyorum en kısa zamanda bir kaç güzel konu ile karşınızda olacağım 🙂
Sizlere bahsetmek istediğim kısa konum SQL de Kolon Adını Tablolarda Aramak: Diyelim ki database içersinde sadece kolon adını biliyorsunuz veya kolon adının içinden bir kelime hatırlıyorsunuz hangi tabloda merak ediyorsunuz işte size güzel bir sorgu 🙂 Bu sorgu ile kolon adına göre tablo araması yapabilirsiniz. İşte o sorgu 🙂

select TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME
from INFORMATION_SCHEMA.COLUMNS
where COLUMN_NAME like '%aranacak_kelime%'
and TABLE_CATALOG='Database_Adi'

Umarım yararlı olur
Bilgiyle Kalın
M.Zeki OSMANCIK

Cannot use the special principal ‘sa’. Microsoft SQL Server, Error: 15405 Hatası 622 197 mezo

Cannot use the special principal ‘sa’. Microsoft SQL Server, Error: 15405 Hatası

Merhaba gençler 🙂

Hemen size sıcak sıcak bilgi paylaşayım.

MS SQL server mı kullanıyorsunuz ?  Veritabanlarınızı başka bir yerden restore veya attach mi yaptınız ?  Login kullanıcı SA nin db yetkilerini vermek mi istiyorsunuz ama başaramıyormusunuz ? İşte doğru adrestesiniz 😀

Konumuz Cannot use the special principal ‘sa’. Microsoft SQL Server, Error: 15405 Hatası 🙂  5 dk önce beni deli eden ama çözümü basit bir problemden bahsedeceğim şimdi.

Veritabanlarını restore ettikten sonra SA kullanıcısına dbowner yetkisi vermek istediğimde karşıma böyle bir hata çıktı

Hatamızın görüntüsü şöyle güzel bir hata :

Untitled picture

Bu hatayı alıyorsanız hiç uğraşmayın arkadaşlar hemen New Query hangi DB ile işlem yapacaksanız seçin ve şu kodu çalıştırın olsun bitsin 🙂

 

exec sp_changedbowner 'sa','true'

 

Umarım Yararlı Olur

Bilgiyle Kalın 🙂

M.Zeki Osmancık

 

The type initializer Hatası… 611 193 mezo

The type initializer Hatası…

Merhaba arkadaşlar
Sql Server 2008 i kaldırıp tekrar kurmak zorunda kaldım. ancak bunu yaptığımda karşıma bir hata çıktı. Sizlerle paylaşmak istedim hata şöyle

vVkwW
Error >

TITLE: Microsoft SQL Server Management Studio
——————————

The type initializer for ‘Microsoft.SqlServer.Management.Dmf.PolicyStore’ threw an exception. (Microsoft.SqlServer.Dmf)

——————————
ADDITIONAL INFORMATION:

Could not load file or assembly ‘Microsoft.SqlServer.Diagnostics.STrace, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91′ or one of its dependencies. The system cannot find the file specified. (Microsoft.SqlServer.Dmf)

——————————
Internette araştırınca gerekli gereksiz herkes bir şeyler söylemiş yok onu yükle yok Visual Studio yu kaldır kur yok onu ekle kaldır gibi gibi. Bunlardan bazılarını deneyip vakit kaybettikten sonra bir şey denemek geldi içimden bir ses dediki REPAIR et yeğen dedi.
Çalıştırdım SQL Server Setup ı ve Repair ettim ve sorun çözüldü 🙂

Umarım faydalı olur
Bilgiyle Kalın
M.Zeki Osmancık

String Char Dizisidir! 920 300 mezo

String Char Dizisidir!

Merhaba arkadaşlar
Çalıştığım şirkette bulunmuş olduğum proje için Senior yani 2 3 yıl deneyimi olan developer arkadaşlar arıyoruz ve bunun ile ilgili müdürüm mülakat görüşmelerine benimde girmemi rica etti bende seve seve kabul ettim. Mülakatta gelen arkadaşlara neler yaptığını sorduğumuzda herkes güzel güzel anlatıyor yaptıklarını iş görüşmesinde göze girmek için hepimizin yaptığı gibi herşeyi anlatıyor anlatmaya gayret ediyor. Ancak

Dikkatimi çeken bir konu var ki işte oda bu yazıyı sizlerle paylaşmak isteyişimin asıl sebebi : Senior olarak alınacak ve daha önce bir çok projede görev almış olan arkadaşlar çok çok çok basit bir sorudan elendiklerinin veya olumsuz bir not aldıklarının farkında değiller. String bir değişken içindeki karakterlerin sayılması ve işlem yapılması ile ilgili bir sorumuz var ve burada herkese hiçbir string metot vs kullanmayın diye de uyarıyoruz tahmin ettiğiniz gibi basit küçük bir algoritma sorusu.
Ne var bunda diyebilirsiniz işte konu bu zaten 🙂 arkadaşların hiç biri string bir char dizisidir deyip bu şekilde foreach ile veya for ile kodunu kağıda dökmeye başlamadı. Herkes bir ipucu verilmesini bekliyor yada farklı yollarla bir array e çevirme işine giriyor.Halbuki ismini yazarken bile aslında bir karakter dizisi kullandığının farkında bile değil.
Küçük ayrıntılar veya bilgiler hayat kurtarır yada iyi yerlere getirebilir.

Unutmayın  String bir Char dizisidir.

Umarım Yararlı Olur ve bunu okuyan arkadaşlar mülakatlarda başvurdukları güzel iş yerlerine sevdikleri işleri yapmak üzere girebilirler.

Bilgiyle kalın

M.Zeki Osmancık

SOLID OOP Prensipleri 511 409 mezo

SOLID OOP Prensipleri

Merhaba arkadaşlar
Bu yazımda sizlerle OOP yazarken dikkat etmemiz gereken OOP yi gerçek anlamıyla programlarımıza veya web sitelerimize uygulama aşamasında nelere dikkat etmeliyiz bu konyu işleyen SOLID OOP Prensipleri ile ilgili küçük bir bilgilendirme yapacağım
OOP yi herkes bilir az çok anlatır veya basit yöntemlerle uygular yada uyguladığını sanar. Halbuki OOP programlama yaparken bir takım prensipler uygulanmalıdır. Bu prensiplerin baş harflerinden oluşan bir keyword var elimizde. SOLID
Solid 5 ayrı prensibin birleşmiş halidir ve OOP yaparken uygulamamız gereken kurallardan bahsederler. Hadi bakalım bu akrostiş şiir tadındaki prensipler neymiş görelim:
1- Single Responsibility Principle
2- Open/Closed Principle
3- Liskov’s Substitution Principle
4- Interface Sergregation Principle
5- Dependency Inversion Principle
İlk madde ile başlayalım küçük açıklamalar yapmaya.
1. Single Responsibility Principle : Bu prensibe göre bir metot, sınıf,nesne vb. yapıların yanlızca bir tane görevi olur. Bir metot, sınıf,nesne vb. değiştirmek için yanlızca bir sebebimiz olmalıdır. Birden fazla nedenimiz varsa bir yanlışlık var ve bu prensibe uymuyoruz anlamına gelir. Amaç her metot, sınıf,nesne vb. yapıya tek bir görev tek bir sorumluluk yüklemektir.
2. Open/Closed Principle : Yazmış olduğunuz metot, sınıf,nesne vb. yapılar geliştirmeye açık ancak değiştirmeye kapalı olmalıdır. Bu ne demektir peki: yazmış olduğunuz kod asla değiştirilmemelidir yanlızca üzerine eklemeler yapılmalıdır. Kodlarımızı yazarken bu şekilde dizayn etmeliyiz.
3. Liskov’s Substutions Principle : Bu prensibe göre alt sınıflardan elde ettiğiniz bir nesne ile üst sınıftan elde edilen nesne yer değiştirirse bu değişim kesinlikle ve kesinlikle aynı davranışa sahip olmalıdır. Yani örnekleyecek olursak OOP anlatırken hep bahsettiğimiz bir örnek olan CANLI sınıfımız olsun ve bu CANLI adındaki sınıfımız INSAN ve HAVYAN adlı iki sınıfa kalıtım vermiş olsun. Bu prensipte anlatılmaya çalışılan şey eğer ben bir işlemde CANLI sınıfını kullanıyorsam ve işlemlerim başarılı oluyorsa INSAN veya HAYVAN sınıfından aldığım örnekler ilede aynı işlemleri başarılı olarak gerçekleştirebilmeliyim içersinde bunu engelleyecek başka metot, sınıf,nesne vb. yapılar bulunmamalı demek istiyor.
4. Interface Sergregation Principle : Prensip olarak aynı özelliklere sahip olan sınıfları tek bir interface de toplamak sonradan o sınıfların hepsinde kesin olarak kullanılmayacak olan başka metot, sınıf,nesne vb. yapıları bu interface içersine eklemek doğru değildir. Ilk başta belki bir çözüm olabilir ama prensip olarak yanlıştır. Çözüm ise interface ‘leri parçalamaktır. Kesin olarak kullanılacak olan ortak metot, sınıf,nesne vb. yapıları ayrı ayrı interface ler içersinde toplayarak sınıflara implement etmektir.
5. Dependency Inversion Principle : Somut sınıflara olan bağımlılığı soyut sınıflar veya interface ler ile ortadan kaldırmaktır. Yani bir servis sınıfımız var ve bu servis sınıfı DB işlemleri ile ilgili işlemler gerçekleştiriyor. Başka bir A sınıfı üzerinden bu Servis sınıfına bağ kurup işlemlerimizi gerçekleştirirken ürettiğimiz A sınıfımız içersinde servis sınıfının bir çok örneği alınacak ve bir çok yerde kullanılabilecek ve kodlarımızı değiştirirken bağlı olan kısımlarda değişecek yada servis sınıfında yapılan bir değişiklik bizim servisi kullanan A sınıfımızdada değişikliklere sebep olacak . Amaç bu bağımlılığı ortadan kaldırmak ve daha güzel bir kod ortamı sağlamak.
Bu prensiplerde kod yazmak zorunlu olarak yapmanız gereken bir şey değil ama bu şekilde yazmanın tek bir amacı var daha az hata daha güzel kodlar 😀
Bilgiyle Kalın
M.Zeki Osmancık

Ejderha Mızrağı – Efsaneler üçlemesi 270 385 mezo

Ejderha Mızrağı – Efsaneler üçlemesi

Merhaba arkadaşlar

Bir arkadaşımın uzun ısrarlarına dayanamayarak Ejderha Mızrağı serisine başlıyorum. Ufak bir araştırma yaptım sizlerle paylaşmak isterim 🙂

Ejderha Mızrağı Destanı Margaret Weis ve Tracy Hickman tarafından yazılmış kitap serisidir. Seri aslında arabayla iş görüşmelerine giderken Laura ve Tracy Hickman tarafından yaratılmıştır. Serinin orijinal dili olan İngilizcede basılmış 190’dan fazla kitabı vardır. Ejderha Mızrağı dünyasının asıl yaratıcıları Margaret Weis ve Tracy Hickman olsa da birçok yazar yaratılan dünyaya ve kurallarına sadık kalıp onları kullanarak Ejderha Mızrağı dünyasıyla ilgili pek çok kitap yazmıştır. Öyle ki serinin kitaplarının büyük bir kısmının yazarları farklıdır. Aslen üç kitap olup, sonradan karakter derinleştirmeleri, yan hikâyeler, geçmiş ve gelecek eklemeleriyle büyümüş ve büyümeye devam etmektedir. Kitapların çoğu Krynn adlı dünyanın Ansalon adlı kıtasında geçer. Ansalon’un kuzey-doğusunda yer alan Taladas kıtası az olsa bile hikâyelerde kullanılmıştır. Adlatum kıtasında geçen bir hikâye henüz yazılmamıştır.
Türkçeye ilk olarak Ankira daha sonra Arkabahçe Yayıncılık ve son olarak da Laika Yayıncılık tarafından çevrilmiştir.
İlk yazılan Ejderha Mızrağı kitapları, birinci nesil karakterlerin çıktığı yolculuk ve maceralarını içeren, Güz Alaca Karanlığının Ejderhaları, Kış Gecesi Ejderhaları ve İlkbahar Şafağı Ejderhaları adlı üç kitaplık seridir. Kurgu ilk olarak Margaret Weis ve Tracy Hickman’ın da içinde bulunduğu masaüstü rol yapma oyunundan yaratılmıştır. Margeret Weis’in oyundaki karakteri Raistlin Majere’dir.

Tüm kitapları bulamadım ancak bulursam bu yazıyı güncelleyerek PDF formatında bu kitapları sizlerle paylaşacağım. Şimdilik elimde Efsaneler üçlemesi serisi bulunuyor. İyi okumalar diliyorum

ikizlerin-savaşı

İkizlerin Savaşı indirmek için tıklayın 

ikizlerin zamanı

İkizlerin Zamanı indirmek için tıklayın

ikizlerinsınavı

İkizlerin Sınavı  indirmek için tıklayın

Umarım Yararlı Olur

Bilgiyle Kalın

M.Zeki Osmancık

 

Design Patterns (Tasarım Deseni) Nedir ? 1024 777 mezo

Design Patterns (Tasarım Deseni) Nedir ?

Merhaba arkadaşlar
Konumuz Design Pattern 🙂 Biliyorum bir çok kişi bu konu hakkında birşeyler yazmıştır ancak birde ben yazayım dedim. Benim blogumda neden design pattern yok ben neden yazmıyorum dedim 🙂 ve işte Design Pattern…
Design Pattern genel olarak yazılım tasarımı sürecinde sürekli karşılaşılan problemlere çözümler üreten hazır kalıplardır. İstenilen herhangi bir yere yerleştirildiğinde çalışan hazır tasarımlar değildirler. İşin aslı problemler için bulunan çözümlere yapılan açıklamalardır
OOP(Object Oriented Programming) prensipleri doğrultusunda oluşturulan sınıfların başka sınıflara bağımlılığının en aza indirgenmesi beklenir. Bu durum esnek bir yapıyı beraberinde getirir ve yazılımın kalitesi artar. İleride gerekecek geliştirmelere daha müsait bir yapı sağlamış olur. Bu yapı, yazılımcıya ve o yazılımcıdan sonra gelecek yazılımcıya zamandan ve iş gücünden ciddi manada tasarruf sağlar.
Tasarım şablonları aşağıda yer alan ortak özelliklere sahiptir:

  • Edinilen tecrübeler sonunda ortaya çıkmışlardır.
  • Amerikanın tekrar tekrar keşfedilmesini engeller 😀 .
  • Tekrar kullanılabilir kalıplardır.
  • Ortak kullanılarak daha büyük problemlerin çözülmesine katkı sağlarlar.
  • Devamlı geliştirilerek, genel bir çözüm olmaları için çaba sarfedilir.

Tasarım şablonları değişik kategorilere ayrılır. Bunlar:

  • Oluşturucu tasarım şablonları (creational patterns)
  • Yapısal tasarım şablonları (structual patterns)
  • Davranışsal tasarım şablonlar (behavioral patterns)

Oluşturucular

  • Abstract Factory
  • Builder
  • Factory Method
  • Prototype
  • Singleton

Yapısal

  • Adapter
  • Bridge
  • Facade
  • Decorator
  • Composite
  • Flyweight
  • Proxy

Davranışsal

  • Command
  • Memento
  • Strategy
  • Iterator
  • State
  • Chain Of Responsibility
  • Mediator
  • Observer
  • Template Method
  • Visitor

Bu desenlerin yanlızca çok çok basit açıklaması. Yukarda saydığım desenleri tek tek açıklamayı planlıyorum 🙂 Zaman buldukça yazıyor olacağım. Sizlerde beni bekliyor olun 😀
Bilgiyle Kalın 😉
M.Zeki Osmancık

The Real Reasons You’re Unhappy at Work 375 375 mezo

The Real Reasons You’re Unhappy at Work

You hate your boss. Your coworkers give you the cold shoulder. Your to-do list is either painfully boring or terrifyingly long. These sound like valid reasons to hate your job. But in truth, they’re only the surface cause of your misery. Dig deeper, and you’ll discover underlying reasons you’re unhappy at work that are, fortunately, fixable.
“The ‘I hate my job because (fill in the blank)’ usually exists because too much time has passed where the ‘blank’ has gone unattended to,” says human resources expert Tiffani Murray. “Or other circumstances make the ‘blank’ appear bigger than it ought to be. Stepping back, assessing where you want to be in your job and career and digging deeper into the hatred is the way to find resolution and determine a next step.”
Keep reading for eight reasons you might be unhappy at work–and how to solve them.

What You Say: “I’m Bored at Work”

The_Real_Reasons_You’re_Unhappy-17d30a97363ddfcf4ddd4086a886fb95
The Real Reason: Your efforts have been unrecognized.
The Symptoms: You feel unmotivated. You seek out diversions to real work, such as updating social media or shopping a flash sale.
The Solution: Seek out feedback.
If you’re bored at work, it could be because you’ve been doing the same thing for too long and you’re ready for a change. Or it could be that you feel no matter how hard you work, you never get that “atta girl!” you deserve. If either is the case, seeking out feedback from your boss is a way to end this morale killer.
“A lot of times, a supervisor is not aware that someone is looking to move up the ladder,” Murray says. “If you don’t say anything, and you appear to be doing your job well, the thought usually is, ‘Let’s keep that person in that job.’ You have to take the initiative and let your boss know, ‘I want more opportunities to learn more things.’”
So, the next time you submit that big project and get zero feedback in return, don’t let it discourage you. Instead, ask your boss what she thought of it, and ask her for something more challenging next time around.

What You Say: “The Hours are Too Long”
The Real Reason: You’re overloaded with responsibilities but are afraid to push back and say, “No, I can’t take on more.”
The Symptoms: You’re the first in and/or the last to leave, and even when you’re not at work you have a Pavlovian response to the “ding” from your smartphone.
The Solution: Talk to your boss about suggestions on ways to better organize and prioritize your workload.
“Some people don’t know how to say ‘no’ to added responsibilities, and with the way the economy has been there’s been a lot of fear around saying ‘no,’” says Murray. “But now that the economy is turning around, tell your boss you need to discuss your workload and get better ideas on how to organize it.”
Ideally, having this conversation will open your boss’ eyes to exactly how much you have to get done–and how impossible that is within a 40-hour workweek. Also, she might give you guidance on what to prioritize and what deadlines can be spaced out a bit more. This can give you some much-needed breathing room (and some recognition from a supervisor who might not have realized how much you’ve been working).

What You Say: “I Hate My Co-workers”
The_Real_Reasons_You’re_Unhappy-8e10051a986eb8f983038520cf91d789The Real Reason: The problem might not be the people but rather the culture of the organization.
The Symptoms: You feel ganged up on or left out, or you find yourself arguing–a lot.
The Solution: If the culture isn’t the right match for you, you should consider moving on.
If the workplace culture doesn’t mesh with your personality, odds are the people there won’t either. For example, if the business feeds on competition amongst coworkers, and you’re not a competitive type, you’re going to chafe at that type of energy. And that’s going to make you hate the guy who’s constantly trying to one-up you, even if in doing so he’s just getting his job done.
If leaving the job isn’t feasible, figure out how to make the environment less stressful. If there are people you particularly abhor, make sure you take your lunch an hour after or before they do. Or request a desk change. And think about the end game. “Focus on your work and your goals,” says Murray. “Give yourself an 18-24 month time limit. During that time, strive for a promotion and get it. Then, start looking for your next job.”
Before doing something that drastic, realize that work friends often only last as long as you’re at that job. Focus instead on strengthening your friendships outside of the office.

What You Say: “I’m Underpaid.”
The Real Reason: You feel stifled and unfulfilled.
The Symptoms: Simple–you look at your paycheck and grumble.
The Solution: Find out what opportunities exist for you not only to get promoted to a higher-paying job, but to contribute more to growing the company.
Making a lot of money definitely makes life easier. You pay your bills, you even have a little left over for the fun stuff. But if you hang your work happiness on that biweekly paycheck, you’re giving short shrift to what happens every other day of the week. You have to show up, you have to perform, and, ideally, you have to feel satisfied by the work you do. If you feel fulfilled professionally and are given the license to be creative and develop new ideas on the job, you will get satisfaction that goes beyond the paycheck.
“People want to be heard,” says Sandy Mazur, division president at Spherion Staffing Services. “Base salary is a way of attracting someone to a company. But if you look at what makes people stay in their jobs, base pay takes a backseat to how well they can advance their careers. People also want to know their opinion matters. Then you take more ownership of the job.”
Ask your boss for ways you can contribute more to the team. Give her ideas on how processes could be done more efficiently. Have an idea for a new product? Take a deep breath and pitch it. When your paycheck isn’t your only payoff at work, you’re bound to feel more fulfilled.

What You Say: “I Feel Trapped in this Job”
The Real Reason: You are bored and unchallenged by your job, yet quitting is not an option.
The Symptoms: You dread Mondays and the days feel incredibly long.
The Solution: Find inspiration in places outside of work.
One in four workers rates his job satisfaction as fair or poor, according to Spherion’s Emerging Workforce Study. That’s a lot of bored employees. “When you spend so much time doing boring things, it affects other parts of your life,” says Nicole Williams, LinkedIn’s Career Expert and author of “Girl on Top.” “You feel really tired, not because you are tired, but because you can’t get out of the rut.”
To motivate yourself, find a mentor or go to a career-related conference that will remind you of why you chose your profession in the first place. Or become a mentor yourself. Sometimes motivating someone else can have the benefit of motivating you as well, Williams says.
If that doesn’t work, stop trying to find your inspiration at work. “Physically challenge yourself,” says Williams. “Take a walk. Go for a run. Or find something else you are interested in and do that. When you get involved in something you are interested in, your workday can feel less boring.”
To solve the “trapped” feeling on the job, ask yourself when was the last time you took on an assignment that truly scared you. If it’s been a while, have a conversation with your supervisor about taking on extra responsibility. Trying something new at work can be equally liberating.

What You Say: “I Hate My Boss”
The_Real_Reasons_You’re_Unhappy-c9bfdcd74e077caa5416cc3217900f7fThe Real Reason: Your boss doesn’t fully recognize your efforts causing you to feel unappreciated and resentful.
The Symptoms: When his name is in your inbox or you hear his voice coming down the hall, you cringe.
The Solution: Ask your boss for feedback on your performance, and give him some feedback on his.
If someone is constantly telling you what to do but never giving you any recognition for your efforts, yeah, it’s easy to hate that guy. The same is true if his or her management style is contrary to your personality. If your boss uses yelling and name-calling to get results, and that’s not what motivates you, you will learn to dread those weekly staff meetings.
But hatred can be diffused by communication, says Williams. “A lot of times bosses don’t recognize that what they are doing is causing problems,” she says. For example, if your boss is a screamer Williams advises you tell her, “I know you must be frustrated, and I know it’s a hard job, but I’m going to perform better if you don’t scream at me.” One of Williams’ clients tried this approach and was successful. “The boss said, ‘I didn’t realize I was raising my voice to that degree.’ There was surprisingly receptive feedback to that conversation. And often, negative boss behavior is bully behavior. Once they’re called out on it, they usually go and pick on someone else.”

What You Say: “I Chose the Wrong Career”
The Real Reason: You’ve given up on your dreams.
The Symptoms: Feeling discontented and as if work is something you have to do, not something you could ever enjoy.
The Solution: Pursue your dream outside the office.
Maybe you chose the career your parents wanted for you, rather than the one you wanted. Or you did all the hard work to get the necessary training and degrees only to realize that you hate the work you now have to do. Either way, you’re no longer chasing your dream, and that can leave you discouraged.
“Women rationalize by saying, ‘I should relocate for this job. I need the salary to support my family. I spent six years in school for this.’ They’re talking about what they should do and have to do, instead of living from their authentic self,” says Career Expert Cornelia Shipley. “Solving this involves reconnecting to your dream in some way.”
Maybe you wanted to be a ballerina but your parents encouraged you to get your MBA instead. S,o start taking dance classes again, teach dance or join the board at your local dance company. Maybe you became a doctor because you wanted to help the poor, but your student loans quickly led you to a different path. Volunteer at a clinic in a low-income neighborhood.
“Ask yourself, ‘What is the truth behind my dream today, and how do I incorporate that dream into my life?’” Shipley says. “If you connect the dots, you will get to the truth of what it is you truly want to do.”

What You Say: “I’ve Hit the Ceiling”
The_Real_Reasons_You’re_Unhappy-01ba4562048b38dc4f18e6f38352870aThe Real Reason: You’ve given up control of your career to someone else.
The Symptoms: You feel powerless over your career and don’t see a way out of the job you’re in.
The Solution: Communicate where you want to be and ask for help getting there.
You’ve been walking into the same cubicle for five years, doing the same work, barely getting cost-of-living raises, and you don’t see a way that things will change. Maybe your company is small and has very little opportunities for advancement or you’ve looked for other jobs but nothing has panned out. And so you work, watch the clock and have stopped planning for the future. If so, you’re not alone: only 28 percent of employees are satisfied with their current growth and earnings potential, according to data from Spherion’s Emerging Workforce Study.
Instead of puttering along in neutral, you need to create a new path for yourself. Don’t wait for your boss to suddenly notice you. Instead, “You have to decide which job you want and go after it,” says Shipley. Approach your boss about what opportunities there are for your advancement. Talk to human resources about job openings in other departments that might suit you. Get the extra schooling or training that will help make you more attractive to employers. But most of all, take control of your own career.
“If you put your boss in charge of making things happen for you, you will be disappointed,” says Shipley.

 

link

Samsung Galaxy Note 2 Root İşlemi 455 466 mezo

Samsung Galaxy Note 2 Root İşlemi

Merhaba arkadaşlar

Samsung Galaxy Note 2 telefon aldım ve alışkanlık olarak kullandığım bazı uygulamaların ROOT işlemi yapılmadan kullanılamadığı için yerimde duramadım Galaxy Note 2 yi root işlemine tabi tuttum. Sizlerlede paylaşayım dedim 🙂

Öncelikle  söylemek isterim ki telefonunuzun şarjı full olmalıdır. Bu yükleme işlemi herhangi bir şekilde yarım kalırsa telefonunuz tekrardan açılmayabilir. Herhangi bir sorunda  www.mzekiosmancik.com sorumlu değildir. Sorumluluğun tamamen kendinize ait olduğunu bilerek kuruluma başlamalısınız.

İlk olarak ODIN programını buradan indiriyorsunuz. Ardından Root dosyasını buradan indiriyorsunuz.

Bu iki dosyayı indirdikten sonra Galaxy Note 2 telefonumuzu Download Mode ‘ da açıyorsunuz.

DSC00031

 

 
NOT: Bunun için telefon kapalıyken Güç + Ses Kısma + Menu tuşlarına aynı anda basmalısınız. Bu tuşlara bastıktan sonra karşınıza bir menu gelecektir Ses Açma tuşuna basarsanız bir android resmi sizi karşılar ve telefonunuzun yüklemelere hazır olduğunu gösterir. Yandaki resimde Download Mode da telefonunuzun ekranının nasıl görüneceğini görebilirsiniz.
 

 

 

Telefonumuzu Download Mode da açtıktan sonra sıra geldi ODIN programını çalıştırmaya 🙂 ODIN i çalıştırıp telefonumuzu kablomuzla bilgisayara bağladığımızda şöyle bir ekran karşımızda olmalı.

odin1

 

Added yazısını gördüysek sıra geldi ROOT dosyasını eklemeye. İndirmiş olduğunuz root dosyasını PDA butonuna basarak seçin sonra karşınıza şöyle bir ekran gelecek.

odin2

 

Artık hazırsınız 🙂 Şimdi START butonuna tıklayarak işlemi başlatın. Kurulum sürdükten sonra SUCCES yazısını gördüğünüzde telefonunuz yeniden başlayacak ve belki bir soru sorabilir size recovery ile alakalı bu soruyada ses açma kapama tuşlarıyla yönlendirme yapıp YES seçtikten sonra…

Veeee Galaxy Note 2 telefonunuz artık ROOT işlemi tamamlanmış ve yeni özelliklerinin sizin tarafından keşfedilmesini bekliyor olacak 🙂

Umarım yararlı olur

Bilgiyle Kalın

M.Zeki OSMANCIK

LDF Olmadan Database Oluşturmak 512 512 mezo

LDF Olmadan Database Oluşturmak

Merhaba arkadaşlar
Sabahın köründe karşıma çıkan ilginç bir konuyu sizlerle paylaşmak istiyorum. LDF dosyası olmadan database oluşturabilir miyiz ? Cevabımız evet
Neden böyle birşey isteyelim ki demeyin isteyen istiyor 😀
İşte gerekli scrip 😀

Umarım Yararlı Olur
Bilgiyle Kalın
M.Zeki OSMANCIK

C# Dynamic Nesnesi 350 106 mezo

C# Dynamic Nesnesi

Merhaba arkadaşlar
Bu yazımda C# daki yeni bir keyword’ den bahsetmek istiyorum DYNAMIC.
Dynamic keyword u C# 4.0 ile birlikte 2010 da gelen bir keyword. Bu keyword Dynamic Language Runtime (DLR) yi yönetir DLR dediğimiz olay tıpkı CLR (Common Language Runtime) gibi çalışan bir yapıdır. Dynamic bir nesne Dynamic tipindeki classların yönetiminin nasıl yönetileceğini belirler. Tıpkı CLR de olduğu gibi tamamen runtime da derlenir ve çalışırlar.

Diyelim ki iki farklı class oluşturmak istiyoruz ancak içersinde aynı isimden 2 metot olacak daha sonra söz konusu Dynamic sınıfdan bir instance alıyorsunuz. Dynamic nesne ile aynı isimdeki ancak farklı classlar içersindeki metotları çağırabiliyorsunuz.

Bir de örneğe göz atalım 😀

Örnek

Çıktı da Şöyle oluyor şekil örnek 1 A 😀

output

Database’de bulunan tablo sayısı bulma 750 374 mezo

Database’de bulunan tablo sayısı bulma

Merhaba gençler 🙂
Veritabanındaki tablo sayısı nı öğrenmek için aşağıdaki sorguyu çalıştırabilirsiniz 😉


Umarım yararlı olur
Bilgiyle Kalın
M.Zeki Osmancık

DataTable ‘dan List e Dönüştürme 342 204 mezo

DataTable ‘dan List e Dönüştürme

Merhaba arkadaşlar

Bu yazıda sizlere DataTable ile gelen veriyi List<T> olarak geri döndürmek istersek bu dönüştürmeyi LambdaExpressions /LINQ ile nasıl yapabiliriz ondan bahsetmek istiyorum.

Umarım Yararlı Olur
Bilgiyle Kalın
M.Zeki Osmancık

Command Prompt Telnet Hatası 672 315 mezo

Command Prompt Telnet Hatası

Merhaba arkadaşlar

Bazı durumlarda  telnet kullanmak isteyebilirsiniz ancak Command Prompt ta telnet komutu yazdığınızda şöyle bir hata ile karşılaşabilirsiniz ‘telnet’ is not recognized as an internal or external command,operable program or batch file.  Eğer böyle bir hata ile karşılaşırsanız İlk yapmanız gereken Telnet Client yüklü mü ona bakmanız gerekiyor yüklü değilse yapmanız gereken şey şu  Denetim Masası -> Program Ekle Kaldır -> Windows Özellikleri Ekle  sayfasını açıp Telnet Client özelliğini yüklemeniz yeterli olacaktır. Yüklü ama aynı hatayı alıyorsanız o zaman başka bir çözüm olarak  Command  Prompt ta “Windows dizinine girerek yada Windows / System32 dizinine girerek bu dizin içersinde telnet i çalıştırmayı deneyebilirsiniz.

Untitled picture

Umarım Yararlı Olur

Bilgiyle Kalın

M.Zeki Osmancık

 

 

Windows 8 Güvenli Mod da Nasıl Açılır? 500 277 mezo

Windows 8 Güvenli Mod da Nasıl Açılır?

Merhaba arkadaşlar

Bilgisayarımızı bazen güvenli modda açmak isteyebilirsiniz belki bir virüs belki bir programı kaldırmak için olabilir.  Normalde Windows 7 ve daha öncesinde bilgisayar açılırken F8 tuşuna basarak aşağıdaki resimdeki ekran ile bu işlemi gerçekleştirebilirdik.

SafeModeF8

 

Windows 8 Güvenli Mod e geçince bu iş biraz daha farklı olmuş 🙂 Biraz araştırma ile bulabildim. Windows 8 de Bilgisayarınızı güvenli modda açabilmek için “Gelişmiş Başlatma Seçenekleri” ni Ayarlar bölümünde aşağıdaki resimdeki gibi aramanız ve bulmanız gerekiyor.

guvenli-mod

 

Gelişmiş Başlatma Seçeneklerini açtıktan sonra “Genel” sekmesi altında en altta bulunan gelişmiş başlangıç seçeneğini seçmelisiniz.

guvenli-mod-2

Şimdi yeniden başlat buton bastığınızda bilgisayarınız yeniden başlayacak size bir menü çıkaracak burada sayı veya F tuşlarıyla birini seçmenizi isteyecektir.

4 tuşuyla Güvenli Mod’u,
5 tuşuyla Ağ desteği ile Güvenli Mod’u,
6 tuşuyla ilse Komut İstemi ile Güvenli Mod’u başlatıyoruz

Umarım Yararlı Olur

Bilgiyle Kalın

M.Zeki Osmancık

 

 

 

Service ‘IISADMIN’ (IISADMIN)failed to start Hatasının Giderilmesi 671 389 mezo

Service ‘IISADMIN’ (IISADMIN)failed to start Hatasının Giderilmesi

Merhaba arkadaşlar
Bu yazımda başıma gelen 3 gün beni uğraştıran bir hata ile karşınızdayım 🙂 3 gün uğraşılmayacak bir hata aslında ama yanlış tarafa focus olunca mecburen bu yönde araştıma yapıp sonuca ulaşamadım ancak sonunda buldum 🙂
Herkesin sık kullandığı bir alışveriş sitesinin projesi için görevlendirildim ve bilgisayarıma önce Commerce Server 2007 kurup daha sonra Commerce Server 2009 a yükseltmem gerekiyordu. Commerce Server 2007 kurarken bir uyarı veriyor bu uyarı şöyle : “Service ‘IISADMIN’ (IISADMIN)failed to start”. Verify that you have sufficient privileges to start system services”. Bu hatayı Ignore seçeneği ile geçebiliyoruz. Geçmeyin sakın !!!😀
Eğer bu hatayı Ignore ile geçerseniz Commerce Server 2009 kurulurken Fatal Error hatası alıp bu hata genel bir hata çözüm aradığınızda bir çok alakasız kaynak çıkıyor. İşte bu Fatal Error e odaklandığım için 3 gün uğraştım 🙂
Ancak asıl sorun ISSADMIN hatası bunu çözmemiz gerekiyormus aslında 🙂 Şimdi nasıl çözdüğümü anlatayım.

Commerce Server için IIS kurulması şart bunu Program Ekle Kaldır dan Windows Özelliklerinden ekleyebilirsiniz. Sadece Internet Information Service i işaretleyip devam ederseniz (benim gibi) ISSADMIN hatasını alırsınız 😀 Bu hatayı almamak için IIS kurarken altındaki seçeneklerde yer alan IIS 6 Management Compatibility Pack da işaretli olmalı böylelikle Commerce Server kurulurken çıkan IISADMIN hatasını ve dolayısı ile Commerce Server 2009 da ki Fatal Error u de engellemiş oluyorsunuz 🙂
Umarım Yararlı Olur
Bilgiyle Kalın
M.Zeki OSMANCIK

HttpCookie Nedir ? 279 180 mezo

HttpCookie Nedir ?

Merhaba arkadaşlar
HttpCookie yapısından önce çok temel bilgi olarak Cookie nedir ondan bahsedelim 🙂
Cookie Nedir?
Bir web sayfası sunucusunun sizin bilgisayarınızın hard diskine yerleştirdiği ufak bir text dosyasıdır. Yani, o web sitesinin bir sonraki ziyarette sizi tanıması için geçerli bir bilgidir. Bu text dosyası bir komut dosyası olmadığı gibi, virüs de değildir. Size özel bir tanımlamadır ve sadece bu kodu tanımlayan web sunucusu tarafından okunabilir.Cookie’nin amacı; sizin o siteyi yeniden ziyaret ettiğinizi web sunucuya bildirmekten ibarettir.

HttpCookie Nedir?
Asp.Net ile yaptığımız sitelerimizde Cookie oluşturmak için kullandığımız bir class tır. Cookie nin yönetimini HttpRequest ve HttpResponse class ile gerçekleştirilir.
HttpCookie yi oluşturmak için

HttpCookie MyCookie = new HttpCookie("Cerezim");

Instance alındıktan sonra içersindeki property leride şu şekilde kısaca açıklayabiliriz.
Domain: Cookie nin etki alanını ayarlamak için kullanılır.
Expires: Cookie nin geçerlilik süresini ayarlamak için kullanılır DateTime tipinde değer alır.
HasKeys: Cookie içersinde alt anahtarlar olup olmadığını kontrol etmek için kullanılır.
HttpOnly: Cookie ye client tarafından javascript kodları tarafından ulaşılabilir olmasını sağlayan bir property dir.
Item: HttpCookie.Values özelliği için bir kısayoldur. Bu özellik Active Server Pages (ASP) nin önceki sürümleriyle uyumluluk sağlamak için kullanılır.
Name: Cookie ye bir isim verir veya cookie ismini okuyabilidiğimiz property.
Path: Cookie nin sanal adresini atayıp okuyabildiğimiz property
Secure:SSL uzerinden kullanilacak olan cookie ler ile ilgili guvenlik degerlerinin atandigi property dir.HTTPS uzerinden kullanilabilir
Value:Cookie içersine yerleştirilecek olan değeri atamak için kullanılır.
Values: Cookie içersine birden fazla değer atayabilmek için kullanılır.

Cookie tanımlayabilmek için HttpCookie sınıfından bir örnek alıp şu şekilde kullanabiliriz.

HttpCookie MyCookie = new HttpCookie("Cerezim");
MyCookie = Request.Cookies.Get("Cerezim");
if(MyCookie!=null)
{
Response.Write(MyCookie.Value);
}

Simdilik bu kadar daha sonraki yazilarda ayrintili sekilde nasil cookie tanimlayip kullanabiliriz ornek proje ile destekleyip gosterecegim.
Umarim yararli olur
Bilgiyle Kalin
M.Zeki OSMANCIK

Kararlı Olmak ! 1024 680 mezo

Kararlı Olmak !

Bir işi başarabilmenin en önemli kuralıdır o işi yapabileceğine inanmak, kararlı ve istekli olmak. Zor durumda kaldığında farklı alternatifler üretebilmek, başarısızlık karşısında yılmadan mücadele etmek, hedefe yönelik Success-Kiden gerekli adımlardandır. Bir şeye karar verdiğinizde üretirsiniz.Karar vermek dibi görünmeyen zifiri karanlık kararsızlık çukurundan kurtuluştur.Bir kördüğüm haline gelmiş sarmaldan aniden özgür olmaktır. Ancak öncelikle bir karar verebilmek için özgür irade gücü ve cesaret gereklidir. Karar vermek kişiyi yeni bir yola koyar ve bu yol yeni yükler getirir. Bu kararın arkasında durabilecek güce sahipseniz yola koyulabilirsiniz. Aksi halde arkasında duramayacağınız kararlar yolda size yetişip ezip geçecektir.
İlk önce neye ulaşmak istediğimize, sonra da bu isteğimize nasıl ulaşacağımıza karar vermek zorundayızdır. Bu noktada karar vermenin gücü çok büyüktür. Uygulanırsa etkisi ile yaşamı baştanbaşa değiştirir. Karar verdiği an insan, hayata karşı kendini güçlü ve yenilenmiş hisseder.

Karar vermek çoğunlukla bir çıkmazdan çıkış yolu bulabilmek içindir. Karar alan aldığı kararı yaşamına yansıtırken “Keşke şöyle yapsaydım, şunu da düşünseydim, şuna da ayıp oldu, vs… ” gibi kuşkuya düşme, pişmanlık, duraksama ve kayboluşlardan kendini uzak tutabilme yetisine de sahip olmalıdır.

Karar almak, uygulamaya göre nispeten daha kolaydır. Zira insanoğlu alışkanlıklarından kolay kolay kopmak istemez.

Uygulamaya geçen bir kararda dönüş yoktur. Yol tek şerittir. Kendine saygısını tümden yitirmemesi için bu yola koyulmuştur artık. Denildiği gibi: “Karar vermek, bir şeyleri kaybetmeden gerçekleşemeyen eylemdir.”

“Karar almak”, çoğunlukla bireyin hayatına belli prensip ve kurallar perspektifinden yeni bir bakış açısı ile bakması anlamında kullanılır. “Karar vermek” ise kişinin hayatında çok önemli bir seçim yapmak ve hayatının gidişini değiştirmek zorunda kalması anlamındadır.
Hayat öyle basite alınacak bir oyun değildi. Oyunun kurallarını bilmen ve ona göre oynaman gerekiyordu. Ama çoğu zaman oyunun kurallarını bilmek yetmiyordu. Çok daha önemli olan başka bir şey vardı. Kendini bilmek… Ne istediğini ama gerçekten en çok ne istediğini, neyin seni mutlu edeceğini ve kim olduğunu, neler yapabileceğini bilmek zorundaydın. Seçmek, karar vermek zorundaydın. Ancak o zaman doğru kararlar veriyor ve mutlu bir hayata sahip oluyordun. Ve kararlar birer kibritti. Ya kendini yakıyordun ya da ısıtıyordun…”

Denilir ki: “Yaşam haritalarını izlerken, hedeflerinize ulaşmaya çalışırken, aklımız dümen, duygularımız yakıttır. Akıl ve mantık önderliğinde, vicdanlarını da kullananlar hedeflerine ulaşırlar.” Amaç duyguları köreltmek değil, onları yönetmektir.

Bir sorun, o durumu düzeltmeye hazır oluncaya kadar karşımızda durur. Neyin yanında, neyin karşısında olduğu bilinen gerçek insanlar, karar vermenin gücünü de bilmektedirler. Onlar, en zor durumda yalpalasalar bile yollarına devam ederler. Karar vermenin bu büyük gücünü kullanırlar, asla arada kalmaz ve sorunun bir parçası olmamak için gerektiğinde en acı verici kararları dahi almaktan bir an bile çekinmezler.

Birçok insanın, hayatlarında başarısızlığa uğramaları, akla uygun davranabilme özgürlüğünün ellerinde bulunduğunu görememelerinden, seçmenin gerekliliğinin farkına vardıkları zaman da artık karar vermek için zamanın geçmiş olmasındandır.

Karar vermek zordur,ama bir o kadar da canlandırıcıdır.

Ya yaşamınıza renk katın,

Ya da ömrünüzü keşkelerle geçirip, arada kalın…

Seçim yapmak, omuzlarınıza yüklenen bir yüktür başta…

Sonra sırtınıza yüklediğiniz yerden derinizi yırtıp açan ve sizi uçuran kanatlardır…

Yeniliğe açılan kapıdır…

Yaşadığının farkına varmaktır…

Düşününüz ve…

Karar verecekseniz şimdi verin…

Seçim yapacaksanız şimdi yapın…

Yola koyulacaksanız, dönmemek üzere ilk adımınızı atın…

Karar Vermek İle İlgili Güzel Sözler

“Cesaret insanı zafere, kararsızlık ve korkaklık ise ölüme götürür.” YAVUZ SULTAN SELİM

Akıllı kişiler kararlarını aceleyle değil, düşünüp taşınarak verirler. JEREMY TAYLOR

Başlamadan önce iyi düşün; ama bir kere başlayınca hemen bitirmeye bak. SALLUST

Bilgi insanı kuşkudan, iyilik acı çekmekten, kararlı olmak da korkudan kurtarır. KONFÜÇYÜS

Bir girişimde bulunacaksanız, kararsızlık kapılarını kapatın. NIETZSCHE

Bir insan hakkında verdiği cevaplardan çok, sorduğu sorularla daha iyi karara varırsın.VOLTAIRE

Bir konu hakkında karar vermeden önce başkalarının da öğütlerine kulak vermek gerekir.DALE CARNEGIE

Çok boyutlu olaylarda ani kararlar vermek aptallıktan başka bir şey değildir. MONTAIGNE

Felaket içinde karar verebilmek yarı kurtuluştur. PESTALOZZI

Güneşi sağ elime, ay’ı sol elime verseniz dahi, davamdan vazgeçmem. HZ MUHAMMED (sav)

Güzelliği anlamak için bir kere bakmak yeter ama, bir karara varmak için çok düşünmek gerekir. EMILE ZOLA

Karar verebilen acıyı yener. GOETHE

Kararlar çoğunlukla saatlerimize benzerler, hiç birimizinki birbirine uymaz, ama gene de kendimizinkine güveniriz. POPE

Kararlılık keskin bir bıçağa benzer, keskin ve düzgün keser. Kararsızlık ise kör bir bıçak gibidir, kestiği her şeyi parçalar ve yırtar. JAN ME KEITHEN

Kararsızlık en büyük hastalıktır. GOETHE

Kararsızlık ve gecikme başarısızlığın iki önemli sebebidir. GALILEO

Kararsızlık, esef ve pişmanlıklarımızın biricik sebebidir. DESCARTES

Kendi kendine karar veremeyenin ahlaki sorumluluğu da olmaz. ARISTO

Kızgın olduğum zamanlarda karar vermem. WINSTON CHURCHILL

Kuşku ve kararsızlık, insanın gelişmesini engeller. IGNAZIO SILONE

Küçük hataları fazla dikkate alma, yoksa önemli kararları almakta güçlük çekersin. WILHELM JORDAN

Olaylar sonuçlanmadan kesin bir karara varmak doğru olmaz. DALE CARNEGIE

Uzun düşünmek insana, çok kez fırsat kaçırtır. PUBLILILUS CYRUS

Vaktinden önce alınan kararların sonu yoktur. OSCAR WILDE

Ya başlamamalı, ya bitirmeli… OVIDIUS

Yapmak istediğin şey için düşünerek karar ver, verdiğin kararı da mutlaka yap. BENJAMIN FRANKLIN

C# ve PHP 3DESCrypto 691 618 mezo

C# ve PHP 3DESCrypto

Merhaba arkadaşlar
Bu kez sizlere şifreleme yöntemi olan 3DES(Triple Data Encryption Algorithm diye geçer ancak DES kısaltması Data Encryption Standard dan gelmektedir.) şifreleme yönteminin kodlarını vermek istiyorum belki bu yazıya daha sonra ayrıntılı şekilde bunun ne olduğu ile ilgilide birşeyler ekleyebilirim. 🙂 PHP ve C# için kodları aşağıda sizlerle paylaşıyorum
PHP

function encrypt($string) {
//Key
$key = "xxxxxxxx";

//Encryption
$cipher_alg = MCRYPT_TRIPLEDES;

$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg,MCRYPT_MODE_ECB), MCRYPT_RAND);

$encrypted_string = mcrypt_encrypt($cipher_alg, $key, $string, MCRYPT_MODE_ECB, $iv);
return base64_encode($encrypted_string);
return $encrypted_string;
}

function decrypt($string) {
$string = base64_decode($string);

//key
$key = "xxxxxxxx";

$cipher_alg = MCRYPT_TRIPLEDES;

$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg,MCRYPT_MODE_ECB), MCRYPT_RAND);

$decrypted_string = mcrypt_decrypt($cipher_alg, $key, $string, MCRYPT_MODE_ECB, $iv);
return trim($decrypted_string);
}

C# encryption:

using System;
using System.Security.Cryptography;
using System.Text;

public class Crypto3DES
{
public Crypto3DES()
{

}

private System.Text.Encoding encoding;

public string Key
{
get
{
return "xxxxxxxx";
}
}

public System.Text.Encoding Encoding
{
get
{
if( encoding == null )
{
encoding = System.Text.Encoding.UTF8;
}
return encoding;
}

set
{
encoding = value;
}
}

public string Encrypt3DES( string strString )
{
DESCryptoServiceProvider DES = new DESCryptoServiceProvider();

DES.Key = Encoding.GetBytes( this.Key );
DES.Mode = CipherMode.ECB;
DES.Padding = PaddingMode.Zeros;

ICryptoTransform DESEncrypt = DES.CreateEncryptor();

byte[] Buffer = encoding.GetBytes(strString);

return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
}

public string Decrypt3DES( string strString )
{
DESCryptoServiceProvider DES = new DESCryptoServiceProvider ();

DES.Key = Encoding.UTF8.GetBytes( this.Key );
DES.Mode = CipherMode.ECB;
DES.Padding = PaddingMode.Zeros;
ICryptoTransform DESDecrypt = DES.CreateDecryptor();

byte[] Buffer = Convert.FromBase64String(strString);
return UTF8Encoding.UTF8.GetString( DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length) );
}
}

Umarım Yararlı Olur
Bilgiyle Kalın
M.Zeki Osmancık

PHP MyAdmin Import Dosya Boyutu Hatası 320 220 mezo

PHP MyAdmin Import Dosya Boyutu Hatası

Merhaba arkadaşlar
Sizlere biraz önce karşılaştığım bir sorunun çözümünü paylaşmak istiyorum. kendi bilgisayarıma Wamp server kurdum ve var olan bir veritabanının script dosyasını yüklemeye çalıştım ancak bir hata ile karşılaştım.

Aldığım hata :No data was received to import. Either no file name was submitted, or the file size exceeded the maximum size permitted by your PHP configuration. See FAQ 1.16.

Yüklenen dosyanın boyutunun büyük olduğu ile alakalı bir hata. Çözümü ise çok basit php.ini dosyanızı açıyorsunuz ve içersinde upload_max_filesize = 2M yazar 2 yerine 128 yazın ve kaydedip kapattıktan sonra php servislerini yeniden başlatın tekrar denediğiniz de boyutu büyük olan script dosyası başarıyla import edilecektir. 🙂

Umarım faydalı olur.

Bilgiyle Kalın

M.Zeki Osmancık

ASP.Net Türkçe Karakter Sorunu 962 192 mezo

ASP.Net Türkçe Karakter Sorunu

Merhaba arkadaşlar

ASP.Net türkçe karakter sorunu ile ilgili küçük bir bilgi vermek isterim 🙂 Eğer asp.net sayfanızda türkçe karakter sorunu yaşıyorsanız Aşağıdaki kodu “webconfig” sayfanızdaki “<system.web>” tagı altına yapıştırmanız yeterli olacaktır… 😉


 

Bilgiyle Kalın 😉

M.Zeki Osmancık

.Net için Facebook SDK 400 400 mezo

.Net için Facebook SDK

Facebook için bir masaüstü, mobil, web veya windows 8 projesi geliştirmek isteyenler toplaşın bakalım buraya 🙂
Facebook için .Net SDK si yayınlandı. Nasıl bir uygulamayı facebook ile entegre ederim bu SDK yi nasıl kullanırım diyenler için paylaşıyoruz 🙂
Kolay gelsin…

Facebook SDK yı indirin öğrenin 🙂

http://facebooksdk.net/

Regex ifadelerinizi online olarak test edin 800 533 mezo

Regex ifadelerinizi online olarak test edin

Yazdığın regex ifadeleriniz online olarak test etmek için http://www.regextester.com/ adresini kullanabilirsiniz. “Test on text” bölümüne yazdığınız string eğer “type regex” ile eşleşmiyorsa “result” bölümünde “No match” eşleşiyorsa “macthes (x)” sonucu olacaktır.

Şifre alanları için regex ifadesi 150 150 mezo

Şifre alanları için regex ifadesi

// c# kodu olduğu için \ karakteri \ olarak yazılmıştır, başka programlama dillerinde "\" ifadesini "\" ile değiştirin
^(?=.*[^a-zA-Z])(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[-!$%^&*()_+|~=`{}\[\]:\";'<>?,.\/])\S{8,30}$
// şifrenin en az 8 karakter olmasını 1 küçük, 1 büyük harf, 1 rakam ve 1 sembolden oluşmasını zorunlu tutar.
^(?=.*[^a-zA-Z])(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])\S{8,30}$
//bu ifadede ise sembol zorunluğu yok.
MS SQL içerisindeki büyük miktarda veriler arasında sayfalamayı hızlı bir şekilde yapmak 150 150 mezo

MS SQL içerisindeki büyük miktarda veriler arasında sayfalamayı hızlı bir şekilde yapmak

CREATE PROCEDURE dbo.GetProductsPaged
(
    @startRowIndex int,
    @maximumRows int
)
AS
    SELECT     ProductID, ProductName, SupplierID, CategoryID, QuantityPerUnit,
               UnitPrice, UnitsInStock, UnitsOnOrder, ReorderLevel, Discontinued,
               CategoryName, SupplierName
FROM
   (
       SELECT ProductID, ProductName, SupplierID, CategoryID, QuantityPerUnit,
              UnitPrice, UnitsInStock, UnitsOnOrder, ReorderLevel, Discontinued,
              (SELECT CategoryName
               FROM Categories
               WHERE Categories.CategoryID = Products.CategoryID) AS CategoryName,
              (SELECT CompanyName
               FROM Suppliers
               WHERE Suppliers.SupplierID = Products.SupplierID) AS SupplierName,
              ROW_NUMBER() OVER (ORDER BY ProductName) AS RowRank
        FROM Products
    ) AS ProductsWithRowNumbers
WHERE RowRank > @startRowIndex AND RowRank <= (@startRowIndex + @maximumRows)

MS SQL’de satır numarasını alma 150 150 mezo

MS SQL’de satır numarasını alma

SELECT * FROM (
  SELECT
    ROW_NUMBER() OVER (ORDER BY id ASC) AS rownumber,
    id, ilceAdi
  FROM Ilce
) AS foo
WHERE rownumber = 5

JavaScript Sayaç

JavaScript Sayaç Div içerisinde açılan bir iletişim formunun 2 saniye sonra kaybolması için hazırlanmıştır. jQuery'nin slideUp kapanma efekti kullanılmıştır.

function closeForm(){
  setTimeout('$("#contactForm").slideUp("slow")', 2000);
}

JavaScript Sayaç 150 150 mezo
iPhone MKMap ile Haritada yerimizi buluyoruz :) 365 718 mezo

iPhone MKMap ile Haritada yerimizi buluyoruz :)

Merhaba arkadaşlar

Uzun bir aradan sonra tekrar bir makale yazma fırsatı buldum sonunda. Bu yazımda iPhone programlamada harita kontrolünün kullanımından bahsetmek istiyorum. Çok çok basit manada iphone uygulaması üzerine nasıl harita ekleriz bu haritada nasıl yerimizi işaretleriz konusunu açıklayalım 🙂

İlk önce XCode üzerinde bir proje açıyoruz ve boş formumuzun üzerine MKMapView kontrolü yerleştiriyoruz.

Screen Shot 2013-05-01 at 4.10.05 PM

 

MapView kontrolünün çalışabilmesi için framework eklememiz gerekmekte bu ekleme işleminide şu şekilde yapabiliriz : proje dosyaları üzerinde bulunan Frameworks klasörü altındaki herhangi bir nesnenin üzerine sağ click ile Finder üzerinde gösterdikten sonra açılan pencere üzerinde bulunan klasörlerin içinde MapKit.framework klasörünü bulup olduğu gibi sürükleyip projemiz içersinde bulunan Frameworks klasörü üzerine bırakıyoruz.

Screen Shot 2013-05-01 at 4.13.18 PM

 

ve MapKit.framework projemiz üzerine ekleninde aşağıdaki gibi Frameworks klasörü içersinde bize göz kırpıyorsa tamamdır artık devam edebiliriz.

 

 

Screen Shot 2013-05-01 at 4.13.46 PM

Kod olarak çok fazla birşey yazmayacağız sadece basit tanımlamalar ve basit bir property ataması o kadar.  Tanımlama yapabilmek için .h dosyası içersine aşağıdaki gibi bir tanımlama ve property tanımlaması yapıyoruz ve .m dosyasına geçiyoruz.

Screen Shot 2013-05-01 at 4.33.50 PM

.m dosyası içersindede @syntesize komutu ile bu .m dosyası içinde .h dosyasında tanımladığımız mapview property sini kullanacağımızı söylüyoruz. Uygulama çalıştıktan sonra hemen işlemin gerçekleşeceği alan ViewDidLoad event idir. bu event içersinede showsUserLocation=YES komutu yazdıktan sonra işlemimiz tamamlanıyor.

Screen Shot 2013-05-01 at 4.15.04 PM

 

Artık proje çalıştığında nerde olduğunuzu görebilirsiniz. XCode üzerinde derleme yaptığınızda tam olarak yerinizi göstermeyebilir yada alakasız bir yer gösterebilir ancak cihaz üzerinde çalıştırdığınızda sorun kalmıyor.

Peki bu cihaz üzerinde çalışmıyor nasıl yapacaz derseniz oda başka bir yazıda anlatacağım ayrı bir dert  🙂

Screen Shot 2013-05-01 at 4.29.28 PM

 

Şimdilik bu kadar

Umarım yararlı olur

Bilgiyle Kalın 😉

M.Zeki Osmancık

Samsung Galaxy S4 ’e Özel Oyun Konsolu 400 266 mezo

Samsung Galaxy S4 ’e Özel Oyun Konsolu

Geçtiğimiz günlerde tanıtılan Samsung Galaxy S4 ’e özel oyun kolu ile birlikte geliyor. Firma bu oyun kolu ile mobil oyunculukta bir devrim yaratacak gibi görünüyor
Engadget’ın haberine göre Samsung, Galaxy serisi için bir Gamepadprototipi hazır. Samsung cihazlarına özel olarak tasarlanan bu oyun kolu, ilk bakışta Xbox 360 kontrolünü andırıyor. Üzerinde 2 Analog ve D-Pad bulunuyor. Bluetooth üzerinden Samsung cihazlarla bağlantı kurabilen bu Gamepad iki AAA pil ile çalışıyor.

sammm

Mobil oyunculuğun yaygınlaştığı bu dönemde, Samsung firması Gamepad ile rakiplerinin önüne geçecek gibi gözüküyor.

Microsoft CRM Online Dil Desteklerinin Ayarlanması 703 405 mezo

Microsoft CRM Online Dil Desteklerinin Ayarlanması

CRM de Dil Desteklerinin Ayarlanması

CRM üzerinde kullanılacak olan dillerin ayarlanabilmesi için . CRM de bulunan Ayarlar kısmında ki Yönetim seçeneği üzerindeki Diller linkine tıklandıktan sonra çıkan listede kullanıcıların kullanabilecekleri dillerin işaretlenip kapatılması gerekmektedir. böylelikle birden fazla dil desteği CRM üzerine eklenmiş olur
52bc47048c6014599257494618c492ae

 

Umarım Yararlı Olur

Bilgiyle Kalın

M.Zeki Osmancık

 

Mac OS Print Screen 500 360 mezo

Mac OS Print Screen

Mac de print screen tuşu bulunmuyor bunun yerine bir kaç tuşa aynı anda basıp ekran görüntüsü almanız mümkün. 🙂 İşte o tuşlar :

1.Basit olarak tüm ekranın görüntüsünü alabilmek için :

Apple ⌘ + Shift + 3 tuşlarına aynı anda basıyorsunuz ve masaüstünde resim dosyanızı görüyorsunuz 🙂 Masaüstüne ya resim dosyasını atar yada Picture_ adında bir klasör açıp içersine bu resmi kaydeder.

2. Seçtiğiniz bir alanın görüntüsünü kaydetmek için :

Apple ⌘ + Shift + 4 tuşlarına aynı anda basıyorsunuz mouse ekran görüntüsü almaya hazır olduğunu gösteriyor seçimi yaptıktan sonra masaüstüne seçtiğiniz alanın görüntüsünü kaydediyor

3 . Seçilen pencerenin görüntüsünü kaydedebilmek için :

Apple ⌘ + Shift + 4 tuşlarına aynı anda basıyorsunuz ve mouse işareti  + şeklinde değişiyor.  sonra space tuşuna bsıyorsunuz mouse kamera şeklinde değişiyor istediğiniz pencerenin üzerine bir kez tıklıyorsunuz ve o pencerenin resmini yine masaüstüne kaydediyor.

 

Nasıl çok basit değilmi 🙂

Umarım yararlı olur

Bilgiyle kalın

M.Zeki Osmancık

PHP’ de WCF Servis Çalıştırmak 800 421 mezo

PHP’ de WCF Servis Çalıştırmak

Merhaba arkadaşlar

WCF Servisi yazdık yayınladık. C# tarafında nasıl kullanmamız gerektiği zaten basit olarak servisin üzerindeki örnek kısmında yazıyor. Bu yazıda .Net de yazdığımız bir metodun farklı bir platform olan PHP tarafında nasıl kullanacağımızı kısaca göstermek istiyorum.  Öncelikle kodlara geçmeden önce belirtmeliyim ki server üzerinde SOAPCLIENT kurulu olmalı eğer kurulu olmazsa WCF servisi kullanamazsınız.

WCF Servis tarafında aşağıdaki gibi bir metot yazdım

    public string AddAccount(string yetkiliAd,string yetkiliSoyad,string firmaAdi,string firmaAdresi){

return string.Format(“You entered: {0}”, yetkiliAd+yetkiliSoyad+firmaAdi+firmaAdresi);

}

Şimdi gelelim PHP kodlarına basit olarak kodlar şöyle:

// SOAP client WCF servis e bağlanmamızı sağlayan bir class ve WCF servis üzerindeki metotların çalıştırılmasını sağlar.
$wsdl = ‘http://servisadresi/ServisKlasoru/Service.svc?wsdl’;
$soapClient = new SoapClient($wsdl, array(‘cache_wsdl’ => 0));// Yazılan WCF servis üzerinde AddAccount adında bir metot var ve onun içersine parametreleri gönderiyoruz.
$AccountParameter = new stdClass();
$AccountParameter->yetkiliAd = addslashes($this->ucwords_tr($_POST[Ad]));
$AccountParameter->yetkiliSoyad = addslashes($this->ucwords_tr($_POST[Soyad]));
$AccountParameter->firmaAdi = addslashes($this->ucwords_tr($_POST[FirmaUnvan]));
$AccountParameter->firmaAdres = addslashes($this->ucwords_tr($_POST[FirmaAdres]));
try
{
// ve WCF servis üzerindeki AddAccount metodunu çalıştırım sonucu bir değişkene aktarıyor.
$result = $soapClient->AddAccount($AccountParameter);
}
catch (SoapFault $fault)
{
//echo “Fault code: {$fault->faultcode}” . NEWLINE;
//echo “Fault string: {$fault->faultstring}” . NEWLINE;
if ($soapClient != null)
{
$soapClient = null;
}
exit();
}
$soapClient = null;

//echo ”

\n”;

//print_r($result);

//echo ”

\n”;

//echo “Return value: {$result->AddAccountResult}” . NEWLINE;

Umarım yararlı olmuştur 😉

Bilgiyle Kalın

M.Zeki Osmancık

WCF Service IIS Ayarları 1024 575 mezo

WCF Service IIS Ayarları

Merhaba arkadaşlar

Bir önceki yazıda WCF servisin ne olduğu ile alakalı bilgi vermiştim şimdi ise yazdığımız bir servisin IIS üzerinde nasıl yayınlanacağı üzerinde duralım. Öncelikle yayın yapacağımız server üzerinde IIS yüklü olması gerekmekte. IIS üzerinden bazı ayarlar yapacağız ve dosyalarımızı yerleştirip yayına başlayacağız.

Dosyalar demişken WCF Service projesini yazıp tamamladıktan sonra projeyi Publish etmemiz gerekiyor. Publish işlemi servisi yayına hazırlamak anlamına geliyor ve yapmasıda çok basit sadece projeniz üzerinde sağ click sonra publish seçmeniz yeterli.

Şimdi server üzerinde IIS Yöneticisini açıyoruz.

1

 

Daha sonra kullanacağımız Framework versiyonunda bir Application Pool ekliyoruz

2

 

Bizim servisimiz .Net Framework 4.0 kullandığı için uygulama havuzumuz Framework 4.0 seçip oluşturuyoruz.

3

Bu uygulama havuzu içersinede bir web sitesi ekliyoruz ki yayınlayacağımız servisimizi içersine yerleştirebilelim 🙂
4

 

Bu websitesinin yayınlanacağı fiziksel adresi seçmemiz gerekiyor.

5

6

 

 

7

 

Web sitesini ekledikten sonra ve fiziksel yolunu belirttikten sonra eklediğimiz web sitesine bir Application (uygulama) ekliyoruz.

8

 

Uygulamamız içinde aynı şekilde bir fiziksel yol seçtikten sonra yayına hazırız.

9

 

Artık servisimiz yayına hazır tek yapmamız gereken server in adresini yazmak ve belirttiğimiz servisin klasör adı ve dosya adını yazıp servisimizi görüntülemek 😉

http://serveradres veya ip adresi/ServisKlasoru/Service.svc

Untitled picture

 

Umarım yararlı olur

Bilgiyle Kalın

M.Zeki Osmancık

WCF Service Nedir? 448 274 mezo

WCF Service Nedir?

Merhaba arkadaşlar

WCF Service nedir konusu üzerinde bir kaç basit açıklama yapmak istiyorum. Bilindiği gibi microsoft bugüne kadar dağıtık uygulamalarının (Distrubuted Applications) geliştirilebilmesi için  .Net Remoting, XML Web Servisleri, MSMQ,COM+ gibi sistemleri geliştirmiştir.  WCF Service de temel olarak bu sistemlerin hepsinin yeteneklerine sahip ve tam SOA (Service Oriented Architecture – Servis Yönelimli Mimari) desteü, sağlayan güçlü bir Framework API si olarak açıklanabilir.

WCF iki önemli özellik ile birlikte karşımıza çıkmakta: bunlardan birincisi Microsoft tarafındaki servislerin farklı platformlar tarafından ele alınabilmesidir (Interoperability) . Böylece karmaşık .Net tiplerini özel olarak Java ,Com gibi modelleri destekleyen platformlara dağıtabiliriz. Bu yüzdende Linuz ,Unix gibi sistemler servislerimizin birer tüketicisi olabilirler.

İkinci özellik ise Windows kısmında yapılan dağıtık modeller arasında var olacak olan entegrasyonlarının tek bir çatı altında toplanabilmesidir. Bu özellik dışında WCF Service  , CLR tiplerini birer servis olarak sunabilmemizi ve servisleri birer CLR tipi olarak kullanabilmemizi sağlayan bir mimari sunmaktadır.

WCF Service ‘e aynı makine içinde aynı process te yer alan farklı bir Application Domain üzerinden ,aynı makinede yer alan farklı bir process içindeki farklı Application Domain üzerinden , farklı bir makinedeki process içinde yer alan Application Domain üzerinden ulaşabiliriz. Client’ lar hangi Application Domain üzerinde olursa olsunlar servis ile olan iletişimlerini proxy nesnesi üzerinden sağlamak zorundadırlar.

İngilizce kaynaklarda WCF Service ‘in ABC sinden sıkça bahsedilmektedir. Bu ABC nedir alfabemi diye sorarsanız değil 😀 ABC Addresses Bindings Contracts anlamına gelen ve WCF in çekirdeğinde yer alan önemli kavramlardır.

Addresses : Bulunan her servis benzersiz bir adrese sahip olmalıdır Özellikle bir servis adresi servisin teri taşıma protokolü bilgilerinden oluşmalıdır. Servis yeri derken kastetmeye çalıştığım şeyler aslında : Bilgisayar adı, site adı i network , iletişim portu, pipe queue, URI adları ve kesin bir path adresi   olarak sıralanabilir. Burada kullanılan taşıma protokolleri ise HTTP , TCP, P2P , IPC , MSMQ olarak soralanabilir.

Contracts : Bir servisin ne iş yaptığını bilmek önemlidir. Özellikle client’ ların ihtiyaç duyduğu proxy sınıflarının yazılmasında önemli bir konudur. Bu sebeple WCF Service üzerinde tüm servisler dış ortama bir Contract sunmaktadır. Genel manada 4 tane contract tipi vardır. bunlar

Service Contract : Serviste hangi operasyonların var olduğu ile alakalı sözleşmedir.

Data Contract :Servislerden client ‘lara giden ve client ‘ lardan servise gelen veri tiplerini tanımlayan sözleşmedir. Int String gibi bilinen tipler için bu sözleşmeler Implicit yani bilinçsiz olarak hazırlanır. Ancak karmaşık tiplerde ve kendi oluşturduğumuz tiplerde Explicit olarak tanımlanmaları gerekir. Bu sayede Java vb platformlara kendi tanımladığımız sınıfı o platformların anlayacağı şekilde sunmuş oluyoruz.

 Fault Contract : Servis tarafından hangi hataların fırlatılabileceğini ve bu servisi kullanan client a bu hataların nasıl aktarılacağını tanımlayan sözleşmedir.

Message Contract : Servislerin mesajları ile iletişimini sağlayan sözleşmedir.

Bindings :Bindings temek olarak servisleri ile nasıl iletişim kurulacağını tanımlamak için kullanılırlar. Bir bindings tip  transport type , protocok ve data encoding bilgilerini bildirir. Bu bilgiler aslında servis yönelimli mimari modelde kullanılabilecek olan senaryolar düşünülerek oluşturulurlar bu yüzdende WCF bu önceden bilinen senaryoları kullanabilmek için gerekli bağlayıcı tipleri önceden bildirmiştir bunlar :

 

Binding Tipi KonfigurasyonElementi Taşıma Çeşidi(Transport Type) Veri Çözümlemesi(Data Encoding) PlatformDesteği

(Interoperability)

BasicHttpBinding <basicHttpBinding> HTTP / HTTPS Text Var
NetTcpBinding <netTcpBinding> TCP Binary Yok
NetPeerTcpBinding <netPeerTcpBinding> P2P Binary Yok
NetNamedPipeBinding <netNamedPipeBinding> IPC Binary Yok
WSHttpBinding <wsHttpBinding> HTTP/HTTPS Text/MTOM Var
WSFederationBinding <wsFederationHttpBinding> HTTP/HTTPS Text/MTOM Var
NetMsmqBinding <netMsmqBinding> MSMQ Binary Yok
MsmqIntegrationBinding <msmqIntegrationBinding> MSMQ Binary Var
WSDualHttpBinding <wsDualHttpBinding> HTTP Text/MTOM Var

Buradaki tiplerden hangisini seçeceğimiz, geliştireceğimiz SOA (Service Oriented Architecture) modelindeki ihtiyaçlarımız doğrultusunda belirlenebilirler.

Şimdi isterseniz bir WCF Service projesi açarak inceleyelim.

WCF Service projesi açtığımızda bizi karşılayan önemli 3 dosya vardır bunlar IService.cs ,Service.cs ,web.config dosyalarıdır bu dosyalarda neler var bir bakalım.

IService.cs

Bu interface servis içersinde kullanılacak olan metotları property leri ve bunların contractlarının belirtildiği dosyadır 😉

using System;using System.Collections.Generic;

using System.Linq;

using System.Runtime.Serialization;

using System.ServiceModel;

using System.ServiceModel.Web;

using System.Text;

namespace WcfService1

{

// NOTE: You can use the “Rename” command on the “Refactor” menu to change the interface name “IService1” in both code and config file together.

[ServiceContract]

public interface IService1

{

[OperationContract]

string GetData(int value);

[OperationContract]

CompositeType GetDataUsingDataContract(CompositeType composite);

// TODO: Add your service operations here

}

// Use a data contract as illustrated in the sample below to add composite types to service operations.

[DataContract]

public class CompositeType

{

bool boolValue = true;

string stringValue = “Hello “;

[DataMember]

public bool BoolValue

{

get { return boolValue; }

set { boolValue = value; }

}

[DataMember]

public string StringValue

{

get { return stringValue; }

set { stringValue = value; }

}

}

}

 

 

Service.cs

Service.cs ise işlemlerimizin IService.cs dosyasındaki gibi tanımlanmış olan metotlar içersine yazacağımız dosyamızdır.

using System;using System.Collections.Generic;

using System.Linq;

using System.Runtime.Serialization;

using System.ServiceModel;

using System.ServiceModel.Web;

using System.Text;

namespace WcfService1

{

// NOTE: You can use the “Rename” command on the “Refactor” menu to change the class name “Service1” in code, svc and config file together.

// NOTE: In order to launch WCF Test Client for testing this service, please select Service1.svc or Service1.svc.cs at the Solution Explorer and start debugging.

public class Service1 : IService1

{

public string GetData(int value)

{

return string.Format(“You entered: {0}”, value);

}

public CompositeType GetDataUsingDataContract(CompositeType composite)

{

if (composite == null)

{

throw new ArgumentNullException(“composite”);

}

if (composite.BoolValue)

{

composite.StringValue += “Suffix”;

}

return composite;

}

}

}

 

Web.config

<?xml version=”1.0″?><configuration>

<system.web>

<compilation debug=”true” targetFramework=”4.0″ />

</system.web>

<system.serviceModel>

<behaviors>

<serviceBehaviors>

<behavior>

<!– To avoid disclosing metadata information, set the value below to false before deployment –>

<serviceMetadata httpGetEnabled=”true”/>

<!– To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information –>

<serviceDebug includeExceptionDetailInFaults=”false”/>

</behavior>

</serviceBehaviors>

</behaviors>

<serviceHostingEnvironment multipleSiteBindingsEnabled=”true” />

</system.serviceModel>

<system.webServer>

<modules runAllManagedModulesForAllRequests=”true”/>

<!–

To browse web app root directory during debugging, set the value below to true.

Set to false before deployment to avoid disclosing web app folder information.

–>

<directoryBrowse enabled=”true”/>

</system.webServer>

</configuration>

 

Umarım yararlı olur.

Bilgiyle Kalın

M.Zeki Osmancık

 

Samsung Galaxy S2 Android 4.1.2 Jelly Bean Kurulumu 500 343 mezo

Samsung Galaxy S2 Android 4.1.2 Jelly Bean Kurulumu

Merhaba arkadaşlar

Samsung Galaxy S2 cihazınıza Android 4.1.2 Jelly Bean işletim sistemini nasıl kurarsınız bunu adım adım anlatmak istiyorum.

Öncelikle en baştan söylemek isterim ki bu yükleme işlemi yarım kalırsa telefonunuz tekrardan açılmayabilir. Herhangi bir sorunda ben ve www.mzekiosmancik.com sorumlu değildir. tamamen kendi iradenizle kuruluma başlamalısınız.
Özellikle orjinal yazılım olduğu için telefonunuzu garantiden çıkarmaz onu söylemekte fayda var.Yükleme işlemini yapmanız için herhangi bir root veya kernel yüklemesine ihtiyacınız yok.

Şimdi adım adım kurulumu yapalım.

1) Odin dosyasını buradan indirip dosyayı zipten çıkarın.

2) I9100XXLSJ_I9100OXXLS1_OXX dosyasını buradan indirip dosyayı zipten çıkarın.
3) Odin’i çalıştırın
4) Samsung Galaxy S2 cihazınızı “Download Modu”na getirmeniz gerekiyor bunun için Açma Kapama + Home (Menü) + Ses kısma tuşlarına aynı anda uzunca basın
5) Galaxy S2 cihazınızı USB kablosu ile bilgisayarınıza bağlayın
6) Odin cihazınızı tanımlayana kadar bekleyin. Odin ekranındaki değişikliği göreceksiniz.
7) Sıra geliyor Odin’ e girilecek olan içeriği siteme tanıtmaya. Sırasıyla PDA, PHONE ve CSC başlıklarına ilgili dosyaları seçiyorsunuz.

PDA =  CODE_I9100XXLSJ.tar
PHONE =  MODEM_I9100XXLS6.tar
CSC =  CSC_HOME_OXX_I9100OXXLS1.tar

Resimde görülen ekranı elde ettiyseniz yüklemeye hazırsınız demektir 😀 hadi başlayalım….
galaxys2

9) Start tuşuna basın
10) Odin ekranı üzerinde PASS yazısını gördüğümüzde artık jelly bean kullanıma hazır demektir.
11) Tüm işlemler tamamlandıktan sonra Samsung Galaxy S2’nin yükleme işlemlerini tamamlamasını beklememiz gerekiyor biraz sabırlı olmalıyız çünkü bu işlem yaklaşık 5 dakika sürebilir.

Daha sonra Samsung Galaxy S2 telefonunuzda Jelly Bean kolaylığını yaşayabilirsiniz.

Kolay Gelsin 🙂

Bilgiyle Kalın

M.Zeki Osmancık

 

Iphone Programming – AlertView (MessageBox) 385 717 mezo

Iphone Programming – AlertView (MessageBox)

Iphone Programming – AlertView

Merhaba arkadaşlar

IOS programlama konusundada bazı küçük bilgiler vermek isterim sizlere. Basit örnek ile başlamak en doğrusu dye düşündüm ve sizlere genel adıyla MessageBox olarak geçen yapı olan AlertView ile Merhaba dünya yazdırarak IOS programlama dünyasına giriş yapmanızı sağlamak isterim 🙂

Öncelikle Xcode üzerinde yeni bir proje oluşturuyoruz.

6e794d81fe89343045753f0b44e06317

 

4666c6d2cf74864798b9eda0eb2604fd

 

Projemizi açtıktan sonra verdiğimiz isimde .xib  .h .m dosyaları bizleri karşılayacak. Bu dosyalar ne anlama geliyor peki ? xib bizim uygulamamızın tasarımının bulunduğu gösterildiği dosyadır,  .h dosyası temel değişken control event ve metotların tanımlanması gereken dosyadır.  .m dosyasıda asıl iş yapan dosyadır m dosyasında h dosyası içersine yaptığıız tanımlamaları yapabilir event leri kullanabiliriz.

iphone programming alertview 3

Önce tasarım dosyası olan xib dosyası üzerine bir button kontrolü atıp daha sonra h dosyasına tanımlamamızı yaptıktan sonra artık kod yazmaya hazırız.  m dosyasını açıp AlertView kodlarımızı yazmaya başlayabiliriz.

iphone programming alertview 1

Artık IOS dünyasına merhaba deme zamanı geldi 😀 projemizi çalıştırıp Iphone Simulator ü çalıştırıp bakıyoruz ne yapmışız acaba diye 😀

iphone programming alertview 1

 

Umarım yararlı olur

Bilgi sizlerle olsun 😉

M.Zeki Osmancık

E-Book Gallery for Microsoft Technologies 100 100 mezo

E-Book Gallery for Microsoft Technologies

If you want to learn about Microsoft technologies you can use  E-Book Gallery for Microsoft Technologies 🙂

Click Here…

I hope that is helpful

May the knowledge be with you

M.Zeki Osmancık

Windows 8 Store App _ Youtube Video on Media Element 935 593 mezo

Windows 8 Store App _ Youtube Video on Media Element

Hi everyone

I want to show you to how to play a youtube video on Windows 8 Store App Media Element control. We have to use 3th part references called “MyToolKit”. MyToolKit is have a class named Youtube. That class help us to geting video and play on our control.  You can take a look in here http://mytoolkit.codeplex.com/ .

In this site they said that if you want to use this class the NuGet Package is recomended.

Ok lets start and play any video on Windows 8 Store App

First of all we have to install MyToolKit on our project. Open NuGet Package Manager from Tools->Library Package Manager -> Manage Nuget Packages for Solution

Select Online and searh MyToolKit

Thats our package we find it. We have to click on Install button and select assembly which one will use this.

MyToolKit references will add on our project after select an assembly and click OK button.  That was the diffucult side. Lets check out the simple side of our project.

I added a MediaElement control on my StoreApp xaml page and give a name property…

<Pagex:Class=”youtube.MainPage”xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”

xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”

xmlns:local=”using:youtube”

xmlns:d=”http://schemas.microsoft.com/expression/blend/2008″

xmlns:mc=”http://schemas.openxmlformats.org/markup-compatibility/2006″

mc:Ignorable=”d”>

<Grid Background=”{StaticResource ApplicationPageBackgroundThemeBrush}”>

<MediaElement Name=”mediaYoutube” HorizontalAlignment=”Left” Height=”522″

Margin=”152,201,0,0″ VerticalAlignment=”Top” Width=”1111″/>

<Button Name=”btnPlay” Content=”Play” HorizontalAlignment=”Left” Margin=”904,71,0,0″

VerticalAlignment=”Top”/>

<TextBox Name=”txtYoutubeID” HorizontalAlignment=”Left” Margin=”529,77,0,0″

TextWrapping=”Wrap” Text=”TextBox” VerticalAlignment=”Top” Width=”370″/>

</Grid>

</Page>

 

 

Last thing we have to do write a little code on btnPlay_Click event

private async void btnPlay_Click(object sender, RoutedEventArgs e){var url = await YouTube.GetVideoUriAsync(txtYoutubeID.Text, YouTubeQuality.Quality480P);

mediaYoutube.Source = url.Uri;

}

 

Thats it. Now we have to select a youtube video and get the video id then play on our project then watch the video.

if youtube link is http://www.youtube.com/watch?v=hNpQpjyc9C8 . this videos ID is going to be “hNpQpjyc9C8” . If we write it to our textbox we can watch this video on our Windows Store App.

Like this.

You can download the source code in here http://sdrv.ms/YfrMdG

I hope that is helpful

May the knowledge be with you

M.Zeki Osmancık

Visual Studio 2012 Update 1 Now Available 474 642 mezo

Visual Studio 2012 Update 1 Now Available

S. Somasegar today announced the availability of Visual Studio 2012 Update 1.

He said that this update is so important for developers because this isn’t just about bug fixes, though it contains quite a few of those to measurably address issues reported through Connect, UserVoice, and Windows Error Reporting.  This is also delivers a wealth of new functionality into Visual Studio 2012.  The new functionality in Update 1 primarily spans four areas of investment: Windows development, SharePoint development, agile teams, and continuous quality.

You can download Visual Studio Update 1 in  here (see “Visual Studio 2012 Update 1” under the “Additional software” section)

I hope that is helpful

May the knowledge be with you

M.Zeki Osmancık

Windows 8 Store Apps Using Localization 935 590 mezo

Windows 8 Store Apps Using Localization

Hi Friends
In this article i want to explain about localization on Windows Store Apps. If you built an application and want to make this application world wide, you have to add multi-language in your application.
So lets start the sample about using localization on Windows Store Applications.
First of all we need to add *.resw files to project. This file is string resource files and we need to add resw file for every language.

I added 3 *.resw file in my project for English German and Turkish languages in different folders with same name.

Then i modifying my *.resw files for every language:
Resources.resw file in ”en” folder

Resources.resw file in ”gr” folder

Resources.resw file in ”tr” folder

In my MainPage.xaml page i place 1 combobox 3 TextBlock and 2 Textbox.

 

<Pagex:Class=”localizationsample.MainPage”xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”

xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”

xmlns:local=”using:localizationsample”

xmlns:d=”http://schemas.microsoft.com/expression/blend/2008″

xmlns:mc=”http://schemas.openxmlformats.org/markup-compatibility/2006″

mc:Ignorable=”d”>

 

<Grid Background=”{StaticResource ApplicationPageBackgroundThemeBrush}”>

<TextBlock Name=”txtUserName” HorizontalAlignment=”Left” Margin=”316,304,0,0″ TextWrapping=”Wrap” Text=”User Name” VerticalAlignment=”Top” FontSize=”36″/>

<TextBlock Name=”txtPassword” HorizontalAlignment=”Left” Margin=”316,353,0,0″ TextWrapping=”Wrap” Text=”Password” VerticalAlignment=”Top” FontSize=”36″/>

<ComboBox Name=”cmbLanguage” HorizontalAlignment=”Left” Margin=”591,38,0,0″ VerticalAlignment=”Top” Width=”205″ SelectionChanged=”ComboBox_SelectionChanged_1″/>

<TextBlock HorizontalAlignment=”Left” Margin=”381,38,0,0″ TextWrapping=”Wrap” Text=”Choose Language” VerticalAlignment=”Top” FontSize=”22″/>

<TextBox HorizontalAlignment=”Left” Margin=”553,304,0,0″ TextWrapping=”Wrap” VerticalAlignment=”Top” Width=”333″/>

<TextBox HorizontalAlignment=”Left” Margin=”553,353,0,0″ TextWrapping=”Wrap” VerticalAlignment=”Top” Width=”333″/>

 

</Grid>

</Page>

 

 

 

Write very simple code for add items in combobox.

cmbLanguage.Items.Add(“en”);cmbLanguage.Items.Add(“tr”);cmbLanguage.Items.Add(“gr”);

When you select a language on combobox ,language file will change. For doing this process we must write some code on combobox selectionChanged event.

var context = new ResourceContext();var selectedLanguage = cmbLanguage.SelectedItem;if (selectedLanguage != null){var lang = new List<string>();lang.Add(selectedLanguage.ToString());

context.Languages = lang;

var resourceStringMap = ResourceManager.Current.MainResourceMap.GetSubtree(“Resources”);

this.txtUserName.Text = resourceStringMap.GetValue(“string1”, context).ValueAsString;

this.txtPassword.Text = resourceStringMap.GetValue(“string2”,context).ValueAsString;

}

ResourceContext reads the *.resw files. If we read our language files we can read ids of contents and call them where ever we want.

Our language changer is ready just test.

I hope that is helpful

May the knowledge be with you

M.Zeki Osmancık

Linq To SQL _ Insert Update Delete 570 571 mezo

Linq To SQL _ Insert Update Delete

Merhaba arkadaşlar

Bir önce ki makalede sizlere LinqToSql ile nasıl Select sorguları çalıştırabileceğiniz ile ilgili bazı bilgiler vermiştim. Bu sefer ise Insert Update ve Delete işlemleri ile ilgili bazı bilgiler vermek istiyorum. Projemiz içersine dbml dosyasını eklediğimizi varsayarak devam etmek istiyorum. Daha önceki örnekteki form tasarımına ek olarak sadece 3 Button 2 Textbox ve Label nesnelerini ekleyip bu tasarım üzerinden devam edeceğim.

Insert

Insert işlemini gerçekleştirebilmek için Kaydet butonumuzun Click olayı içersine sadece şu kodları yazmamız yeterli olacaktır.

NorthwindDataContext db = new NorthwindDataContext();
Category eklenecek = new Category();
eklenecek.CategoryName = TextBox1.Text;
eklenecek.Description = TextBox2.Text;
db.Categories.InsertOnSubmit(eklenecek);
db.SubmitChanges();
Doldur();

Bu işlemde bir dataContext örneği oluşturduktan sonra Northwind üzerine insert işlemi için gerekli olan alanları belirttiğimiz Category tipindeki nesneyi doldurup bu nesneyi tüm bilgileri ile birlikte kaydetmesini söylüyoruz.

Güncelleme ve silme işlemlerinden önce ufak bir noktaya değinmek sanırım yerinde olacaktır. SQL sorgularında yaptığımız gibi bizim burada mutlaka bir ID vermemiz gerekiyor yani güncellemek istediğimiz verinin kesin adresini yolunu belirtmeliyiz. Biliyorsunuz ki SQL kodları ile Update veya Delete komutları yazdığınızda “Where” ile ID sini belirtmezseniz tüm kayıtlar için güncelleme veya silme işlemini gerçekleştirir. Bu yüzden önce nasıl ID belirtiriz ona bakalım.  ID yazan yere 3 5 yazmayacağız tabi ki. DataGridView üzerinden bir veri seçip onu yerleştirdiğimiz Textbox ve Label lar üzerine yazdırdıktan sonra işlemlerimize devam edeceğiz.

Kayıt Seçme İşlemi

Bunun için DataGridView üzerine listelediğimiz kayıtlardan herhangi bir tanesine çift tıkladığımızda işin gerçekleşmesi için CellContentDoubleClick olayı işimizi görebilir ve içersine yazmamız gereken kodlar ise şunlar:

Bu adımdan sonra artık listelenen kayıtlar arasından birine çift tıkladığımızda tüm bilgileri text ve label nesnelerine yazılacak bizde güncelleme veya silme yaparken bu bilgilerden yararlanabiliriz.

NorthwindDataContext db = new NorthwindDataContext();
Category secilecek = db.Categories.FirstOrDefault(x => x.CategoryID == 
Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value.ToString()));
lblID.Text = secilecek.CategoryID;
txtName.Text = secilecek.CategoryName;
txtDesc.Text = secilecek.Description;

Update

Güncelle butonumuzun Click olayına ise şu kodları eklememiz yeterli :

NorthwindDataContext db = new NorthwindDataContext();
Category guncellenen = db.Categories.FirstOrDefault(x=>x.CategoryID ==Convert.ToInt32(lblID.Text));
guncellenen.CategoryName = txtName.Text;
guncellenen.Description = txtDesc.Text;
db.SubmitChanges();
Doldur();

Burada daha önce seçip bir label üzerine yazdırdığımız ID yi kullanarak TextBox lar üzerindeki güncel verileri alıp update işlemini gerçekleştiriyoruz.

Aynı şekilde delete işlemi içinde yazmamız gereken kodlar çok basit şöyle ki :

NorthwindDataContext db = new NorthwindDataContext();
Category silinen = db.Categories.FirstOrDefault(x => x.CategoryID == int.Parse(lblID.Text));
db.Categories.DeleteOnSubmit(silinen);
db.SubmitChanges();
Doldur();

Birde burada her işlemden sonra kullandığımız datagridview içersine bilgileri dolduran Doldur metodu var onuda sizlerle paylaşayım.

db = new NorthwindDataContext();
var sonuc = from x in db.Categories
select new
{
x.CategoryID,
x.CategoryName,
x.Description
};
dataGridView1.DataSource = sonuc;

Bu kodları butonlarımızın Click olaylarına yazdıktan sonra herhangi bir hataya karşı önlem almadığımız için işlem sıramız şöyle olmalı öncelikle form açılacak ve kayıtlarımız sıralanacak , ardından bir kayıt eklemek için textboxlar doldurularak Kaydet butonuna basılacak ve Doldur metodu ile kayıtlar yeniden datagridview üzerinde görüntülenecek ardından bir kayda çift tıklayarak bilgilerini text ve label üzerine yazdıracağız ve Güncelle butonu ile güncelleme ve Sil butonu ile seçilen kaydın silinme işlemlerini gerçekleştireceğiz.

Umarım yararlı olur

Bilgiyle Kalın

M.Zeki Osmancık

 

LinqToSQL _ Select 992 608 mezo

LinqToSQL _ Select

Merhaba arkadaşlar bu yazımızda sizlere LinqToSQL nesnesini en basit şekilde nasıl kullanırız bunu göstermek istiyorum. Öncelikle LinqToSQL nesnesini kullanabilmek için ilk yapmamız gereken şey projemiz içersine bu nesneyi eklemektir.

Bu nesneyi eklediğimizde ve Server Explorer üzerinde ekliyeceğimiz bir veritabanı varsa buradan tabloları sürükleyip bıraktığımızda kendisi otomatik olarak bu tablolar ile alakalı bazı class ları oluşturur bize sadece kullanmak kalır 😉

Bu işlemi tamamladıktan sonra geldi sıra kod yazma işlemine acaba bu LinqToSQL den nasıl veri çekip form üzerindeki nesnelerde gösterebiliriz.

Select sorgusu nasıl yapılır ?

Select işlemini farklı şekillerde yapabilirsiniz bunun bir kaç farklı yolu mevcut. Hepsinde aynı sonucu alırız yani “SELECT * FROM CATEGORIES ” sorgusunun sonucunu alırız 😉

NorthwindDataContext db = new NorthwindDataContext();var sonuc = from x in db.Categoriesselect x;dataGridView1.DataSource = sonuc;

 

NorthwindDataContext db = new NorthwindDataContext();var sonuc = from x in db.GetTable<Category>()select x;dataGridView1.DataSource = sonuc;

 

NorthwindDataContext db = new NorthwindDataContext();dataGridView1.DataSource =  db.GetTable<Category>();

Select sorgusuna Where kriteri ekleme işlemi ?

Select sorgusune Where kriterini eklemek için yani “SELECT * FROM CATEGORIES WHERE CATEGORYID = 1” sorgusunun LinqToSQL de yazılması işlemide şu şekillerde olabilir.

NorthwindDataContext db = new NorthwindDataContext();var sonuc = from x in db.Categorieswhere x.CategoryID ==1select x;dataGridView1.DataSource = sonuc;

 

NorthwindDataContext db = new NorthwindDataContext();var sonuc = from x in db.GetTable<Category>()where x.CategoryName.StartsWith(“B”)select x;dataGridView1.DataSource = sonuc;

Gelen sorguyu listeleme işlemi yani Order By anahtar kelimesinin yaptığı işi nasıl yapacağız şimdi kısa bir kodla bunu görelim 😉

       NorthwindDataContext db = new NorthwindDataContext();var sonuc = from x in db.GetTable<Category>()where x.CategoryName.StartsWith(“B”)orderby x.CategoryID ascendingselect x;dataGridView1.DataSource = sonuc;

 

       NorthwindDataContext db = new NorthwindDataContext();var sonuc = from x in db.Categorieswhere x.CategoryName.StartsWith(“B”)orderby x.CategoryID descendingselect x;dataGridView1.DataSource = sonuc;

 

Bu kodlar sadece select için kullanabileceğimiz basit kodlar. Bir sonraki yazıda Inner Join, Left, Right Join gibi yapıların nasıl kullanılabileceğine bakacağız.

Umarım Yararlı Olur

Bilgiyle Kalın.

M.Zeki Osmancık

Windows 8 Metro App _ ListView 955 577 mezo

Windows 8 Metro App _ ListView

Merhaba arkadaşlar

Metro uygulamalardaki data nesnelerinden biri olan ListView nesnesini kısa ve basitçe tanıtmak istiyorum. ListView basit bir listbox gibi çalışır. İçersine List veya DataTable tipinde nesneler verebilmek mümkün. Çok çok basit bir örnek ile bu nesnenin nasıl çalıştığına dair bir örnek yaparak bakalım… Öncelikle formumunuzun üzerine bir ListView nesnesi atarak özelliklerini belirliyoruz. Formun üzerindeki görünümü.


 XAML kodunda ListView görünümü.

 Formumuz üzerine bir listview ekledikten sonra içersindeki elemanların nasıl görüneceği ile alakalı bir  işlem yapabiliriz dümdüz bırakıp içersinde default olarak bir nesne görüntülenmesini sağlayabiliriz. Şimdi çok basit olarak string tipinde bir liste doldurup listview in ItemSource özeliği ile bu listview i nasıl doldurabileceğimizi görelim.

Öncelikle bir liste dolduralım.

List<string> liste = new List<string>();liste.Add(“Deneme 1 “);liste.Add(“Deneme 2 “);liste.Add(“Deneme 3 “);liste.Add(“Deneme 4 “);

Ardından sadece tek bir satır kod ile yanı ListView in ItemsSource özelliğine atama yaparak nasıl bir görüntü elde ediyoruz görelim .

lstListe.ItemsSource = liste;

Bu atamayı yaptıktan sonra sıra geldi projeyi çalıştırmaya bakalım nasıl bir görüntü elde ediyoruz.


En basit manada ListView nesnesinin kullanımı  bu şekilde oluyor.

Umarım yararlı olur….

Bilgiyle Kalın… 😉

M.Zeki Osmancık

Merhaba Windows 8 Metro Style Apps 1024 652 mezo

Merhaba Windows 8 Metro Style Apps

Merhaba arkadaşlar

Bu yazımda sizlere beklenen işletim sistemi Windows 8 ile birlikte gelen ve kullanması çok keyifli olan Metro Application ile alakalı bir başlangıç yazısı sunacağım.

Bilindiği gibi  Windows  8 daha çok tablet pc ler için ideal bir işletim sistemi olarak  tasarlandığından  dokunmatik ekrana uygun olan ve tam ekranı kaplaya uygulamalar yani Metro Style uygulamalar geliştirilmeye başlandı.

.Net 4.5 ile birlikte gelen Metro Style uygulamalar gerçektende kullanımı kolay görseli başarılı uygulamalar olduğundan ileride Windows tabletlerde ve mobil cihazlarda yaygınlaştığında kullanım kolaylığı nedeniyle tercihleri kendi üzerine çekebilir.

Metro Style Uygulamalar tam ekran çalışan , çalışılan cihaza ve dokunmatik ihtiyaçlarına göre ayarlanabilen uygulamalar olarak tanımlanabilir.

Metro Style Uygulamalar sadece anlattıklarımız kadarmı peki derseniz cevabımız hayır olacaktır,çünkü metro style uygulamalar arka tarafta suspend modunda çalışırlar ve böylelikle pil ve performansı etkilememiş olurlar aynı zamanda 3 şekilde çalışabilme imkanlarıda mevcut Full Screen ,Snap Up ve Filled ‘ dır…

Şimdi sizlere Visual Studio 2012 de .Net Framework ile birlikte Metro Style bir uygulamaya nasıl merhaba deriz bir bakalım.

Öncelikle proje açarken karşımıza Windows Metro Style  adında bir proje grubu geliyor ve bu grup içersinde Metro Style bir uygulama geliştirebilmek için gerekli olan nesneler mevcut.

Dilerseniz boş bir sayfa dilerseniz hazır referans olarak kullanılabilecek küçük hazır projelerde eklenmiş açıp kullanmaya başlayabileceğimiz projeler içersine .

Blank App projesi açıldığında karşımıza gelecek olan boş siyah zeminli bir sayfa ve alt kısımda XAML kodları olacaktır. Bu sayfa tıpkı Windows Forms uygulamalarındaki Form gibi tek farklı XAML kodları ile dizayn edilmesi.

Yeni bir proje açtım ve üzerine Windows Forms uygulamalarında aşina olduğumuz Label kontrolünün XAML versiyonu olan TextBlock kontrolünü sayfanın ortasına bıraktım. Properties penceresinden text ve font özelliklerini ayarlayarak ilk uygulamamın nasıl görüneceği ile ilgili bir fikir sahibi olabileceğim artık. Eğer Windows 8 kullanmaya başlamışsanız bu projeyi kendi makinanız üzerinde rahatça çalıştırabilirsiniz. “Ya Windows 7 kullanıyorsak?” diye sormayın denemedim 😀 Ondada muhtemelen simulatoru kullanıyorsunuz…

Uygulamayı çalıştıracak olan Run butonuna geldiğimizde burada Local Machine, Simulator adında seçenekler var bunlardan biri tıpkı Windows Phone 7 uygulamalarında olduğu gibi bir tablet simulator u açar ve uygulamalarımızı orada çalıştırır. Bu simulator aşağıdaki resim gibi bir şey 🙂

Ardından simulator çalıştığına göre benim uygulamamıda gösterecektir birde ona bakalım nasıl bir şey olmuş benim sayfanın göbeğine yerleştirdiğim TextBlock.

Windows 8 Metro App uygulamasına ilk adımı atmış bulunuyoruz hayırlı olsun.

Bu konuyla alakalı daha pek çok makale çok yakında….

Bilgiyle Kalın…

M.Zeki Osmancık

 

 

Sınırsız Ağaç Yapısı ve Treeview Kullanımı 563 595 mezo

Sınırsız Ağaç Yapısı ve Treeview Kullanımı

Merhaba arkadaşlar

Bu yazımda çokça bahsedilen çokça kullanılacak olan bir kontrol yapısı ve bunun database den gelen verilerle nasıl çalıştığını göstermek isterim sizlere…

Bahsettiğimiz kontrolümüz Treeview denilen bir nesne bu nesne bizlere ağaç yapısı bulunan bilgileri rahatlıkla ve tek ekranda görmemizde bizlere kolaylık sağlayan bir kontrol peki ama nasıl bu kontrole birşeyler ekler kullanılabilir hale getirebiliriz…

Öncelikle bir DB ye ve tabloya ihtiyacım var sırası gelmişken birde SQL tablosunda sınırsız ağaç yapısından bahsetmeden olmaz heralde.  Şekildeki gibi bir veritabanı oluşturdum…

 

Buradaki mantık aslında basit eğer bir kayıt root kayıtsa yani kök kayıtsa o zaman AltKategoriID si NULL olmalıdır. Eğer girdiğimiz kategori başka bir kategori altında duruyorsa o halde hangi kategori üst ise AltKategoriID sine o kaydın ID değerini girmeliyiz. Zaten resimdeki birbirine bağlı yapıda bunu temsil eder. Birde girdiğimiz verileri inceleyin bakalım nasıl birşey varmış 😀

Burada Elektronik root yani ana kategori Bilgisayar onun altında bulunduğu için Bilgisayar kaydının AltKategoriID si Elektronik kaydının ID sine eşit Bilgisayarın altında olanlarda Bilgisayar kaydının ID sine sahip olacaktır böylelikle alt alta uzayıp giden sınırsız bir ağaç yapısına sahip olabiliriz.

Peki tablomuz tamam verilerimizide girdik e hani Treeview  derseniz onuda şöyle özetleyelim

Yeni bir Windows formuma Treeview ve button nesnemi yerleştirdim

Ardından button nesnesinin Click olayına gelerek dedim ki  :

DataRelation baglanti;private void btnListele_Click(object sender, EventArgs e){SqlConnection cnn = new SqlConnection(“Data Source = .; Initial Catalog = Deneme; User = sa; Password = 1234567?;”);SqlDataAdapter adp = new SqlDataAdapter(“Select * From Kategoriler”,cnn);DataSet ds = new DataSet();

adp.Fill(ds,”Kategoriler”);

 

baglanti = new DataRelation(“baglan”,ds.Tables[“Kategoriler”].Columns[“KategoriID”],

ds.Tables[“Kategoriler”].Columns[“AltKategoriID”]);

 

ds.Relations.Add(baglanti);

 

foreach (DataRow dr in ds.Tables[“Kategoriler”].Rows)

{

if (dr[“AltKategoriID”] == DBNull.Value)

{

TreeNode root = new TreeNode(dr[“KategoriAdi”].ToString());

root.Tag = dr[“KategoriID”];

tvAgac.Nodes.Add(root);

AltKategorileriGetir(dr,root);

}

}

tvAgac.ExpandAll();

}

 


Kodlara bakacak olursak klasik bir ADO.net ile verilerimi alıp bir DATASET e eklemişim biliyorsunuzki DATASET nesnesi içine birden

fazla DATATABLE nesnesi barındırabilen bir nesne yani sanal veritabanı gibide düşünebiliriz aslında. Peki database de bağlantılar olurda bunda olmazmı ? Olmamı tabikide olur bu bağlantıyıda DATARELATION nesnesi sağlar işte tam burada bende verilerimi çektikten sonra içindeki hangi veri ile hangi verinin eşleşeceği yani hangisinin ana ID hangisinin ona bağlı olan Altkategori olduğunu belirtip bağlantımı tamamladım. Ardından bir foreach ile Dataset içersine attığım Datatable içindeki satırları tek tek almaya başladım ve bu foreach içersinde sadece AltKategorisi NULL olanları aldım yani Root olan kök olan kayıtları aldım ve Treeview nesneme ekledim.

Peki bunun altında bişi yokmu ? Altındakini hatta onun altındaki kayıtları nasıl alacağız derseniz ondada bir metotun yardımını isteyip o metodu kendi içersinde çağırarak işimizi çözeceğiz…

 

private void AltKategorileriGetir(DataRow dr,TreeNode pNode){foreach(DataRow row in dr.GetChildRows(baglanti)){TreeNode childNode = new TreeNode(row[“KategoriAdi”].ToString());childNode.Tag = row[“KategoriID”];pNode.Nodes.Add(childNode);

AltKategorileriGetir(row,childNode);

}

}

 

Bu metodu çalıştırırkende biraz once kontrol ettiğimiz root kaydı ve oluşturulan TreeNode nesnesini parametre olarak yolladıktan sonra oluşturduğumuz bağlantı nesnesi ile Altkategorideki değerleri kontrol ediyoruz ve varsa yine TreeNode oluşturup mevcut Node altına ekliyoruz. Vee sonra kategori ve altındaki elemanları tek tek karşıma geliyor

Umarım yararlı olur

Görüşmek Üzere

M.Zeki Osmancık

 

GDI 2 _ Grafik Çizimi 426 487 mezo

GDI 2 _ Grafik Çizimi

Merhaba arkadaşlar

GDI ile ilgili önceki yazımızda neyin nasıl kullanılacağını görmüştük bu sefer bu GDI metotlarını kullanarak nasıl hesaplamalar yaparız. Seçim sonuçlarında hep görürüz bir pasta dilimi üzerinde partilerin oyları görünür ve yüzde olarak pasta grafikde bir dilim kaplarlar . Bakalım bizim partilerden hangisi ne kadar oyla pastanın neresinde duracak ???

Öncelikle WindowsForm uygulamamız üzerine 2 TextBox 1 Button ve 1 PictureBox atıyoruz.

Bu görüntüyü elde ettikten sonra yapmamız gerek pek de birşey kalmadı aslında sadece kod bloğunu açıp yazmak kalıyor 😀

string[] partiler = new string[10];int[] oylar = new int[10];int siraNo, toplamOy;

Öncelikle yukardaki gibi değerlerimi tutacağım dizilerimi  ve hesaplama yapabilmek içinse değişkenlerimi GLOBAL olarak tanımladım.

Daha sonra buton içersinde değerlerimi alıp bunları grafiksel olarak picturebox içersine çizdireceğim.

Öncelikle 10 elemanlı bir dizi oluşturduğum için dizinin boyutundan çok eleman girilmesin diye bir kontrol yapıyorum. Ardından oylar içersine değer eklerken int değerlerin girildiğinden emin oluyorum…

            if (siraNo == 10){MessageBox.Show(“10 partiden fazla olamaz???”);return;}try

{

oylar[siraNo] = int.Parse(textBox2.Text);

}

catch (Exception)

{

MessageBox.Show(“Oylarda Hata Var”);

return;

}

 

Hem partiler hemde oylar aynı indeks numaralarına yazdırılacak .

            partiler[siraNo] = textBox1.Text;toplamOy += oylar[siraNo];siraNo++;Graphics grp = this.pictureBox1.CreateGraphics();grp.Clear(pictureBox1.BackColor);

Random rnd = new Random();

int i, basAci=0,yayAci ,boy=0;

Color renk;

HatchBrush firca;

Toplam oy sayısını hesaplıyoruz.  Ardından nesnelerimizi tanımlıyoruz.  Picturebox üzerine çizim yapabilmek için Graphics nesnesi oluşturuyoruz. Picturebox da ne varsa siliyoruz. Color değişkeni ve desenli çizim için HatchBrush nesnesi oluşturuyoruz.

Index numarasına göre tüm dizi içersindeki elemanları alıp grafiksel olarak çizebilmek için bir for döngüsü oluşturuyoruz.

            for (i = 0; i <= siraNo-1; i++){yayAci = 360 * oylar[i] / toplamOy;renk = Color.FromArgb(rnd.Next(255), rnd.Next(255), rnd.Next(255));firca = new HatchBrush((HatchStyle)rnd.Next(50), renk);grp.FillPie(firca,0,80,200,200,basAci,yayAci);

 

grp.DrawString(“% ” + boy.ToString(), new Font(“Tahoma”, 8, FontStyle.Bold), Brushes.Black, 5, 80 + i * 20);

grp.FillRectangle(firca, 260, 80 + i * 20, 18, 18);

 

grp.DrawString(partiler[i] + ” = ” + oylar[i].ToString(), new Font(“Tahoma”, 8, FontStyle.Bold), Brushes.Black, 290, 80 + i * 20);

basAci += yayAci;

}

 

Çizdireceğimiz FillPie nesnesinin kaç derecelik bir açı ile çizileceğini hesaplamak için yay _aci değişkenini kullanacağız.  Random renk elde edebilmek için Color.FromArgb metodunu kullanarak rastgele renk değerlerini veriyoruz. HatchBrush üzerindede random olarak desen gelebilmesi için gerekli tanımlamayı yapıyoruz. Ardından küçük bir kare rengin hangi partiye ait olduğunu göstermek için hemen yanınada partinin adı ve oy sayısı  yazdırdıktan sonra en son tanımladığım başlangıç açısı bas_Aci değişkenini çizdiğim şeklin yay_Aci değeri kadar arttırıp yeni çizilecek olan pie için başlangıç konumunu belirliyoruz.

Ve son olarak karşımıza çıkan görüntü :

Böylelikle Graphics nesnesindeki değerlerin nasıl işimize yarayacağı biraz daha kafamızda oturmuş olur umarım…

Görüşmek Üzere.

M.Zeki OSMANCIK

GDI 401 376 mezo

GDI

Merhaba arkadaşlar

GDI  = Graphical Design Interface  ile ilgili ufak bir bilgi vermek istiyorum sizlere. GDI, Windows uygulamaları üzerinde çizim işlemleri gerçekleştirmemize olanak tanıyan sınıflardır.

Bu sınıflar ile Windows formlar üzerine veya print nesneleri ile kağıt üzerine bazı çizimler yapabilmemiz mümkün.

Öncelikle bir çizim yapabilmek için de ilk gereken bir kağıt yada çizim yapılacak alandır öncelikle bunu belirtmemiz gerekiyor

Form üzerine çizim yapabilmek için:Graphics grp = this.CreateGraphics();

 

PictureBox üzerine çizim yapabilmek için:

Graphics grp = pictureBox1.CreateGraphics();

 

Çizim alanımızı oluşturduktan sonra ile form veya picturebox üzerine ne çizdireceğimizi seçmemiz gerekiyor ama bunu seçmeden öncede çizmek için gerekli olan kalem veya içi dolu bir şekil çizeceksek fırça gerekiyor. Bunu da şu şekilde tanımlayabiliriz;

Pen kalem = new Pen(Color.Blue);kalem.Width = 5;

 

Brush firca = new SolidBrush(Color.Red) ;

 

Bu şekilde tanımladığımızda kalem ve fircanin özelliklerini değiştirebilir durumda oluyoruz. Kalemin kalınlığı vs gibi özelliklerini ayarlayabiliyoruz. Ya bunlara ihtiyacımız yoksa bunlarla uğraşmadan nasıl yaparız derseniz onun çözümüde şu şekilde…

Pens.Blue 

Brushes.Red

 

Hemen belirteyim bu şekilde kullanım tek başına mümkün olmuyor ancak gerekli kodlar içersinde bu şekilde kullanabilirsiniz biraz aşağıda bunun örneklerini göreceksiniz zaten 😉

Çizim alanı tamam kalem tamam firça tamam eee ne kaldı geriye ??? Sadece çizmek kaldı 😉

Çizim yapabilmek içinde ilk başta örneğini (instance) aldığımız Graphics nesnesini kullanacağız. Ve içersindeki çizim metotları ile form üzerine şekiller çizeceğiz….

grp.DrawLine(Pen nesnesi, X1, Y1, X2, Y2);grp.DrawLine(kalem, 50, 50, 150, 50);

Formun üzerine Line çizerken verilen koordinatlar 2 tane x ve y noktalarıdır bu iki noktayı belirtiriz ve DrawLine metodu bizim yerimize bu iki noktayı birleştirir ve şekildeki gibi bir görüntü ortaya çıkar.

Birde Dikdörtgen Yuvarlak bişiler çizelim.

grp.DrawEllipse(Pen nesnesi, X, Y, Genişlik, Yükseklik);grp.DrawEllipse(kalem, 100, 100, 100, 100);

 

grp.DrawRectangle(Pen nesnesi, X, Y, Genişlik, Yükseklik);

grp.DrawRectangle(Pens.Blue, 200, 100, 100, 100);

 

Bu şekilleri çizerkende gerekli olan veriler önce bir kalem sonra X ve Y noktası ardından çizilecek olan şeklin yükseklik ve genişlik bilgileridir.

Son olarak Pie yani kekden bahsetmek istiyorum 😀 evet sizi keklemiyorum pasta grafik olarak adlandırdımız şekli nasıl çizeriz ona bakalım…

grp.DrawPie(Pen nesnesi, X, Y, Genişlik,Yükseklik , Başlangıç Açısı, Yay Açısı); 

grp.DrawPie(kalem, 50, 200, 100, 100, 0, 270);

Şimdi birde bunların içi dolu olanları nasıl yazılıyor aralarında ne fark var görelim 😉

grp.FillEllipse(firca, 100, 100, 100, 100);grp.FillRectangle(firca, 200, 100, 100, 100);

grp.FillPie(Brushes.Purple, 50, 200, 100, 100, 0, 270);

 

 

 

GDI nesnesi sadece bu işemi yarar diyebilirsiniz 😀 Bu sadece başlangıç bir sonraki yazıda GDI nin asıl nasıl kullanılabildiğini göreceğiz 😉

Görüşmek Üzere…

 

 

JavaScript XmlHttpRequest 657 588 mezo

JavaScript XmlHttpRequest

Merhaba arkadaşlar bu yazımda sizlere Javascript ile yapılabilen çok yararlı bir o kadar performanslı hep görüp acaba nasıl dediğimiz bir yapıyı anlatmaya çalışacağım…
XML HTTP REQUEST Javascript ile herhangi bir server’a http request yapmanıza olanak veren guzel bir objedir. Gelen cevabı parse edip sayfadaki bazi öğeleri değistirebilir ve sayfa refresh olmadan bir cok şey yapilabilir. Yani işin kısası Postback olmadan bilgileri çekebilme işlemini gerçekleştirmemize yardımcı oluyor. Örnek olarak Google da yazdığımız bir harf tamamlanarak öneriler halinde geliyor. Sayfanın yenilendiğini görmüyoruz sadece önerilerin belirdiği gözlemleniyor ama bu verilerde bir veritabanından geliyor o derece hızlı 😉


Bu teknolojiyi Internet Explorer, Mozilla Firefox,Opera ve Safari destekliyor.Xml Http Request İnternet Explorer ‘da ActiveX Control , Firefox ‘ta ise DOM (Document Object Model)’ in bizzat parçasidir. Internet Explorer 7’ den itibaren native olarak desteklenmektedir. Bu sayede de artik ActiveX ‘i kapatilmis browserlarda dahi calisabilmektedir.
Bu yapının avantajlarını şöyle sıralayabilirim :
• En önemli artısı, sayfa yenilenmediği için değişken olmayan diğer kısımların sunucuda yeniden işlenip sunucuyu yorması engellenir;
• Kullanıcıda tekrar yüklenmediğinden bant genişliği boşa harcanmaz, aynı zamanda kullanıcı tarafında sayfalarda daha hızlı işlem yapılır.
• Sayfayı yenilenmeden içeriğimizi alıyor olmamız, web uygulamamıza bir masaüstü uygulama görünümü katar.
• Web uygulamalarının tek sıkıntısı, hızlı ve pratik çalışamıyor olmanızdır. Web yazılımları masaüstündeki yazılımlar gibi pratik kullanılan şeyler olmalıdır
• XMLHttpRequest aslında javascript ile sunulmuş bir kolaylıktır. Web sitesinin eş zamanlı olarak arka planda çalışan olaylarını takip eder. XML CSS ve javascript ile sonucun anında görülmesini sağlar.
• XMLHttpRequest istemci tarafında (Client Side) çalışır. Birden fazla asenkron web sayfasına postback ve yenileme yapmadan istekte bulunabilir ve gelen cevapları istekte bulunanlara iletir.

ONREADYSTATECHANGE
Sunucuya bir istek gönderilmesinden sonra, sunucudan dönen veriyi alabilecek bir işleve ihtiyacımız var. onreadystatechange özelliği sunucunun yanıtını işleyecek olan fonksiyonu tutar.
Aşağıdaki kod hem boş bir fonksiyon tanımlar hemde onreadystatechange özelliğini ayarlar

xmlHttp.onreadystatechange=function(){ // Buraya kod yazacağız}

 

READYSTATE ÖZELLİĞİ
Sunucu yanıtının durumunu tutar. readyState her değiştiğinde onreadystatechange fonksiyonu çalıştırılır. Sunucudan gelen yanıtın tamamlandığını (veriyi alabileceğimiz durumu) kontrol etmek için onreadystatechange işlevimize bir If ifadesi ekleyeceğiz:

xmlHttp.onreadystatechange=function(){ if(xmlHttp.readyState==4)

{ // Veriyi sunucu yanıtından al }
}

 

RESPONSETEXT ÖZELLİĞİ
Sunucudan gelen veri responseText özelliği ile alınabilir.
Kodumuzda “time” form değişkenimizin değerini responseText değerine eşitleyeceğiz:

xmlHttp.onreadystatechange=function(){

if(xmlHttp.readyState==4)

{

document.myForm.time.value=xmlHttp.responseText;

}
}

XMLHttpRequest nesnesini etkin şekilde kullanmanın 2 yolu mevcut:

Send the Request
Bu yöntem bir XMLHttpRequest nesnesi yaratıp olayları dinlemesi için atamaktır.
Basit olarak bir xhr nesnesi yaratıyoruz:

var xhr = new XMLHttpRequest();

Daha sonra oluşturduğumuz nesneyi onreadystatechange ile olayları dinlemesi için görevlendirmek:

xhr.onreadystatechange = myCallback;

Ardından open() metodunu çağırıyoruz.

xhr.open(‘GET’, ‘somefile.txt’, true);

ilk parametre HTTPRequest tipini belirler (GET,POST,HEAD,……) Get ve Post en sık kullanılanlardır. Get deyimini istekle birlikte çok fazla data göndermemiz gerekmiyorsa kullanırız. Bunun aksi durumlarda POST kullanırız.
İkinci parametre bizim istekte bulunduğumuz URL dir. Örnekte belirtilen bir text dosyasıdır sayfamızla aynı adres içerisinde bulunur.
Son parametremizde isteğin boolean değerdir isteğin eş zamanlı olmaması durumunu true veya false değer ile belirler.
Son adım olarak isteği göndermektir.

xhr.send(”);

Send() metodu istekle birlikte herhangi bir datayıda içerebilir. Get ile gönderilen isteklerde bu boş bir stringdir çünkü data URL olarak belirttiğimiz dosya yada adrestedir. POST ile gönderilen isteklerde bir query string mevcuttur key=value&key2=value2.
Bu noktada istek gönderilir ve kodlar diğer bir göreve atanabilir. Callback fonksiyonu isteğimizim serverdan geri gelmesi ile çağırılır.

Process the Response
Olay dinleyici cevap geldiğinde uyarır ve kodlarımız gelen cevap ile yararlı işler yapar her gelen cevabı boşa kontrol ve ya işleme sokmak zorunda kalmayız.
Readystatechange olayı ile bir dinleyici yerleştirdik XHR nesnesinin readystate özelliğini çağırdık. Readystatechange olayı çalıştığında her zaman değişen bir özelliktir .
Readystate özelliği şu değerleri takip eder
0—uninitialized
1—loading
2—loaded
3—interactive
4—complete = istek geri geldi ve işlendi.
Readystate özelliğini 4 olarak ayarladığımızda bunun anlamı istek geri geldi ve işleme girdi demektir. 4 özelliği sadece bununlada kalmayarak HTTP istek durum kodlarınıda inceler. Olmayan bir URL gönderildiğinde alınadan HTTP istek kodu 404 (Dosya bulunamadı) hatasıdır.
Eğer dönen durum kodu 200 (ok ) ise bu geçerli bir adres bulunduğunu XHR nesnesinin çalışabileceğini belirtir.

function myCallback() {if (xhr.readyState < 4) {

return; // not ready yet

}

if (xhr.status !== 200) {

alert(‘Error!’); // the HTTP status code is not OK

return;

}

// all is fine, do the work

alert(xhr.responseText);

}

Önce istekte bulunduğumuz sayfayı yeni içerik olarak almış olacağız ve bunu ister sayfada görüntüleyebilir istersekte bir takım hesaplamalarda kullanabiliriz.

Hadi bununla ilgili bir uygulama yapalım kafalarda nasıl çalışır bu sorusu olmasın 😉
XMLHTTP REQUEST yöntemiyle databasede bulunan kategorilere ait ürünleri hızlı bir biçimde ekranda görüntüleyeceğiz.
Öncelikle XmlHttpRequest nesnemizi yaratmak için bir function yazıyoruz.

 

Daha sonra oluşturduğumuz bu nesneye get ile parametre yollayabileceğimiz ve geri dönüş sağlayabileceğimiz başka bir function daha yazıyoruz.

Daha sonra Handler ile istekte bulunduğumuz ürün grubunun kategori id sini birlikte yollayabileceğimiz başka bir function daha yazıyoruz.

Sayfamızın CodeBehind kısmındada Repeater nesnesi ile databasedeki “Categories” tablosundaki kategori isimlerini buton nesneleri ile birlikte oluşturuyoruz.

Son olarak sayfamızı görüntülediğimizde hem butonlarla bir seçim yapabiliyoruz hemde Dropdown menü ile istediğimiz Kategoriye ait ürünleri görüntüleyebiliyoruz.
Hiç beklemeden sanki masaüstü uygulamasıymışcasına hızlı ve pratik

Umarım Yararlı olur 😉

M.Zeki Osmancık

Wamp Server Çalıştırmak 243 181 mezo

Wamp Server Çalıştırmak

Merhaba arkadaşlar bu yazımda başıma gelen ve çözümünü biraz zaman harcayarak bulabildiğim bir bilgiyi sizlerinde vakit kaybetmemeniz için paylaşmak istiyorum.

Öncelikle Wamp server neden SQL server ve visual studio olan bir bilgisayarsa çalışmaz bunu cevaplayalım. Sebebi hepsinin aynı portu dinlemeleridir.  SQL server Integration service ve IIS bu portu dinlediği için wamp server hizmet veremez.

Bu sorunu aşabilmek için olaya en başından bir bakalım.

Öncelikle kurulum nasıl oluyor ona bakalımn çoğu yerde var ama ben yinede fazla bilgi göz çıkartmaz diyerek başlıyoruz kurmaya…

Kurulurken bizden default bir web browser exe sini belirtmemiz gerekiyor. Eğer Firefox varsa size bu tarayıcıyı varsayılan olarka ayarlamak isteyip istemediğinizi soracak karar sizin artık…

Kurulum biterken localhost ve domain ismi sorar bunlar orada yazdığı gibi kalabilir. Tabi buda size kalmış bir durum isterseniz değiştirebilirsinizde.

Ve kurulum tamamlandığında sağ altta bu programın çalıştığını fakat turuncu bir renkte yani offline durumda olduğunu görüyoruz. Bunun sebebi Sql server içersindeki bazı servislerin ve IIS servislerinin dinledikleri portlarla aynı portları kullanmaya çalıştığından online olamıyor. Peki ne yapmak lazım 😀

Bunun için wamp klasörü  içersinde  yani tam olarak  C:\wamp\bin\apache\Apache2.2.17\conf adresinde httpd.conf dosyasını notepad ile açıyoruz .

Ardından bu dosya içersinde “Listen 80” yazan satırı bularak 80 rakamını herhangi bir rakam yapabilirsiniz. Mesela ben 88 yaptım.

Bu işlemden sonra notepad i kaydedip kapatıyoruz ve ayarların geçerli olabilmesi için wamp server üzerinde Restart All Services  seçeneğini seçerek yeniden başlamasını sağlıyoruz.

Sonunda WAMP Server kullanıma hazır .

Tek bir ayrıntı var çalıştırma işlemi içersinde sadece port numarasını belirtmemiz gerekiyor Örneğin:

http://localhost:88/

http://localhost:88/phpmyadmin/

Umarım yararlı olur.

M.Zeki Osmancık…

SQL _ Stored Procedure 600 545 mezo

SQL _ Stored Procedure

Merhaba arkadaşlar bu yazımızda Sql içersinde bulunan ve hayat kurtaran Stored Procedure konusuna değineceğiz.

Bir amaca ulaşmak için takip edilen yol ve yöntem tanımından yola çıkılarak, bir prosedür herhangi bir işlevi yerine getirebilmek için yazılan kodların bir paket içersinde tutulmuş halidir diyebiliriz.

Stored procedure kullanmanın bize sağladığı yararlardan kısaca bahsetmek gerekirse :
• Çalışırken bazı planlamaların doğru olarak yapılmasını sağlar ve tekrar tekrar kullanılabilir bir yapıdır.
• İçersine yazılan sorgulara parametrelendirme özelliği katar.
• Uygulamalar  arasında kullanılabilir.
• Güvenli data giriş çıkış ve düzenlemesi sağlar.
• Daha az network bandwidth kaynak kullanımı sağlar.
• Job olarak tanımlanabilir ve schedule edilebilir.
• Database objelerine daha güvenli erişim olanağı tanır.
Stored procedure bileşenleri parçalara ayırır yani parsing işlemi gerçekleştirir.
Yani ilk olarak ; Veritabanı içersinde view table vb. nesnelere gönderme yapan referanslar varsa geçerli olup olmadıklarını (nesnenin ve iznin olup olmadığı) kontrol eder.Kontrollerden geçen SP nin adı sysobject tablosuna kodları ise syscomments tablosuna kaydedilir.
Bu işlemlerle birlikte derleme işlemi yapılır. Normalizasyon işlemleri olarak da anılan bu işlemler sonucunda, ağaç şeması elde edilir. Bu şema da sysprocedures tablosunda saklanır.
Stored Procedure herhangi bir anda çağrıldığında, ilk kez çalışıyorsa bu işlemler gerçekleştirilir. İlk defa çağrılmıyorsa, kontrol, sorgulama ağacı oluşturma işlemleri yapılmaz ve oldukça hızlı bir şekilde Stored Procedure’ün derlenmiş haliçalışır. Bundan dolayı Stored Procedure’ler derlenen nesnelerden biri olarak bilinir.

Stored Procedure Oluşturmak

CREATE PROC [ EDURE ] prosedür_adıAST-SQL ifadeleri

Değişiklik Yapmak

ALTER PROC [EDURE] prosedür_adıAST-SQL ifadeleri

Bir Stored Procedure’de değişiklik yapabilmek için önce kaynak kodunun alınması ve bir Query ekranına kopyalanıp düzenlenmesi gerekir.

Stored Procedure’ü Silmek

DROP PROC  sahip.prosedür_adı

Var olan bir Stored Procedure’ü silmek için DROP komutunu kullanmak gereklidir.

DROP komutundan sonra Stored Procedure’ün sahibinin adı ve Stored Procedure’ün adı yazılmalıdır.

Değer Alan Stored Procedure’ler

Stored Procedure’lerin daha etkin kullanılabilmesi ve işlevsel bir hale gelebilmesi için dışarıdan değer almalarına ihtiyaç duyulur. Bu nedenle girdi parametreleri (Input Parameter) kullanılır.

Değer Alıp-Veren Stored Procedure’ler

Değer alıp-veren stored procedure ler, query’den gönderilen değerleri alıp istenilen işleme tabi tuttuktan sonra elde edilen sonucu tekrar Query’e gönderen prosedürlerdir. Buişlem için OUTPUT parametresi kullanılır.

RETURN Deyimi

Prosedürden tek bir tamsayı değer döndürmek için bir başka seçenek olarak RETURN ifadesi kullanılabilir. Bu şekilde OUTPUT parametresini hem prosedür içinde hem de prosedürün çağrıldığı yerde tanımlamak zorunda kalınmadan doğrudan değer döndürülebilir.

Store Procedureler  kısaca bu kadar…

Umarım yararlı olur.

Tekrar görüşmek üzere…

M.Zeki Osmancık

XML ile Telefon Defteri Yapalım 3!! 618 381 mezo

XML ile Telefon Defteri Yapalım 3!!

Projemize kaldığımız yerden devam ediyoruz 😀
Kaydet işleminden farklı olarak mevcut olan kaydı düzenlemek için düzenleme butonumuzun Click olayına ilgili kodları yazıyoruz.

protected void Button2_Click(object sender, EventArgs e){

xmlDoc = new XmlDocument();

xmlDoc.Load(dosya);

XmlNode secilen = xmlDoc.SelectSingleNode(“Kisiler/Kisi[Ad='” + ListBox1.Text + “‘]”);

secilen[“Ad”].InnerText = TextBox1.Text;

secilen[“Soyad”].InnerText = TextBox2.Text;

secilen[“Telefon”].InnerText = TextBox3.Text;

xmlDoc.Save(dosya);

TextBox1.Text = “”;

TextBox2.Text = “”;

TextBox3.Text = “”;

TelefonlariYukle();

}

Farklı bir işlem yapmadık aslında. XmlNode iledüğümü belirledik ve InnerText ile o düğüm içersinde var olan veriyi almış olduk. Yeni değerleride yine InnerText ile yerine yazmış olduk. Bütün işlemleri element içersindeki düğümlerdeki bilgiler ile yaptık yeni kayıt için yeni düğümler ekledik mevcut düğümler ekledik. Silme işlemi içinde tabiki düğüm silmemiz gerekecek bunun içinde Sil butonuna…

protected void Button3_Click(object sender, EventArgs e){

xmlDoc = new XmlDocument();

xmlDoc.Load(dosya);

XmlNode secilen = xmlDoc.SelectSingleNode(“Kisiler/Kisi[Ad='” + ListBox1.Text + “‘]”);

xmlDoc.DocumentElement.RemoveChild(secilen);

xmlDoc.Save(dosya);

TextBox1.Text = “”;

TextBox2.Text = “”;

TextBox3.Text = “”;

TelefonlariYukle();

}

RemoveChild ile ChildNode dediğimiz seçilen düğümü silme işlemini gerçekleştirebiliyoruz.

Peki 3 temel işlemimiz bitti birde bu Xml sayfası içersinde arama yapmak istersek ?

Bunun içinde en alt kısma yerleştirdiğimiz Textbox ve Button ile bu işi çözebiliriz . Bu işlem içinde …

protected void Button4_Click(object sender, EventArgs e){

ListBox1.Items.Clear();

XPathDocument xp = new XPathDocument(dosya);

XPathNavigator xn = xp.CreateNavigator();

string sorgu = “Kisiler/Kisi[Ad='”+TextBox4.Text+”‘]/Ad”;

XPathNodeIterator ni = xn.Select(sorgu);

while (ni.MoveNext())

{

ListBox1.Items.Add(ni.Current.ToString());

}

}

İşte Xml i veritabanı olarak kullanarak yaptığımız çok basit bir telefon defteri 😉

Güle Güle kullanın 😀

Projeyi İndirebilmek için Tıklayın!!

Bilgiyle Kalın …

M.Zeki Osmancık

XML ile Telefon Defteri Yapalım 2!! 675 378 mezo

XML ile Telefon Defteri Yapalım 2!!

Bir önceki yazının devamı olarak bu yazımızdada projemizi geliştirmeye devam ediyoruz.

Listbox a kayıtlarımızı ekledikten sonra listbox üzerinde bir kaydı seçtiğimizde bilgilerin ilgili textbox lara yazılmasını istiyoruz bunun içinde Listbox kontrolünün SelectedIndexChanged olayına ilgili kodları yazıyoruz.

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e){xmlDoc = new XmlDocument();

xmlDoc.Load(dosya);

XmlNode secilen = xmlDoc.SelectSingleNode(“Kisiler/Kisi[Ad='” + ListBox1.Text + “‘]”);

TextBox1.Text = secilen[“Ad”].InnerText;

TextBox2.Text = secilen[“Soyad”].InnerText;

TextBox3.Text = secilen[“Telefon”].InnerText;

}

Bu işlemden sonra projemizde bir adım daha atmış oluyoruz ve her kaydı seçtiğimizde o kayıtla ilgili tüm bilgiler ilgili textboxlara yazılıyor. Bu bize Update işleminde çok büyük kolaylık sağlayacak.

İlk olarak Kaydet butonunu işlevine kavuşturalım. Ve buton1 in Click olayına ilgili kodları yazalım.

protected void Button1_Click(object sender, EventArgs e){xmlDoc = new XmlDocument();

xmlDoc.Load(dosya);

XmlElement xe = xmlDoc.CreateElement(“Kisi”);

XmlNode ad = xmlDoc.CreateNode(XmlNodeType.Element,”Ad”,””);

XmlNode sAd = xmlDoc.CreateNode(XmlNodeType.Element, “Soyad”, “”);

XmlNode tel = xmlDoc.CreateNode(XmlNodeType.Element, “Telefon”, “”);

XmlAttribute xa = xmlDoc.CreateAttribute(“Tur”);

xa.Value = “Cep”;

tel.Attributes.Append(xa);

ad.InnerText = TextBox1.Text;

sAd.InnerText = TextBox2.Text;

tel.InnerText = TextBox3.Text;

xe.AppendChild(ad);

xe.AppendChild(sAd);

xe.AppendChild(tel);

xmlDoc.DocumentElement.AppendChild(xe);

xmlDoc.Save(dosya);

TextBox1.Text = “”;

TextBox2.Text = “”;

TextBox3.Text = “”;

TelefonlariYukle();

}

XmlElement: Xml dosyası içersinde bulunan bir elemanı temsil eder.

XmlNode: Eleman içersindeki her bir düğümü temsil eder.

XmlAttribute : Düğümlerin sahip olduğu özellikleri temsil eder.

Görüldüğü üzere Xml dosyamızı bir database gibi kullanarak kayıtları görüntüleyip yeni kayıtları Xml üzerine yazabiliyoruz.

Bilgiyle Kalın…

M.Zeki Osmancık

XML ile Telefon Defteri Yapalım !! 410 256 mezo

XML ile Telefon Defteri Yapalım !!

Merhaba arkadaşlar bir önceki yazımızda XML nedir nasıl kullanılır ile alakalı bilgi vermiştik.Bu yazımızda sizlerle C# ile Xml ortak yapımı bir proje yapacağız. Bu web projemizde Xml dosyasını bir database gibi kullanarak kayıt yapacağız, kayıt okuyup, sileceğiz.

Öncelikle resimdeki gibi  4 TextBox , 4 buton, 1 Listbox dan oluşan formu tasarlıyoruz.

Bu formu tasarladıktan sonra projemizle birlikte kullanacağımız Xml dosyamızı yaratarak içersindeki düğümleri oluşturmamız gerekiyor.

Bu xml dosyası bizim veritabanımız olacak.

Genel hazırlıkları tamamladıktan sonra kodlama kısmına geçelim. İlk olarak bilmemiz gereken bir nesnemiz var  XMLDocument  nesnesi bu nesne xml dosyasını  önbellek üzerinde çalışılabilir hale getirerek işimizi kolaylaştırır.Önce bu nesneyi global seviyede tanımlayarak başlayalım.

XmlDocument xmlDoc;

Bu nesneden sonra yine tüm proje içersinde kullanabilecek bir değişken olan xml dosya yolunu tutacağımız bir string değişken tanımlayarak sayfanın yüklenmesi sırasında bu yolu değişkene atamalıyız.

dosya = Server.MapPath(“Telefon.xml”);

Dosya değişkenine yolu atadıktan sonra XML dosyamız üzerindeki kayıtları okuyarak Listbox nesnemiz üzerine yazdıracak bir metot yazalım.

void TelefonlariYukle(){ListBox1.Items.Clear();

XPathDocument xp = new XPathDocument(dosya);

XPathNavigator xn = xp.CreateNavigator();

string sorgu = “Kisiler/Kisi/Ad”;

XPathNodeIterator ni = xn.Select(sorgu);

while (ni.MoveNext())

{

ListBox1.Items.Add(ni.Current.ToString());

}

}

XPathDocument : Xpath data modeli kullanılan okuma yöntemlerinde Xml dosyalarından daha hızlı okuma sağlar.

XPathNavigator : Verilerin üzerinde bir izleme oluşturur ve XML belgesi içinde bu izlenecek olanları görüntüler.

XPathNoteIterator:Seçilen düğümler üzerinde bir yineleme sağlar.

Bu işlemi yaptıktan sonra listbox nesnesi üzerine Xml dosyası üzerindeki Ad düğümüne yazılmış kayıtlar tek tek gelecektir.

Bu kadar değil devam edecek 😉

Bilgiyle Kalın…

M.Zeki Osmancık

MSSQL Database Terminolojisi 150 150 mezo

MSSQL Database Terminolojisi

Merhaba arkadaşlar bu yazımızda veritabanı ile alakalı bazı terimleri sizlere açıklamaya çalışacağım.

VeriTabanı (Database):Verilerin fiziksel hafızada saklandığı  datafiles ve bu verilerin olaylarının loglandığı log dosyalarından oluşan en az 2 dosyadan oluşan yapıları SQL Server VeriTabanı (Database) olarak değerlendirir.

Schema (Şema):Bir veritabanı içersinde yaratılan farklı  schemalar içersinde aynı isimde tablolar ,store procedureler gibi farklı nesneler yaratabilmek mümkün oluyor böylelikle database içersindeki nesneleri gruplara ayırarak çalışmayı kolaylaştırabiliyoruz.

Table (Tablo) :Günlük hayatta kullandığımız liste mantığı ile oluşturduğumuz nesnelerdir.Yani bir sınıf listesinden tutun alışveriş listesine kadar tüm listeleri tablo olarak tanımlayabiliriz. Teknik olarak bakarsakta satır ve sütunlardan oluşan veri saklayabilen veritabanının en temel nesnesi diyebiliriz.

ResultSet (Sonuç Kümesi): Bir seçme ve listeleme  işlemi gerçekleştiğinde bazen bir bazen birden fazla tablo kullanılarak hazırlanan ve veritabanı üzerinde mevcut olmayan tabloların hepsi birer sonuç kümesidir.

Row (Satır): Tablo üzerinde mevcut olan her bir kayıt bir satıra denk gelir.

Column(Sütun): Tablolarda dikey sütunların yanyana gelmesi ile meydana gelmiştir. Bir ürün tablosunu ele alacak olursan her ürün bir satır bu ürünün her bir bilgiside sütundur.

Field (Alan): Yapılandırılmış  bilginin her bir kısmını saklamak üzere yapılan tanımlamadır. Bu alanın uzunluğu ne kadar olacak harf ise ne kadar harf alabilir, rakam ise kaç basamaklı olacak bu türden soruları yanıtlamak için bir alan tanımlamak ve bu alanada bir veri tipi belirtmemiz gerekir.

Data Type (Veri Tipi): Bilgisayar kayırları yapısal olarak tutarken onların yapıları hakkında fikir sahibi olabilmek için bazı özellikleri önceden tanımlanması gerekir. İşte bu özellikleri belirten tipler veri tipleridir.

Record (Kayıt) : Yapılandırılmış verilerden her birine bir kayıt denir.  Yani alan bilgileri ile birlikte her bir satır kayıttır.

Constrait (Kısıtlayıcı) : Herhangi bir alan içersine girilebilecek bilgileri zorlayıcı kurallara denir. Birincil Anahtar Kısıtlayıcı , Tekill Kısıtlayıcı , Default Kısıtlayıcı, Yabancı Anahtar Kısıtlayıcı, Kontrol Kısıtlayıcı olmak üzere 5 tür kısıtlayıcı vardır.

Default  : Tabloda bir alana değer girilmediğinde bu alan için standart olarak önceden bizim belirttiğimiz bir veri veya verinin ilk giriş işlemi esnasında otomatik olarak  bu sütuna atanması.

Rule (Kural):Bir alana girilebilecek verilerin bir kurala bağlı olmak üzere girilmeye zorlanması için yapılan tanımlamalara denir.

Indexes (İndeksler) : Bir kaç yüz kayıttan oluşan bir tablo üstüne kayıt arama işlemi veritabanı yönetim sistemi için oldukça basit bir işlemdir ancak bu sayı milyonlara çıktığında çeşitli kriterlere bağlı olarak organize edip sıralayacak bu sayede hızlı erişimi sağlayacak yapılar vardır. Veriler fiziksel olarak düzenleniyorsa CLUSTERED INDEX (Kümelenmiş), fiziksel olarak düzenlenmiyorsa UNCLUSTERED  INDEX(Kümelenmemiş) adını alır.

View : Bazen hazırlanan sorguların veya elde edilen sonuç kümelerinin bir tablo gibi davranması istendiğinde View kullanılarak bu sanal tablo oluşturulur.

Synonim : View den farklı olarak tablolar dışındaki store procedureler gibi nesnelerede takma adlar verebilmemizi sağlar.

Stored Procedure (Kaydedilmiş Yordamlar) : SQL kodları çalıştırılmadan önce veritabanı yönetim sistemi tarafından yorumlanır ve derlenir  ardından çalıştırılmak istenen kod çalışır ve sonuç kümesi elde edilir. Bu işlem sırasındaki yorumlama ve derleme kısmı veritabanı yönetim sistemine ek bir yük getirir. Bunu hızlandırabilmek için derlenmiş ve yorumlanmış ifadeleri kullanabiliriz. Bu derlenmiş ifadeler Stored Procedurelerdir. Genellikle veri erişim katmanı olarak kodlanırlar.

Cursor (İmleç) : Veritabanında bulunan kayıtlara satır satır erişmek istediğimizde bu işi bizim yerimize imleçler halleder. İmleçler genellikle veritabanı üzerindeki verilere baım yapılırken kullanılırlar.

Trigger (Tetikleyici) : Triggerler veritabanı üzerindeki veriler ile ilgili ekleme, silme , düzenleme gibi işlemler yerine veya bu işlemlerden sonra otomatik olarak yapılacak olan işlemlerin belirtildiği yapılardır.  Veri bütünlüğünü sağlamak amacıyla kullanılırlar.

UDF User Defined Functions (Kullanıcı Tanımlı Fonksiyonlar) : UDF ler genellikle karmaşık işlemlerin  tek bir sefer fonksiyon olarak kaydedilip daha sonra sadece isimleri ile çağrılabilen bir yapıdır. Stored Procedure lerden tek farkı select sorguları içersinde onların bir parçası gibi kullanılabilmeleridir.

User Defined Types  (Kullanıcı Tanımlı Tipler): SQL server 2005 den itibaren 8K yi aşmamak için kendi gereksinimlerimizi  giderebilmek için oluşturduğumuz kendine özgü metotlarıda içersinde bulundurabilen tiplerdir.

Umarım yararlı olur

Sonraki yazılarda görüşmek üzere …

M.Zeki Osmancık

TSQL _ Select 387 260 mezo

TSQL _ Select

Merhaba Arkadaşlar . Bu yazımızda TSQL den bahsetmek istiyorum.  Veritabanı programları ile uğraşanların yada biz programcıların sürekli kullandığı hatta bazen baş belası olabilen bu SQL neymiş ona bakalım.

SQL (Structured Query Language) yani Yapılandırılmış  Sorgulama Dili anlamına gelen veritabanı sorgulama dilidir. SQL, düzeltilmesi veya değiştirilmesi istenen bilgileri açıkça belirtmeye izin veren ve yerine getirilebilecek başlıca işlemleri tanımlamamızı sağlayan bir komut takımıdır

Sql deki kodları :

Veri İşleme Dili – DML (Data Manipulation Language )

Veri Tanımlama Dili – DDL (Data Definition Language)

Veri Kontrol Dili  – DCL(Data Control Language)

Olarak gruplayabiliriz.

Bu gruplar içersinde hangi kodlar var peki?

Veri İşleme Dili – DML (Data Manipulation Language )

SQL Veri İşleme Dili veri girmek, değiştirmek, silmek ve verileri almak için kullanılan DML komutlarının tümüdür.

SELECT : Veri seçmek

DELETE : Veri silmek

UPDATE : Veri güncellemek

INSERT : Veri girmek

Veri Tanımlama Dili – DDL (Data Definition Language)

SQL Veri Tanımlama Dili verilerin tutulduğu nesneler olan tabloların yaratılmasını, silinmesini ve bazı temel özelliklerinin düzenlenmesini sağlar.

CREATE TABLE : Yeni bir tablo yaratmak

ALTER TABLE : Tabloda değişiklik yapmak

DROP TABLE : Tabloyu silemek

CREATE INDEX : Tabloda dizin oluşturmak

Veri Kontrol Dili  – DCL(Data Control Language)

SQL Veri Kontrol Dili bir veritabanı kullanıcısı veya rolü ile ilgili izinlerin düzenlenmesini sağlar.

GRANT :Kullanıcıya yetki vermek

DENY:Kullanıcı, grup veya rolü herhangi bir eylem için engeller.

REVOKE:Daha atanmış olan yetki veya engeli kaldırır.

Veritabanında Arama İşlemleri

Bir veritabanı içersindeki bilgilerimiz arasında belli kriterlere uygun yada bir rapor şeklinde bir arama gerçekleştirmek istiyorsak  kullanmamız gereken kod  Select olmalıdır.

Select ifadesi bir tablodan verileri seçmek için kullanılır. Elde edilen veriler sonuç kümesi olarak adlandırılır ve yine bir tablo görüntüsü şeklinde görüntülenir.

Söz dizimi:

Tüm alanları görüntülemek istemediğimiz zamanlarda kolon adı belirterek istenilen bilgiler çekilebilir.

SELECT <görüntülenmek istenen kolonlar> FROM <tablo adı>

Tüm alanları göstermek istediğimiz durumlarda kolon adı yerine * kullanılır.

SELECT * FROM <tablo adı>

Şimdi birlikte bir örnek yapalım. Northwind veritabanı içersinde bulunan herhangi bir tablonun bilgilerini önce tablo ismi ile sonra * ile çağıralım.

Verilerimizi tablo ismi ile yada * simgesiyle hepsini getiriyoruz. Süper ama bir sorun var  yada sorundan çok bir eksik demeliyiz belkide belli kriterlere uyan bilgileri getirmek istediğimde ne yapmam gerekir ?

Böyle bir durumdada yardımımıza WHERE yantümcesi koşuyor. WHERE yantümcesi görüntülemek istediğimiz verileri belirli bir kritere göre seçebilmemizi sağlar.

Yazımı

SELECT <sütun adı> FROM <tablo adı> WHERE <koşul(lar)>

Yani WHERE yantümcesi diyor ki bana istediğin kriteri söyle NERDE eşleşen varsa alayını getireyim sana diyor. Ama bu kriterleri hangi operatörlerle sağlarız birde onu belirtelimki sadece eşittir işaretinden ibaret olduğu anlaşılmasın.

İşte WHERE yantümcesi ile kullanabileceğimiz operatörler

Bizde teşekür edip bir örnek yaparak Where yantümcesi istediğini veriyoruz.

Bu kez müşteriler tablosundayız ve Madrid deki müşterilerimizi görmek istiyoruz.

Nasıl Where yantümcesi işini iyi yapıyor değilmi 😀

WHERE yantümcesinin  operatörlerinden bahsetmiştik orada herşey güzel anlaşılır matematiksel şeyler var ama 2 operatör varki kafa karıştırabilir.  LIKE ve BETWEEN  bunlarında nasıl kullanıldığına kısaca deyinelim

LIKE

LIKE kelimesi sütundaki değerlerin, joker karakterler kullanılarak oluşturduğumuz bir arama koşulu ile karşılaştırılmasını sağlar.

SELECT <kolon adı> FROM <tablo adı>

WHERE <aranacak sütun> LIKE <kriter>

Örnek arama koşulları:

LIKE ‘BR%’                          İlk iki harfi BR olan tüm kayıtlar

LIKE ‘Br%’                           İlk iki harfi Br olan tüm kayıtlar

LIKE ‘%een’                       Son üç harfi een olan tüm kayıtlar

LIKE ‘%en%’                      İçerisinde en ifadesi geçen tüm kayıtlar

LIKE ‘_en’                           Son iki harfi en olan üç harften oluşan tüm kayıtlar

LIKE ‘[CK]%’                       C veya K harfleriyle başlayan tüm kayıtlar

LIKE ‘[S-V]ing                    ing ile biten ve ilk harfi S ile V harfleri arasında olan dört harfli herhangi kelime

LIKE ‘M[^c]%’                   M ile başlayan ikinci harfi c olmayan tüm kayıtlar

BETWEEN..AND

BETWEEN … AND operatörü 2 değer ile belirtilen aralığı sınar. Bu değerler sayı, metin veya tarih olabilir.

SELECT <kolon adı> FROM <tablo adı>

WHERE <sütun adı> BETWEEN <değer 1> AND <değer 2>

Umarım faydalı olmuştur bir başka yazıda görüşmek dileği ile ….

M.Zeki Osmancık

SQL _ Views II 253 219 mezo

SQL _ Views II

Bir önceki yazımızda View nasıl yazılır ne işe yarar bunu öğrenmiştik . Bu yazımızda ise View içersinde yapabileceğimiz bir takım işlemleri öğreneceğiz.
Oluşturduğumuz View yapısı üzerinde değişiklik yapabilmek için Alter View; Silebilmek için Drop View cümlelerini kullanıyoruz.

Encryption:

Encryption cümlesi şifreleme anlamına gelir. Türkçe anlamınında belirttiği gibi view in kod içeriğini  yani view i oluşturduğumuz kodları görüntülenemez şekilde şifrelememizi sağlar. Bu işlemi geri almak istersek maalesef ki başarısız oluyoruz çünkü Decryption gibi bir çözüm yok. Encryption kullanılması gerekiyorsa mutlaka View in kaynak kodlarının başka bir kaynağa yedeklenmesi şiddetle tavsiye edilir.

With Encryption Yapısı

Create View viewAdiWith EncryptionAS

Select Sorgusu

Örnek olarak yukardaki gibi bir View oluşturduğumuzda veritabanındaki Views klasörü içersinden bu yarattığımız View i bulduğumuzda üzerinde bir kilit simgesinin olduğunu göreceğiz ve sağ tık ile düzenlemeye çalıştığımızda başarısız olacağız. Encryption ile kodlarımızı emniyet almış olduk. Daha öncede belirttiğim gibi bunu tekrar geri döndürecek kilidi çözecek bir kod yok.

Oluşturulan view ların içeriklerini görüntülemek için kullandığımız bir stored procedure var. Sp_helptext . bu SP bize belirttiğimiz View içeriğini gösterir. Öncelikle nasıl kullanıldığına bakalım sonra Encrypt ettiğimiz View i görüntüleyebilirmiyiz ona bakalım.

Görüldüğü gibi normal bir view içeriğini görüntüledik. Şimdide Encrypt edilmiş view a bakalım 😉

Schemabinding

Encryption kadar olmasada Schemabinding kelimesinin tercümesi zaten bu kodu hangi amaçlar için kullanabileceğimizi anlamaya yeterli oluyor. Eğer oluşturulacak View içersinde Schemabinding kullanılıyorsa View içersinde kullandığımız tabloların sütunlarını kilitlemiş oluruz. View içersinde Schemabinding kullanırken hatırlamamız gereken bazı kurallar var.

Öncelikli kural Schemabinding kullanacağımız View içersindeki sorgularımızda * işaretini kullanmamak bunun yerine tüm görüntülemek istediğimiz sütunları tek tek yazmamız gerekiyor.  Yazmazsak aşağıdaki gibi bir hata ile karşılaşacağız.

Ayrıca belirteceğimiz tablo isimlerini tabloismi.sütunismi olarak belirtmemiz gerekiyor. Son olarakda tablo ismi ile alakalı olan kuralımız var , tablo isminde ise dbo.tabloismi yazmamız gerekiyor ki tam olarak tabloyu ve sütunlarının yerini garantilemiş olalım.

Yukarıdaki örnekte View’de görüntüleyeceğimiz verilerin bulunduğu tablo ya da tablolardaki sütunların yapısında yapılacak herhangi bir değişikliği bu View’i silmedikçe ya da Schemabinding özelliğini View’imizden kaldırmadıkça yapamayacağız. Oldu da böyle bir işlemi Schemabinding özelliği varken yapmaya kalkıştık, SQL bize bu işlemin yapılamayacağını belirten bir hata mesajı verecektir. UrunleriListele isimli View için kullandığımız dbo.Products tablosundan ProductName sütununu kaldırmaya çalışalım.

WithCheckOption

Son olarakda sizlere View lerin WithcheckOption özelliğinden bahsetmek istiyorum.  Biliyorsunuz ki View ler içersinde tek bir tablo ile işlem yaptığımızda Insert,Update, Delete gibi işlemleri yapabiliyoruz. İşte bu işlemleri yapabildiğimiz view ler içersinde bazı kısıtlama yapabilmek için WithCheckOption özelliğini kullanırız. Yeni bir view ile bu özelliği inceleyelim.

Bu şekilde tek tablo üzerinde ve Where kelimesi ile kriter belirtilerek oluşturduğumuz View üzerine insert işlemi yapmaya kalktığımızda hata ile karşılaşıyoruz.

Umarım yararlı olmuştur sonraki yazılarda görüşmek üzere.

C# _ Methods 329 374 mezo

C# _ Methods


Merhaba arkadaşlar programları yazarken çoğu kez bir işlemi birden fazla yerde yapmamız gerekebilir.  Bu da her seferinde aynı kodu yazmak anlamına geliyor ve buda bize hem zaman kaybı  hemde kod karışıklığına neden olacaktır. Peki buna çözüm olarak yapacağımız işlemle alakalı koda bir isim versek ve kullanmak istediğimiz yerde o kadar kodu tekrar tekrar yazmayıp sadece ismiyle çağırsak nasıl olur ? Bence süper olur 😀

Metotlar işte bu işlemi yaparlar bir isimle çağırılarak içersindeki işlemleri tek satırda çağırabilmemizi sağlar. Metotları bir işci olarak düşünebiliriz biz ona ne iş yapması gerektiğini söyleriz ve ismini söylediğimizde o iş yapılır.

Örnek olarak bir öğrenci takip programı yaptığımızı düşünelim. Bu program için ilk önce düşünülmesi gereken form Öğrenci Kayıt formudur ve bu form basit olarak aşağıdaki gibi bi görüntüye sahip olacaktır.

En basit işlemi düşünecek olursak doldurulmuş olan textBox ların temizlenmesini istiyorum ve bunun için form içersine bir Temizle butonu yerleştiriyorum ve bu butonda bütün butonları temizliyorum.

private void btnTemizle_Click(object sender, EventArgs e){

txtAd.Clear();

txtSoyad.Clear();

txtTcNo.Clear();

txtDogumYeri.Clear();

txtVeliAd.Clear();

txtVeliSoyad.Clear();

txtTelefon.Clear();

}

Çalıştırdığımda kodlarımın çalıştığını görüyorum tüm alanlar temizleniyor ;).  Buraya kadar bir sorunumuz yok. Peki Kaydet butonuma bastığımda kaydetme işlemleri tamamlandıktan sonra kullanıcının yeni kayıt ekleyebileceğinide hesaba katıp kaydetme işleminden sonrada textBoxları temizlememiz gerekiyor. Aynı kodları tekrar yazarsak sorun kalmaz ama sadece bu kadarla kalmasak ve bu formda 2 den fazla yerde textBoxları temizlemek istesek her seferinde bu kodları tekrar tekrarmı yazıcaz ? Diyelimki yazdık program çalışıyor. Daha sonra okul yönetimi bizden 2 textbox daha koymamızı istedi. Biz yazdığımız Clear kodlarına 2 satır daha eklememiz gerekicek ama bir çok yerde kullandığımız için bir tanesini bile unutsak sıkıntı çıkacaktır. Bu kodları merkezi bir yerde toplasak ve ihtiyacımız olduğunda sadece ismi ile çağırsak nasıl olur ? 😉

Metotda değişiklik yaptığımızda tüm farklı yerlerde kullandığımız kodlarda değişecektir. Gelin nasıl yapıyoruz bu işlemi görelim . Bir Metot tanımlayarak aynı işlemi birden fazla yerde yapalım 😉

Void MetotAdi()

{

Yapılacak işlem

}

private void btnTemizle_Click(object sender, EventArgs e){

Temizle();

}

private void btnKaydet_Click(object sender, EventArgs e)

{

Temizle();

}

private void Temizle()

{

txtAd.Clear();

txtSoyad.Clear();

txtTcNo.Clear();

txtDogumYeri.Clear();

txtVeliAd.Clear();

txtVeliSoyad.Clear();

txtTelefon.Clear();

}

Görüldüğü gibi tek bir metodu yani işçimi sadece adını çağırarak işimi yaptırabiliyorum. 😉

Void metotlar örnekteki gibi sadece içersinde tanımlanan işi yapar. Geriye bir değer döndürmezler.

Metot içersinde yapılan işlem sonucu geriye bir değer döndürmek istiyorsak geriye dönen değer tipinde bir metot oluşturmamız gerekir. Yani işçimize işini yap ama bana yaptığına dair bilgi getir diyoruz. J

Örnek olarak iki sayıyı toplayarak sonucu geri deger olarak döndüren bir metot yazalım.

private void btnTopla_Click(object sender, EventArgs e){

MessageBox.Show(Topla().ToString());

}

int Topla()

{

int sayi1 = 5;

int sayi2 = 6;

int sonuc = sayi1 + sayi2;

return sonuc;

}

Gördüğümüz gibi içeride yapılan işlemin sonucu metodun tipinde olmak zorunda.

Birde içeriye değer gönderebildiğimiz metot tipleri varki buda metot – işçi metaforunu tamamlayan unsurlardan biz işçimizin eline malzemeleri veriyoruz ona sadece o malzemelerle ona söylenmiş olan işi yapmak kalıyor. Ve yine bize bu malzemelerle yaptığı işin sonucunu dönmek zorunda.

private void btnTopla_Click(object sender, EventArgs e){

MessageBox.Show(Topla(5,6).ToString());

}

int Topla(int sayi1 , int sayi2)

{

int sonuc = sayi1 + sayi2;

return sonuc;

}

Ne kadar kolay değilmi ? 😉

Bir sonraki yazımızda görüşmek üzere.


C# _ Diziler _ Foreach Döngüsü 595 199 mezo

C# _ Diziler _ Foreach Döngüsü


Merhaba arkadaşlar bu yazımızda da dizileri anlamaya çalışacağız.  Bu yazı sonunda dzi nedir , nasıl tanımlanır dizilerdeki boyut dizilerin metotları ve foreach döngüsü ile alakalı bilgi sahibi olacaksınız.

Daha önce değişkenler ile ilgili bir yazımız vardı. Hatırlarsak değişkenler program içersinde bize geçiçi süre gerekli olan değerleri tutabildiğimiz yapılardı örneğin int sayi = 5; diyerek 5 sayısını sayi değişkeninde tutabiliyordum. Peki bu sayi değişkeninde birden fazla değer tutmam gerekirse bunu gerçekleştirebilirmiyim ? Cevap değişkenlerle hayır ama Dizilerle evet.

Sizinde anlayacağınız gibi dizi değişkenleri, aynı tipte birçok veriyi bir arada tutmayı sağlar. Benzer işlemlerde kullanılan değişkenler bir dizi altında listelenebilir. Yani ben sayi değişkenimi dizi olarak tanımlarsam o zaman birden fazla değeri içersinde tutabilirim.

Dizilerin tanımını yaptıktan sonra gelin bu dizi nasıl birşeymiş nasıl yazılırmış ona bir göz atalım.  Dizi tanımları veritiplerinin yanında [] simgeleri ile yapılır.

<veri tipi> [] dizi ismi = new <veri tipi> [dizi eleman sayısı]
String[] isimler;İnt[] sayilar;

Float[] paralar;

Byte[] yaslar;

Dizilerin kaç eleman içereceği, dizi tanımlanırken ya da daha sonra belirtilebilir. Şu şekilde tanımlanabilirler:

int[] sayilar = {3, 8, 2, 6};

int[] sayilar = new int[6]{4, 2, 5, 6, 7, 0};

int[] sayilar = new int[5];

Dizilerin indis numaraları 0 dan başlar ve devam eder. Orneğin isimleri tutacağımız bir dizi tanımladık:

string[] isimler = new string[4];

değerlerini atarken yapacağımız işlem şu olacaktır.

İsimler[0]=”Zeki”;

İsimler[1]=” Yudum”;

İsimler[2]=”Ali”;

İsimler[3]=” Orhan”;

Küçük bir dizi uygulaması yapalım. Bir dizi ve elemanlarını tanımlayarak ListBox içersinde bu değeri gösterelim.

İşte bu kadar kolay bir değişken tanımlar gibi fakat içersinde birden fazla değer taşıyabilen bir değişken gibi düşünebiliriz.

Peki birden fazla boyuta sahip diziler tanımlamak mümkünmü ?  Yani tanımladığımız dizinin 1 elemanıda birkaç değere sahip olsa …

Diziler tek boyutlu olduğu gibi, birkaç boyutlu diziler de tanımlanabilir.  Örneğin :

int [,] matris = new int[5,6];

Bu diziyi tanımladığımızda önce 5 elemanlı bir dizi ardından bu dizinin her elemanı içinde 6 elemanlık bir dizi tanımlamış oluruz.  Yani 2 boyut oluşturmuş oluruz.

Bu dizide bir boyut daha olsaydı, o boyutun her elemanı için diğer boyutlardaki 30 eleman bulunacaktı. Çok boyutlu dizilerin eleman sayıları boyutlarındaki eleman sayılarını çarparak hesaplanabilir.

int [,,,,] dizi = new int[boyut1,boyut2,boyut3,… ,boyutn];

Dizilerin boyutlarınada göz attıktan sonra gelin isterseniz bir kaç metodunada bakalım.

Dizilerin Metotları

Array.Resize();

Resize metodu mevcut dizimizin eleman sayısını istediğimiz kadar arttırır. Bir örnekle bakalım bu olaya bir form üzerinde listbox textbox ve butonumuz olsun ve textbox a yazdığımız değer string bir diziye ve listbox a eklensin istiyorum. İlk etapta ne kadar değer girileceğini bilemiyeceğimizden önce 1 elemanlı bir dizi tanımlıyorum ve her eleman eklendiğinde dizi boyutunu arttırıyorum.

Array.Clear();

Dizimiz içersindeki değerleri temizlemek isteyebiliriz işte bu gibi durumlarda Array.Clear kullanıyoruz. Biraz önce yaptığımız proje üzerinde ufak değişikliklerle Clear metodunu inceleyelim.

Foreach Döngüsü

Daha önceki yazımızda bahsettiğimiz döngüler arasında bir tane daha vardı ama ona bu konunun sonunda değinmek daha mantıklı sanki.

Foreach döngümüz bir dizi veya kolaksiyonun her elemanı için yapısındaki kodları çalıştıran bir döngüdür.

foreach (<tip değişkeni > in <koleksiyon> ){

Yapılacak işlemler

}

Bilgiyle Kalın…
M.Zeki Osmancık

C# | OOP Terminolojisi 150 150 mezo

C# | OOP Terminolojisi



Access Modifier : Bir tipe veya tipin üyelerine erişimi sınırlayan private, protected, internal, public gibi kelimelerdir.

Accessible Member : Verilen tip tarafından ulaşılabilen üyedir. Bir tip ile erişilebilen bir üye başka bir üye tarafından erişilebilir olmayabilir.

Accessor : Bir özellik (Property) ile ilişkilendirilmiş Özel (private) veri alanı (data field) üyenin değerini alan veya ayarlayan metodlardır. Okunur-Yazılır özellikler get ve set erişimcilerine sahipken salt okunur özellikler sadece get erişimcisine sahiptirler.

Anonymous Method : Bir delegeye parametre olarak geçilirilen bir kod bloğudur.

Base Class : Türetilmiş sınıf (Derived Class) tarafından miras alınan sınıftır (Inherited Class).

Call Stack : Çalıştırma zamanında (runtime) programın başından başlayarak çalıştırılacak ifadeye kadar olan yapılan metod çağrılarının dizisidir.

Class : Nesneyi tanımlayan, nesneye şablon oluşturan veri tipidir. Sınıflar veri ve veriyi etkileyen metodlardan her ikisini de içerebilirler.

Constructor: Bir sınıf veya yapı üzerinde bulunan ve o tipteki nesneleri oluşturan özel metodlardır.

Delegate : Bir metodu referans eden bir tiptir. Bir delege metoda atandığında tam olarak o metod gibi davranır.

Derived Class : Başka bir taban sınıfın davranışına ve verisine erişmek, geliştirmek veya değiştirmek için miras yöntemini kullanan sınıftır.

Destructor : Örneğin sistem tarafından sonlandırılmasını hazırlayan, sınıf veya yapı üzerindeki özel bir metodtur.

Event : Bir değişikliğin bilgilendirmelerini gönderen sınıf veya yapı üyesidir.

Field: Sınıfın ya da yapının doğrudan erişilen veri üyesidir.

Generics : Jenerikler, bir sınıf ya da metodun bir tip parametresi ile tanımlanabilmesine olanak sağlarlar. İstemci kodu tipin örneğini yaratırken parametre olarak tanımlanan tipi belirli bir tipte değişken olarak tanımlar. Böyle parametrenin hangi tipte olduğu tanımlandığından sınıf ya da metodta o tip olarak kullanılabilir.

IDE (Integrated Development Environment) : Derleyici, debug edici, kod düzenleyici ve tasarım araçları gibi çeşitli geliştirme araçları için birleştirilmiş bir arayüz sağlayan uygulamalardır.

Immutable Type : Örnek yaratıldıktan sonra, örneğinin veri, alan ve özellikleri değişmeyen tiplerdir. Değer tiplerinin çoğu böyle tiplerdir.

Inaccessible Member : Belirtilen bir tip tarafından erişilemeyen bir üyedir. Bir tipe Erişilmez bir üyenin başka bir tipe de erişilmez olması gerektiğine dair bir zorunluluk yoktur.

Inheritance : C#, Miras almayı destekler. Yani bir sınıf (class) taban sınıf (base class) olarak adlandırılan sınıftan türetilir ve aynı metod ve özellikleri miras alır. Bunu sınıfa Türetilmiş Sınıf (Derived Class) denir.

Interface : Sadece public metod, olay ve delegelere ait imzaları içeren bir tiptir. Arayüzü miras alan bir nesne arayüzde imzaları tanımlanan tüm metod, olayları geliştirmek zorundadır. Sınıflar veya Yapılar (Structs) herhangi bir sayıda arayüzden miras alabilirler…

Iterator : Öteleyici, bir sınıfın içerdiği bir koleksiyon veya diziyi (array) sınıf kullanıcılarının foreach ile kullanabilmesine olanak sağlar.

Member : Bir sınıf (class) ya da yapı (struct) üzerinde tanımlana alan (field), özellik (property), metod (method) veya olaylara (events) o sınıfın üyeleri (class members) denir.

Method: Bir sınıf (class) ya da yapı (struct) için davranışı sağlayan isimlendirilmiş kod bloğudur.

Mutable Type : Örnek yaratıldıktan sonra, örneğinin veri, alan ve özellikleri değiştirilebilen tiplerdir. Referans tiplerinin çoğu böyle tiplerdir.

Nested Type : Diğer bir tipi tanımının içinde tanımlanmış tiptir.

Object : Sınıf örneğidir (instance). Bir nesne bellekte bulunur ve verisi ve bu veriler üzerinde etkisi olan metodları vardır.

Property : Özellikler, erişimcileri aracılığı ile bir veri üyesine ulaştırırlar.

Refactoring :
Bilgisayar terminolojisinde bilgisayar yazılımının çıktılarını ve işlevlerini değiştirmeden iç yapısının yeniden düzenlenerek uygulamanın geliştirilmesi, iyileştirilmesi demektir. Kısaca önceden girilmiş kodun tekrar kullanılması diyebiliriz. Visual Studio C# düzenleyicisi akıllıca kodunuzu tekrar biçimlendirebilir. Mesela işaretlediğiniz bir kod bloğunu bir hamleyle bir metoda dönüştürebilirsiniz.

Reference Type : Bir veri tipidir. Referans tipi olarak tanımlanan bir değişken verinin depolandığı konumu işaret eder.

Static : Statik olarak tanımlanan bir sınıf ya da metod “new” anahtar kelimesi ile ilklendirilmeden varolabilir.
Örneğin Main() statik bir metoddur.

Struct : Tipik olarak bazı mantıksal ilişkileri olan değişkenler içermesi için kullanılan birleşik veri tipidir. Yapılar aynı zamanda metodlar ve olaylar içerebilirler. Miras almayı desteklemezken arayüz kullanımını desteklerler. Sınıflar referans tipiyken, yapılar değer tipidir.

Value Type : Öbek (Heap) üzerine yerleştirilen referans tiplerine karşın yığın (stack) üzerine yerleştirilen veri tipidir. Yapı ve null değer alabilen (Nullable) tiplerin de olduğu gibi Nümerik tipleri de içeren Yerleşik (built-in) tiplerin hepsi değer tipleridir. Sınıf tipi ve string tipi referans tipleridir.

kaynak: http://msdn2.microsoft.com/en-us/library/ms173231.aspx

Bilgiyle Kalın…
M.Zeki Osmancık

C# _ Döngüler _ For & While 490 448 mezo

C# _ Döngüler _ For & While


Merhaba arkadaşlar bu yazımızda C# programlama içersinde bulunan döngüleri sizlere anlatmaya çalışacağım. Bu yazının sonunda ardarda işlemleri nasıl kısa yolla yapabilirsiniz, for döngüsü ve while döngüsü ile ilgili bilgi sahibi olacaksınız. Haydi başlayalım… 😀
Döngüler programlarımızda ardarda yada sıralı şekilde yaptıracağımız işlemleri için kullanılır. Fazla kod ,zaman kaybı ve performans açısından yarar sağlarlar. Diyelim ki öğrenci kaydı yapabileceğimiz bir windows form tasarlıyoruz ve bu windows formu üzerinde combobox nesnemiz yer almakta yıl kısmının yanlış yazılmasını engellemek için biz girerek kişinin sadece seçme işlevini yerine getirmek istiyoruz. İlk aklımıza gelen ComboBox nesnemizin items özelliği üzerinden tüm bilgileri girmek oldu değilmi ?

İster items özelliğinden dolduralım istersek kod ile dolduralım yinede bu işlem bize inanılmaz vakit kaybına neden olacaktır. Peki bir kolay yolu yokmu bu işi yapmanın tabi ki var. Döngüler bu konuda bizlere yardımcı oluyorlar.   Yukarıda bahsettiğimiz işlem için sadece döngü kullanmamız yetecektir.

For Döngüsü

for (başlangıç; koşul;artım){

Yapılacak işler;

}

Belirtilen başlangıç değerinden itibaren koşul sağlanana kadar içine yazılan kod parçasını çalıştırır ve bize sıralı işlemlerimizi hızlıca yapmamızı sağlar. Buna göre yukardaki işlemimiz nasıl oluyor görelim.

Ne kadar kolay değilmi ? 😀

Peki bu for döngüsü içersinde bir erken geçiş sağlamak istersek o zaman ne yapmalıyız?

for (int i = 1950; i < 2010; i++){

if (i == 1965)

{

continue;

}

comboBox1.Items.Add(i.ToString());

}

Biraz önce ki doldurma işlemi sırasında bir koşul sağlanıyorsa o koşulun sağlandığı değeri atlayarak döngü devam eder. Yani burada i 1965 olduğunda o satırdaki işlemi atlayacak ve 1966 dan devam edecek

Continue ile oluşan işlemi anladıysak birde koşul sağlandığında döngü işlemine son veren bir kodumuz daha var :

Break

for (int i = 1950; i < 2010; i++){

if (i == 1965)

{

break;

}

comboBox1.Items.Add(i.ToString());

}

MessageBox.Show(“Döngü Sonlandırıldı.”);

Yine aynı işlem için break işlemi yapıldığı zaman koşul sağlanıyorsa döngüden çıkarak sadece 1965 e kadar olan sayıları ComboBox nesnesi üzerine ekler.

Return

Bir döngünün sonundaki erken geçişi sağlar koşul sağlanmıyorsa hiç bir işlem yapmadan çıkar.

for (int i = 1950; i < 2010; i++){

if (i == 1965)

{

return;

}

comboBox1.Items.Add(i.ToString());

}

MessageBox.Show(“Döngü Sonlandırıldı.”);

While Döngüsü

Bir başka döngü türü olan while bir koşul sağlanıyorken dönmeye devam eden döngü çeşididir. Koşul false ise döngü sona erer.

while(koşul){

Yapılacak işler;

}

Aynı örneğimizi While ile yaptığımızda bu kez biraz syntax değişiyor ama yaptığımız işlem aynı.

Koşulumuz sağlandığı sürece yani i 2010 dan küçük olduğu sürece işlemimizi sürdürdü ve yine aynı örneğimizdeki Combobox itemlerini ekledik.

While i en güzel anlatan örnek belkide Eşşek Sudan Gelinceye Kadar Dayak Yemek deyimi.

Hadi gelin bu örneği yapalım 😀

Do While Döngüsü

Diğer döngülerden farkı koşul sonda kontrol edilir. Buda döngünün en az 1 kere çalışacağı anlamına gelir.

Do{

Yapılacak işler;

} while (koşul);

Bilgiyle Kalın…
M.Zeki Osmancık

ASP.Net _ Data Cache 1024 608 mezo

ASP.Net _ Data Cache


Merhaba arkadaşlar bir önceki yazımızda sayfamızı bir bütün olarak nasıl  cache leyebileceğimizi gördük . Bu yazımızda ise senaryomuz farklı . Bir e-ticaret sitemizin olduğunu varsayalım ve bu sayfa üzerinde birden fazla alan bulunmakta kategoriler, markalar, yeni ürünler , indirimli ürünler gibi ayrı ayrı ama hepsi veritabanından gelen veriler bulunmakta. Bu sayfamızı bütün olarak cache e koyduğumuzda ürünlerde indirimli ürünler gibi sürekli değişebilirliği bulunan alanlarda aynı cache içersinde bulunacağından değişiklikler kullanıcılara yansımayacaktır. Peki nasıl olacak bu iş ?
Biz sayfamız içersinde değişmeyecek alanlarımızın olduğunu biliyoruz örneğin kategoriler markalar gibi alanlar bunlar kolay kolay değişmez yada güncellenmez. Sayfayı komple cache işlemine almaktansa sadece bu alanların doldurulduğu DataTable nesnesini cache işlemine alsak yani sadece sayfada istediğimiz alanları cache işlemine dahil etsek  süper olmaz mı ? Tıpkı aşağıdaki resimdeki alanlar gibi.

İşte bu işlemide data cache ile yapabiliriz kullanımı OutputCache den biraz farklı ama eminimki seveceksiniz.  Bu işlem için DataTable döndüren bir property  e ihtiyacım olacak bu property içersinde bilgileri alıp cache işlemine dahil edeceğiz.

Property ‘miz hazır artık içersine bir Datable gönderdiğimizde içersinde cache işlemini yaparak tekrar cache lenmiş datatable döndürecek.  Bu property i hazırladıktan sonra işimiz çok kolay sadece en basit olarak datalarımızı veritabanından çekmek kalıyor.

Datamızı çekerken bir noktaya dikkatinizi çekmek istiyorum öncelikle MyData boşmu diye kontrol ettikten sonra bağlantımızı kurup sorgumuzu yollayıp verilerimizi alıyoruz ve Datatable ile karşıladığımız verilerimizi MyData ya atıyoruz. Ardından Repeater nesnemizin DataSource ‘ una MyData yı verdiğimizde cachelenmiş veri nesnemizin veri kaynağı olarak belirleniyor ve belirtilen süre içerisinde  bu veriler diğer alanları etkilemeyecek şekilde cache işlemine dahil edilmiş oluyor. Fakat bu işlemi uyguladığımızda  eğer veritabanında değişiklik olursa ve belirttiğimiz cache süresi bitmeden sayfaya istekte bulunursak görünürde bilgiler hiç güncellenmiyormuş gibi görünecek çünkü MyData içersinde veriyi cache işlemine dahil ederken kullandığımız Cache.NoAbsoluteExpriration deyimi cache süresinde kayma yapar.

Yani cache süremizi 30 dakika olarak düşünürsek ilk sayfa için istekte bulunulduğunda datamız cache lenecek daha sonra 30 dakika hiç istek olmazsa veritabanından yeni verileri çekerek yeni bir cache oluşturacak. Peki ya bu 30 dakika dolmadan 15. Ci dakikada bir istekte bulunulursa o zaman ne oluyor ? o zamanda “sliding” yani kaydirma işlemi yapılarak istekte bulunulduğu dakikaya bir 30 dakika daha ekleyerek cache süresini uzatıyor.  Yani 12:00 da istekte bulunulan sayfada cache yenileme süresi 12:30 oalcaktır fakat 12:15 de  tekrar bir istekte bulunulduğunda cache in yenilenme süresi 12:45 olarak değişecektir.

Bu yöntemden başka yöntemlerde var.  Biz MyData içersine datatable gönderdiğimizde içerdeki işlemler sırasında eğer NoAbsoulateExpiration değilde NoSlidingExpiration kullanırsak bu kez bizim sayfa isteklerimizi dikkate  almadan sadece belirttiğimiz cache süresinin bitmesini bekleyecek ve süre bitiminde cache işlemini yeniler.

Böylelikle sayfamız içersinde belirttiğimiz üzere birden  fazla database ile ilgili bölüm olsada biz sadece Kategoriler bölümünü yada sadece markalar bölümünü Cache işlemine dahil etmiş olacağız bu bilgi için tekrar tekrar DB ye bağlanmak zorunda kalmayacağız.

Umarım yararlı olur. Görüşmek üzere.

Bilgiyle Kalın…
M. Zeki Osmancık

ASP.Net _ Output Cache 469 492 mezo

ASP.Net _ Output Cache


Merhaba Arkadaşlar
Bu yazımda sizlere ASP.Net ile dinamik web siteleri yaparken performansı etkileyecek bir yapıdan bahsetmek istiyorum. Genellikle bu tip web sayfalarında veriler veritabanından çekilir. Bir sayfada, her seferinde veritabanına bağlanmak ve özellikle farklı tablolardan veri çekiyorsak, performansı önemli derecede etkiler .Herseferinde veritabanına gidip farklı tabloları bulup verileri web sayfası üzerine çekmek sayfayı yavaşlatır kullanıcıyı usandırır. Yavaş bir web kullanıcı üzerinde negatif bir etki yaratır. Bunun için ne yapmak gerekiyor peki ?
Sayfalarımızda bulunan verinin güncellenme sıklığına göre belirli bir süre tüm verileri Cache işlemine tabi tutsak ve kullanıcı sayfayı çağırdığında her seferinde veritabanına bağlanmaktansa cache te var olan veriyi göstersek çok daha performanslı olmazmı ? Belirtilen süre bittiğinde ise 1 sefer gidip veritabanından bilgileri alıp tekrar cache içersine doldurduğumuzda tadından yenmez . 😀
Peki sayfamızı Cache dediğimiz yapı içersine almak için ne yapmak gerekiyor ?

Yapmamız gereken sadece aspx sayfamızın ilk satırlarına yukardaki yapı gibi
<%@ OutputCache Duration=”30″ VaryByParam=”none” %> kodunu eklemek olacak böylelikle sayfamız outputcache ile komple cache işlemine tabi olacak ve Duration kısmında belirttiğimiz saniye cinsinden süre kadar cache de kalacak. Sizde bir sayfa üzerine basitçe veritabanından veri çekerek bu işlemi uygulayın ve veritabanını güncelledikten sonra sayfanızıda güncelleyin verdiğiniz Duration süresi boyunca sürekli güncellemeden önceki bilgiler gelecek.Duration süresi bittikten sonra tekrar veritabanına bağlanarak tekrar bir cache yapacaktır. Bunu sizin de yapmanızı istedim çünkü etkisini mutlaka görmelisiniz.

Senaryomuz şu olsun : Diyelimki biraz önce belirttiğim sayfanız üzerine çektiğiniz bilgi ürün kategorileri olsun. Bu kategoriler hangi sıklıkla güncellenir? Ancak yeni bir ürün grubu geldiğinde değilmi ? Buna göre sayfa üzerinde  sürekli veritabanına bağlanıp güncel kategori bilgileri ile dönmesinin bir anlamı olmaz. Bu sayfayı 1  günlük cache işlemine aldığımızda ilk kullanıcı sayfayı açtığında veriler cache atılacak daha sonra tüm gün veritabanına bağlanmayacak SqlServer için ne kadar rahatlatıcı değilmi ?J

Kategorilerin olduğu sayfayı cache e attık çok güzel!  Birde bu kategorilere tıkladığımzda o kategoriye ait olan ürünleri gösteren bir  Ürünler sayfamız olsa ve QueryString ile gelen kategoriID si ne göre ürünleri gösterse ve bu ürünler sayfasınıda Cache atmak istesek aynı işlemi uygulasak ????

Belirttiğimiz süre içersinde hangi kategoriye tıklarsak tıklayalım hep aynı kategoriye ait ürünler görülecektir.

Bu sorunuda <%@ OutputCache Duration=”30″ VaryByParam=”CatID” %>  kodu içersinde belirttiğimiz VarybyParam değeri ile düzenleyebiliyoruz. Bu değer bize cache işleminin hangi parametrelere göre yapılacağını belirttiğimiz bir değer. Buna göre VaryByParam değerine querystring deki kategoriID sini taşıyan parametreyi verirsem kategoriler sayfasında kategorilerden hangisine tıklarsam tıklayayım diğer sayfadaki cache işlemi o kategoriID sine göre düzenlenerek bize farklı kategorilerdeki ürünlerinde görüntülenmesini sağlayacaktır.

Her zaman kategori bilgisini farklı sayfadan göndermeyebiliriz. Bir sayfa içersinde bir dropdownlist içersine listelenmiş kategori bilgileri ilede aynı sayfa üzerinde ilgili ürünleri listelediğimizi varsayarsak. Aynı  yöntemle yapmaya kalkarsak yine sorun çıkacaktır çünkü burada parametre olarak querystring kullanmıyoruz bir kontrol kullanıyoruz. Bu kez ise VaryByParam yerine VaryByControl kullanıyoruz.  <%@ OutputCache Duration=”30″ VaryByControl=”DropDownList1″ %>

Parametrenin hangi değere göre cache işlemine gireceğini değeri nereden alacağını belirtmiş oluyoruz. Böylece aynı sayfa içersinde bulunan controllerin durumuna görede cache işlemini şekillendirmiş oluyoruz.

Gelin biraz işin içine , işin dibine , işin altında yatan koca ayzberge (iceberg)  bakalım 😀

OutputCacheModule ASP.Net içersinde bir HTTP Modul olarak implement olmuştur ve  System.Web.Caching namespace i içersinde yer alır. Bu modül sayfa içersindeki isteklerin yaşam alanı içersinde  gerçekleşecek olan olayları dinler ve ilgili bir olay(event) çalışırsa harekete geçer.HTTPModule  OutputCacheModule’ e ,  ResolveRequestCache ve UpdateRequestCache olayları ile katkıda bulunur.  ResolveRequestCache olayı tetiklendiğinde, modul gelen isteğin sonucunda dönecek olan sayfanın outputcache dahilinde olup olmadığına karar verir. Eğer cache işlemi varsa cache version bilgisi döner,cache bilgisi yoksa sayfa normal render edilir.  Geriye dönen cache bilgisine göre UpdateCacheModule çalışır. Bu modül çalıştığı zaman ise render edilen sayfa cache işlemine alınır.

Aşağıdaki diagram outputcachemodülünün çalışmasıyla ilgili bir fikir verecektir.

Başka yazılarda tekrar görüşmek üzere

Bilgiyle Kalın…
M.Zeki Osmancık

 

C# _ Karar Yapıları _ If-Else & Switch 522 236 mezo

C# _ Karar Yapıları _ If-Else & Switch


Gerçek hayatta bizlerin bazı kararlar almak zorunda kaldığımız gibi programımızada karar alma yeteneğini kazandırabiliriz çıkabilecek tüm sonuçları değerlendirerek ilgili işlemi yapabilecek duruma gelebilir. Kısacası programımıza düşünme yeteneği kazandırabiliriz.

If – Else Karar Yapısı

If..Else deyimi bir Boolean ifadeyi degerlendirerek program denetimi belirtilen deyim gruplarına geçirir. Basit bir örnek olarak tatile çıkmak istiyorsunuz ve mevcut paranız 500 lira. Afirmasında  1 haftalık tatil 900 lira   ,Bfirmasında 850 lira ,Cfirmasında 450 lira ,Dfirmasındada 300 lira bu 4 firma arasında seçim yapmak gerekirse ilk iki firmayı eledik bile. C ve D firmaları arasındaki seçimimizede orada yapacağımız harcamaları göz önünde bulundurarak değerlendirecek olursak en uygun D firması olacağına karar veririz. İf yapılarıda bu şekilde çalışır. İf karar blogları aşağıda belirtilen formatta yazılır.

Bir çok program ve web sitesinde gördüğümüz kullanıcı adı ve şifrenin doğru olduğuna karar verdiğimiz basit bir program yazalım.

Swicth – Case

Mantık olarak “if else” koşul yapısına benzer. Kendisine gönderilen parametreyi değerlendirir ve ona göre ayrılan kod bloğunu çalıştırır. Yani eleme yaparak parametrenin sahip olduğu değeri ile eşitlenen kod bloğunu çalıştırır.

switch(değişken)

{

case kosul1:

//kodlar bu panele gelecek

break;

case kosul2:

//kodlar bu panele gelecek

break;

case kosuln:

//kodlar bu panele gelecek

break;

default:

//eğer hiç bir koşul desteklenmiyorsa bu koşul gerçekleşecek

break;

}

Bilgisayarımızın saatini kontrol ederek günün çeşitli zamanlarında bize karşılama mesajı çıkartan bir uygulama yazalım

Bilgiyle Kalın…
M.Zeki Osmancık

Algoritma 503 345 mezo

Algoritma


Algoritma Nedir?

Algoritmalar bir işin nasıl yapıldığını adım adım hangi etaplardan geçerek gerçekleşeceğini gösteren bir çalışma planıdır aslında. Algoritmalar  programlama dili değildir  sadece programlama dillerine klavuz görevi gören bir yöntem dizisidir.Algoritmalar yazılı şekilde olabileceği gibi semboller dizilimi ilede  karşımıza çıkabilirler.

Algoritmalardaki yöntemler sırası

  • Veri Girişi
  • İşlem
  • Kararlar

Veri Girişi : Yapılan uygulamaların runtime kısmında kullanıcı tarafından girilecek olan verilerdir.

Kararlar: Karar ve kontrol yapıları algoritmanın akışını yönlendiren önemli kavramlardır. Girilen veya işlem sonucu elde edilen veriler kontrol edilerek algoritma istenilen yere yönlendirilir.

İşlem: Algoritmada belirtilen kararlar ve girilen veriler ile hangi işlemlerin gerçekleşeceğini belirtiğimiz yöntemlerdir.

Özellikleri

  • Girdi: Sıfır veya daha fazla değer dışarıdan verilmeli.
  • Çıktı: En azından bir değer üretilmeli.
  • Açıklık: Her işlem (komut) açık olmalı ve farklı anlamlar içermemeli.
  • Sonluluk: Her türlü olasılık için algoritma sonlu adımda bitmeli.
  • Etkinlik: Her komut kişinin kalem ve kağıt ile yürütebileceği kadar basit olmalıdır.

Akış Diagramları

Bu diagramlar daha anlaşılır bir  yapıya sahip olmaları için bazı semboller ile belirtilen algoritma yöntemidir.Akış diagramları farklı semboller yardımı ile hazırlanırlarşekilleri itibari ile anlaşılması kolay problem çözümünde

yardımcı bir yöntemdir. Şimdi bazı diagram şekillerini tanıyalım ve bir işlemin algoritmasını çizelim.

Çay Demleme İşleminin Algoritması

•      Kullanıcıdan su verilmesi beklenir.

•      Suyu ısıtma işlemi yapılır

•      Suyun kaynadığı kontrol edilir. Kaynamamışsa ısıtmaya devam eder

•      Demliğe çay konulur.

•      Kullanıcıdan alınan demleme bilgisi ile şimdiki zaman toplanır ve süre bulunur .

•      Şimdiki zaman küçükse çay demlenmeye devam eder.

•      Çayın demlendiği mesajla bildirilir.

Çay Demleme İşlemi Algoritma Diagramı

Bilgiyle Kalın…
M.Zeki Osmancık

C# _ Hatalar ve Giderilmeleri _ Try-Catch 353 238 mezo

C# _ Hatalar ve Giderilmeleri _ Try-Catch


Hata Nedir ?

Programcılar veya programı kullanacak olan  son kullanıcılar kimi zaman bazı kullanım yada mantıksal hatalar yapabilirler. Bu hatalar gözden kaçabilen mantıksal hatalar olabilir son kullanıcının programı kullanması sırasında veya test aşamasında karşımıza çıkabilir. İşte bu hataların giderilmesi hata çıktığı anda işlem kod bloğunu terk etmesi için işlemlerimizi try bloğu içersinde yazıyoruz bu blog içersinde bir hata meydana geldiğinde catch bloğu ile hata durumunda ne gibi bir işlem yapacağımızı belirtiyoruz.

Hatanın Yakalama

Örnek olarak iş yerimizde çalışan sarışın bir sekreterimiz için 2 sayıyı toplaması için çok basit bir hesap makinesi yazmış olalım. Sekreterimiz bu hesap makinesini kullanırken sayısal değerler kullanmak zorunda. Peki sayısal olmayan bir değer girdiğinde programın tepkisi ne olacaktır ?

Bu sorunu program içersinde hata kontrolü yaparak çözebiliriz. Eğer işlem bloğumuzda hata oluşursa hata yakalanacak işlemden çıkacak ve hata durumunda ne yapmasını istemişsek onu yapacak.

Finally

Birde programlarımızda hata olsun yada olmasın çalışmasını istediğimiz bazı kodlar yapılmasını istediğimiz işlemler olacaktır. Bunlar hata çıkması durumunda bile çalışacak olan kod bloklarıdır. Finally blogu içersinde yer alan kodlar her ne hata olursa olsun çalışacaktır.

Bilgiyle Kalın…
M.Zeki Osmancık

C# _ Değişkenler ve Veri Tipleri 507 316 mezo

C# _ Değişkenler ve Veri Tipleri


Merhaba arkadaşlar bu yazımda sizlere değişkenler denilen yapıları anlatmaya çalışacağım. Haydi başlayalım 😉

Değişken nedir nasıl tanımlanır?
Bir program çalıştırırken tüm veriler geçici olarak hafızada tutulur. Değişkenler bu verilerin isimlendirilmesi işlemidir. Değişken mantığı günlük yaşamdada çok kullanılan bir mantıktır aslında. Aklımızdan iki sayı tutmamız istendiğinde ve bu sayılarla alakalı işlem yapmamız istendiğinde aslında isimlendirecek olursak sayi1 ve sayi2 olarak o sayıları aklımızda tutuyoruz. İşte bu sayi1 ve sayi2 sadece o an geçiçi bir süre içinde işlem yapmamız için kafamızda ürettiğimiz değişkenlerdir. Programlamadada geçiçi olarak veri tutmak istediğimizde değişkenleri kullanırız.
<veri tipi> <değişken adı>; şeklinde tanımlanırlar.
string isim;
int rakam;
Tanımlama Kuralları
•Tanımlanan değişkenlerin tipleri değişken isminden önce belirtilir.
•Değişken isimlerini belirlerken bazı noktalara dikkat etmek gerekir. Boşluk, nokta, soru işareti, noktalı virgül, çift tırnak, tek tırnak, aritmetik  operatörler, karşılaştırma ve atama operatörleri, parantezler kullanılamaz.
• Sayı ile başlayamaz.
•Visual C#.NET dilinde tanımlı anahtar kelimeler kullanılamaz.
•Değişken isimlerinde Türkçe karakter kullanılırsa, farklı dil seçenekli işletim sistemlerinde çalışma anında hata üretecektir.

Veri Tipleri

Değişkenler program içinde, tuttukları verilere ulaşmak için kullanılır. Ancak değişkenlere ulaşmak, tanımlandıkları yerde veya alt  bloklarda mümkündür. Bu kavrama değişkenlerin kapsam alanı (Scope) denir.
Kapsam alanı dışındaki bir yerden değişkene ulaşılamaz.

Veri tipi, değişkenlerin tuttukları değerlerin türünü ve bellekte tutulacak boyutunu tanımlar. Değişkenleri veri tipleri ile tanımlarken verinin  boyutuna göre bir veri tipi seçilmelidir. İki tip veri tipi mevcuttur Değer Tipleri (Value Type)  ve Referans Tipleri (Reference Type)

Değer Tipleri (Value Type)

Değer tipleri veriyi direk olarak bellek bölgesinden alırlar

Referans Tipleri (Reference Type)


    Join our Newsletter

    We'll send you newsletters with news, tips & tricks. No spams here.