<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9089611451883883661</id><updated>2011-04-21T13:49:00.379-07:00</updated><category term='Proje'/><category term='SMS'/><category term='Oracle - PL/SQL'/><category term='JSP'/><category term='Linux'/><category term='C'/><category term='Google Map Api'/><category term='Sözlük'/><category term='Application Express'/><category term='XML'/><category term='Sistem'/><category term='Paralel Programlama'/><category term='Java'/><category term='Genel'/><category term='MPI'/><title type='text'>A.Fuat Sungur BLOG</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>45</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-3354572842767296556</id><published>2009-03-01T07:22:00.000-08:00</published><updated>2009-03-01T07:24:59.990-08:00</updated><title type='text'></title><content type='html'>My Blog was migrated to http://sungur.wordpress.com&lt;br /&gt;If redirection is not working, &lt;a href="http://sungur.wordpress.com"&gt;click here&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Blogum Wordpress tasindi : http://sungur.wordpress.com&lt;br /&gt;Yönlendirme çalışmaz ise : &lt;a href="http://sungur.wordpress.com"&gt;Buradan Ulasabilirsiniz.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-3354572842767296556?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/3354572842767296556/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2009/03/my-blog-was-migrated-to-httpsungur.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/3354572842767296556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/3354572842767296556'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2009/03/my-blog-was-migrated-to-httpsungur.html' title=''/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-5966799220015489203</id><published>2008-10-19T03:02:00.000-07:00</published><updated>2008-10-19T03:13:00.676-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Application Express'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle - PL/SQL'/><title type='text'>Oracle Apex 3.1 Sunumu</title><content type='html'>18 Ekimde, &lt;a href="http://tech.groups.yahoo.com/group/oracleturk/"&gt;OracleTURK&lt;/a&gt; grubuna, Oracle Akademi sponsorluğunda, Kadıköy Bireysel Eğitim Merkezinde gerçekleştirmiş olduğum, Oracle Application Express v3.1 sunumu ve workshop esnasında gösterdiğim bazı özelliklere ait kodlar için &lt;a href="http://afsungur.googlepages.com/apex31_Oracleturk.rar"&gt;tıklayın&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For english:&lt;br /&gt;I present the Oracle Application Express v3.1 to &lt;a href="http://tech.groups.yahoo.com/group/oracleturk/"&gt;OracleTurk Group&lt;/a&gt;, at Kadıköy Bireysel Eğitim Merkezi, sponsored by Oracle Turkiye Akademi. To access this presentation click &lt;a href="http://afsungur.googlepages.com/apex31_Oracleturk.rar"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-5966799220015489203?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/5966799220015489203/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/10/18-ekimde-oracleturk-grubuna-oracle.html#comment-form' title='2 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/5966799220015489203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/5966799220015489203'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/10/18-ekimde-oracleturk-grubuna-oracle.html' title='Oracle Apex 3.1 Sunumu'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-379470045910031338</id><published>2008-09-26T06:40:00.000-07:00</published><updated>2008-09-26T12:53:28.970-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Application Express'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle - PL/SQL'/><title type='text'>Asynchronous Ajax in Apex</title><content type='html'>We use Ajax for rapid query processing without submitting page. In apex, you can build ajax within your pages. For this purposes, we use "Application Process" under the Shared Components.&lt;br /&gt;&lt;br /&gt;Sometimes, Application Process can not response rapidly. For example, if you query a count from very large table, it takes for minutes or hours. If you put a text field for table name and if user can query number of records of input big table, also if you perform this operation with ajax in apex as synchronously, the BROWSER will freeze and consumes %100 cpu time. Everything will go bad.&lt;br /&gt;&lt;br /&gt;In this situation, you have to use "Asynchronous Ajax" opposite of Synchoronous, so you can more than one job on same time. To perform this, give an eye to this example:&lt;br /&gt;&lt;br /&gt;Firstly, you can build your ajax javascript :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt; function getNumberOfRecords(){  &lt;br /&gt;     var ajaxRequest = new htmldb_Get(null,&amp;APP_ID.,'APPLICATION_PROCESS=GetCount',0);  &lt;br /&gt;   ajaxRequest.add('P6_TABLE_NAME',html_GetElement('P6_TABLE_NAME').value);  &lt;br /&gt;     ajaxRequest.GetAsync(f_AsyncReturn);  &lt;br /&gt;     ajaxRequest = null;  &lt;br /&gt; } &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This code is used to connect your apex page with your application process. ( By the way, Application Processes are need to created as On Demand ). In normally, synchronous method, you call get() method of ajaxRequest object. Pay attention to this, in asynchronous method, you need to call GetAsync() method by passing an Object. What is the f_AsyncReturn ? :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt; function f_AsyncReturn(){  &lt;br /&gt;         if(p.readyState == 1){  &lt;br /&gt;                     $x('P6_TEXTAREA').value = '';  &lt;br /&gt;         }else if(p.readyState == 2){  &lt;br /&gt;         }else if(p.readyState == 3){  &lt;br /&gt;        }else if(p.readyState == 4){  &lt;br /&gt;                     $x('P6_TEXT_AREA').value = p.responseText;  &lt;br /&gt;                     // you can add other things add this area &lt;br /&gt;         }else{return false;}  &lt;br /&gt; }  &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you coded ajax in other languages such as php,jsp; probably you coded as above. There are 4 states to deal with ajax. One of them (state 1) is "Loading", one of them (state 4) is "Success". Result of ajax is written in 4. states. Before ajax Request is completed, you can write "Loading" message in first state.&lt;br /&gt;&lt;br /&gt;The other operations are the same with Synchronous method. You need to create an Application Process, it's running time must be "On Demand" as well.&lt;br /&gt;&lt;br /&gt;So, by performing this Asynchronous method, your browser will not be freezed. And, not consuming all of CPU time. But disadvantage of this ( may be not seemed apparently ), your job is take much time rather than synchronous method. But, it is worth!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-379470045910031338?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/379470045910031338/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/09/asynchronous-ajax-in-apex.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/379470045910031338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/379470045910031338'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/09/asynchronous-ajax-in-apex.html' title='Asynchronous Ajax in Apex'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-6529204449159615068</id><published>2008-09-01T12:38:00.000-07:00</published><updated>2008-09-01T12:48:52.648-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle - PL/SQL'/><title type='text'>Running DDL Statements on Remote Database</title><content type='html'>You cannot run any DDL statement on a remote databases via using our custom remote sqls.&lt;br /&gt;&lt;br /&gt;CREATE TABLE EMP@DB1 ...&lt;br /&gt;&lt;br /&gt;This causes an error. Instead of this you can use the Dynamic Sql to produce ddl statement to execute it when it is called.&lt;br /&gt;&lt;br /&gt;For example, There are two DB. A_DB and B_DB. We write this function in A_DB:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="plsql"&gt;&lt;br /&gt;CREATE OR REPLACE PROCEDURE dyn_sql( v_Sql_in VARCHAR2 )&lt;br /&gt;IS&lt;br /&gt;   curName INTEGER;&lt;br /&gt;   iRet INTEGER;&lt;br /&gt;BEGIN&lt;br /&gt;   curName := DBMS_SQL.OPEN_CURSOR;&lt;br /&gt;   DBMS_SQL.PARSE(curName, v_sql_in, DBMS_SQL.NATIVE);&lt;br /&gt;   iret := DBMS_SQL.EXECUTE(curName);&lt;br /&gt;   DBMS_SQL.CLOSE_CURSOR(curName);&lt;br /&gt;END;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;When you call this procedure as "exec dyn_sql('CREATE TABLE EMP (EMPNO INTEGER)');" in B_DB database, an EMP table will be created in A_DB database.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-6529204449159615068?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/6529204449159615068/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/09/running-ddl-statements-on-remote.html#comment-form' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/6529204449159615068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/6529204449159615068'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/09/running-ddl-statements-on-remote.html' title='Running DDL Statements on Remote Database'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-2842242342047454265</id><published>2008-08-31T04:51:00.001-07:00</published><updated>2008-08-31T05:08:07.989-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle - PL/SQL'/><title type='text'>About Returning Into Clause on Remote DB - ORA-22816</title><content type='html'>We use PL/SQL RETURNING INTO clause for returning value(s) after dml commands(INSERT,UPDATE,DELETE). Assume that you would insert row a employee table with employee_id value. Likely, you type this sql statement:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="plsql"&gt;&lt;br /&gt;INSERT INTO TEMPLOYEES (EMP_ID,EMP_NAME) VALUES( SEQ_TEMPLOYEES.NEXTVAL,'FUAT SUNGUR');&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;After this statement you need this employee_id to add another table. You can use RETURNING INTO clause to get employee_id value after an insert statement as follows:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="plsql"&gt;&lt;br /&gt;INSERT INTO TEMPLOYEES (EMP_ID,EMP_NAME) VALUES( SEQ_TEMPLOYEES.NEXTVAL,'FUAT SUNGUR') RETURNING EMP_ID INTO iEmpId;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;After these, iEmpId variable has employee_id value.&lt;br /&gt;There is no problem if you perform these on one database.&lt;br /&gt;&lt;br /&gt;If you want to perform this between databases, likely you would get :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ORA-22816: unsupported feature with RETURNING clause&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This error may be pothering and  discouraging you to what do you want. We can use other tactic to perform our willings.&lt;br /&gt;&lt;br /&gt;Assume that you have two databases A_DB, B_DB and in B_DB databases you want to add a row in Employee Table that table in A_DB. In this situation you take advantage of functions. Write a function that returns the sequence number of just added row. &lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="plsql"&gt;&lt;br /&gt;FUNCTION INSERT_EMPLOYEE_AND_GET_SEQ(vEmpName_in IN VARCHAR2)&lt;br /&gt;RETURN INTEGER&lt;br /&gt;IS&lt;br /&gt;    iEmpId INTEGER;&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;    INSERT INTO TEMPLOYEES (EMP_ID,EMP_NAME) VALUES (SEQ_TEMPLOYEES.NEXTVAL,vEmpName_in) RETURNING EMP_ID INTO iEmpId;&lt;br /&gt;    RETURN iEmpId;&lt;br /&gt;EXCEPTION&lt;br /&gt;    WHEN OTHERS THEN NULL;&lt;br /&gt;END;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Also you have add function parameter to whether the returning into is used or not. May be this sequence number is need only once and after you would use that sequence to insert employee. So, there are lots of need why you do it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-2842242342047454265?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/2842242342047454265/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/08/about-returning-into-clause-on-remote.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2842242342047454265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2842242342047454265'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/08/about-returning-into-clause-on-remote.html' title='About Returning Into Clause on Remote DB - ORA-22816'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-8093816839483343078</id><published>2008-08-10T12:28:00.000-07:00</published><updated>2008-08-10T13:18:11.176-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Genel'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle - PL/SQL'/><title type='text'>Google Syntax Highlighter for PL/SQL</title><content type='html'>Google Syntax Highlighter App. provides us to show code in our blogs or other html pages. This application shows code of C,Java,Jscript,C#,SQL,XML,Ruby,Phyton. But as you predicted, Oracle PL/SQL is missing. So, i decided to develop a code to highlight our Oracle/PLSQL code. Things you have to do them are as follows :&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download the Google Syntaxlighter to your pc: &lt;a href="http://code.google.com/p/syntaxhighlighter/"&gt;http://code.google.com/p/syntaxhighlighter/&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Then upload the folder that is extracted from zip file, to your server.&lt;/li&gt;&lt;li&gt;For blogger, go to your template page and edit.&lt;/li&gt;&lt;li&gt;After first head tag and before the closed head tag you should write some javascript code to template page.&lt;/li&gt;&lt;li&gt;The template page should look alike this page :&lt;br /&gt;&lt;br /&gt;&amp;lt;link type="text/css" rel="stylesheet" href="http://xxx.googlepages.com/SyntaxHighlighter.css"&amp;gt;&amp;lt;/link&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script language="javascript" src="http://xxx.googlepages.com/shCore.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script language="javascript" src="http://xxx.googlepages.com/shPlsql.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;....&lt;br /&gt;&lt;br /&gt;....&lt;br /&gt;&lt;br /&gt;....&lt;br /&gt;&lt;br /&gt;// dont modify if you dont want to change template except to show coding&lt;br /&gt;&lt;br /&gt;....&lt;br /&gt;&lt;br /&gt;&amp;lt;script language="javascript"&amp;gt;&lt;br /&gt;&lt;br /&gt;window.onload = function () {&lt;br /&gt;&lt;br /&gt; dp.SyntaxHighlighter.ClipboardSwf = 'http://afsungur.googlepages.com/clipboard.swf';&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; dp.SyntaxHighlighter.BloggerMode();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; dp.SyntaxHighlighter.HighlightAll('code');&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Then writing a post, you should write your pl sql code as follows:&lt;br /&gt;&amp;lt;pre name="code" class="plsql"&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;... your pl sql code ...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/pre&amp;gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Download &lt;a href="http://afsungur.googlepages.com/shBrushPlSql.js"&gt;shBrushPlSql.js&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(This is compatible with reserver words and keywords of Oracle Latest Version )&lt;br /&gt;&lt;br /&gt;After all of these step, now you can test your plsql code. Like this :)&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="plsql"&gt;&lt;br /&gt;CREATE OR REPLACE PACKAGE BODY PKG_RULE_CONTROL IS&lt;br /&gt;&lt;br /&gt;-- CREATED BY A. FUAT SUNGUR&lt;br /&gt;-- afsungur@gmail.com&lt;br /&gt;--&lt;br /&gt;--&lt;br /&gt;-- Kural ile ilgili islemleri gerceklestiren pakettir&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------------------&lt;br /&gt;-- DBMS_SCHEDULER tarafindan cagrilacak pl sql blogunun dinamik olarak uretilmesini saglar&lt;br /&gt;-- RUN_JOB prosedurune gonderilecek parametreler dinamik olarak ayarlanir.&lt;br /&gt;FUNCTION PRODUCE_JOB_SQL&lt;br /&gt;(&lt;br /&gt;     vExpr_1  VARCHAR2,&lt;br /&gt;     vExpr_2  VARCHAR2,&lt;br /&gt;     nCond_Id NUMBER,&lt;br /&gt;     iRuleId  NUMBER&lt;br /&gt;) RETURN VARCHAR2 IS&lt;br /&gt;&lt;br /&gt;     vJobSql    VARCHAR2(2000);&lt;br /&gt;     iSqlCode   INTEGER;&lt;br /&gt;     vSqlErrMsg VARCHAR2(250);&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;     -- CHR(39) = ' ( tek tirnak )&lt;br /&gt;     IF (vExpr_2 IS NOT NULL)&lt;br /&gt;     THEN&lt;br /&gt;          vJobSql := 'BEGIN PKG_JOB_CONTROL.RUN_JOB(' || CHR(39) ||&lt;br /&gt;                     vExpr_1 || CHR(39) || ',' || CHR(39) || VExpr_2 ||&lt;br /&gt;                     CHR(39) || ',' || nCond_Id || ',' || iRuleId ||&lt;br /&gt;                     '); END;';&lt;br /&gt;     ELSE&lt;br /&gt;          vJobSql := 'BEGIN PKG_JOB_CONTROL.RUN_JOB(' || CHR(39) ||&lt;br /&gt;                     vExpr_1 || CHR(39) || ',NULL,' || nCond_Id || ',' ||&lt;br /&gt;                     iRuleId || '); END;';&lt;br /&gt;     END IF;&lt;br /&gt;     RETURN vJobSql;&lt;br /&gt;EXCEPTION&lt;br /&gt;     WHEN OTHERS THEN&lt;br /&gt;          ROLLBACK;&lt;br /&gt;          INSERT INTO TERRORS&lt;br /&gt;          VALUES&lt;br /&gt;               (SEQ_TERRORS.NEXTVAL,&lt;br /&gt;                iSqlCode,&lt;br /&gt;                vSqlErrMsg,&lt;br /&gt;                CURRENT_TIMESTAMP,&lt;br /&gt;                'FUNCTION PKG_RULE_CONTROL.PRODUCE_JOB_SQL()');&lt;br /&gt;          COMMIT;&lt;br /&gt;          RETURN NULL;&lt;br /&gt;END;&lt;br /&gt;END;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-8093816839483343078?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/8093816839483343078/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/08/google-syntax-highlighter-for-plsql.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/8093816839483343078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/8093816839483343078'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/08/google-syntax-highlighter-for-plsql.html' title='Google Syntax Highlighter for PL/SQL'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-6230441481741989719</id><published>2008-08-03T22:32:00.000-07:00</published><updated>2008-08-11T00:40:13.189-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Application Express'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle - PL/SQL'/><title type='text'>Creating your own authentication method in Apex</title><content type='html'>With this operation, you can do your own login page instead of default apex login page.&lt;br /&gt;&lt;br /&gt;Firstly, you need to create a package that deal with user login operations. PKG_APP_SECURITY package name is appropriate for this need.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="plsql"&gt;&lt;br /&gt;CREATE OR REPLACE PACKAGE BODY PKG_APP_SECURITY&lt;br /&gt;AS&lt;br /&gt;&lt;br /&gt;PROCEDURE login&lt;br /&gt;&lt;br /&gt;(p_uname IN VARCHAR2,&lt;br /&gt;p_password IN VARCHAR2,&lt;br /&gt;p_session_id IN VARCHAR2,&lt;br /&gt;p_flow_page IN VARCHAR2)&lt;br /&gt;IS&lt;br /&gt;BEGIN&lt;br /&gt;-- THIS PROVIDES AUTHENTICATION&lt;br /&gt;wwv_flow_custom_auth_std.login (&lt;br /&gt;p_uname =&gt; p_uname,&lt;br /&gt;p_password =&gt; p_password,&lt;br /&gt;p_session_id =&gt; p_session_id,&lt;br /&gt;p_flow_page =&gt; p_flow_page || ':' || 1);&lt;br /&gt;&lt;br /&gt;EXCEPTION&lt;br /&gt;WHEN OTHERS&lt;br /&gt;THEN RAISE;&lt;br /&gt;END login;&lt;br /&gt;&lt;br /&gt;PROCEDURE add_user (p_username IN VARCHAR2, p_password IN VARCHAR2)&lt;br /&gt;AS&lt;br /&gt;BEGIN&lt;br /&gt;INSERT INTO P_USERS (username, PASSWORD)&lt;br /&gt;VALUES (UPPER (p_username),&lt;br /&gt;get_hash (TRIM (p_username), p_password));&lt;br /&gt;&lt;br /&gt;COMMIT;&lt;br /&gt;EXCEPTION&lt;br /&gt;WHEN OTHERS&lt;br /&gt;THEN ROLLBACK; RAISE;&lt;br /&gt;END add_user;&lt;br /&gt;&lt;br /&gt;FUNCTION get_hash (p_username IN VARCHAR2, p_password IN VARCHAR2)&lt;br /&gt;RETURN VARCHAR2&lt;br /&gt;AS&lt;br /&gt;BEGIN&lt;br /&gt;RETURN DBMS_OBFUSCATION_TOOLKIT.md5 (&lt;br /&gt;input_string =&gt; UPPER (p_username) || '/' || UPPER (p_password));&lt;br /&gt;END get_hash;&lt;br /&gt;&lt;br /&gt;PROCEDURE valid_user2 (p_username IN VARCHAR2, p_password IN VARCHAR2)&lt;br /&gt;AS&lt;br /&gt;v_dummy VARCHAR2 (1);&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;SELECT '1' INTO v_dummy&lt;br /&gt;FROM P_USERS&lt;br /&gt;WHERE UPPER (username) = UPPER (p_username)&lt;br /&gt;AND PASSWORD = get_hash (p_username, p_password);&lt;br /&gt;&lt;br /&gt;EXCEPTION&lt;br /&gt;WHEN NO_DATA_FOUND&lt;br /&gt;THEN raise_application_error (-20000, 'Invalid username / password.');&lt;br /&gt;END valid_user2;&lt;br /&gt;&lt;br /&gt;FUNCTION valid_user (p_username IN VARCHAR2, p_password IN VARCHAR2)&lt;br /&gt;RETURN BOOLEAN&lt;br /&gt;AS&lt;br /&gt;BEGIN&lt;br /&gt;valid_user2 (UPPER (p_username), p_password);&lt;br /&gt;RETURN TRUE;&lt;br /&gt;EXCEPTION&lt;br /&gt;WHEN OTHERS&lt;br /&gt;THEN RETURN FALSE;&lt;br /&gt;END valid_user;&lt;br /&gt;&lt;br /&gt;END PKG_APP_SECURITY;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The P_USERS table has two columns, types of both columns are varchar2 and first of them is username and second of them is password.&lt;br /&gt;&lt;br /&gt;Secondly, you should use an authentication schema. To perform this, in Shared Components, click Authentication Schemas. Then Create Button.&lt;br /&gt;&lt;br /&gt;1-&gt; Click "Create Schema" Button.&lt;br /&gt;2-&gt; Write your own authentication schema name, such as "MY AUTH METHOD".&lt;br /&gt;3-&gt; Then "Create Scheme" button.&lt;br /&gt;4-&gt; After scheme is created, click your authentication schema icon in authentication schemas page.&lt;br /&gt;5-&gt; Then Login Processing tab, in "Authentication Function" textarea, type this:&lt;br /&gt;"RETURN PKG_APP_SECURITY.valid_user"&lt;br /&gt;6-&gt; If this method return false in application the authentication is not successfullied.&lt;br /&gt;7-&gt; Don't forget, you should set your own authentication schema to as current used.&lt;br /&gt;&lt;br /&gt;Last thing we need to do, edit your login page (genrally page 101). Then, in processes tab ( in page processing tab ), click login process. And, type this to  process textarea in source tab:&lt;br /&gt;"pkg_app_security.login (P_UNAME =&gt; :P101_USERNAME, P_PASSWORD =&gt; :P101_PASSWORD, P_SESSION_ID =&gt; v('APP_SESSION'), P_FLOW_PAGE =&gt; :APP_ID );".&lt;br /&gt;&lt;br /&gt;After performed these 3 steps, you can use your own login page with your own user tables in Apex Applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-6230441481741989719?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/6230441481741989719/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/08/creating-your-own-authentication-method.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/6230441481741989719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/6230441481741989719'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/08/creating-your-own-authentication-method.html' title='Creating your own authentication method in Apex'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-2019465946630446038</id><published>2008-08-02T07:53:00.000-07:00</published><updated>2008-08-18T11:00:35.698-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Application Express'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle - PL/SQL'/><title type='text'>Installing Application Express 3.1 on Oracle 10g 10.2.0.1.0</title><content type='html'>In installing apex on Oracle 10g 10.2.0.1.0, i was getting a XDB Login Problem. I setup apex and entering the url path of apex, then browser ask me repeatedly xdb username and password. I tried lots of things that could not solve this problem. Especially this problem take place in Oracle 10g 10.2.0.1.0. I searched lots of web pages, forum, blogs then i found the solution.&lt;br /&gt;&lt;br /&gt;Firstly,  download the apex_3.1.1.zip in Oracle Web page. Then extract this file to Oracle Home.&lt;br /&gt;When you type "dir /b" or "ls -la" in Oracle Home, you should see same this :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; G:\oracle\product\10.2.0\db_3&gt;dir /b&lt;br /&gt;1907-b75f9673d7_orcl&lt;br /&gt;admin&lt;br /&gt;apex&lt;br /&gt;assistants&lt;br /&gt;BIN&lt;br /&gt;cdata&lt;br /&gt;cfgtoollogs&lt;br /&gt;clone&lt;br /&gt;com&lt;br /&gt;config&lt;br /&gt;....&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;dir&gt;&lt;span style="font-weight: bold;"&gt;&lt;dir&gt;&lt;span style="font-weight: bold;"&gt;&lt;dir&gt;&lt;span style="font-weight: bold;"&gt;&lt;dir&gt;&lt;span style="font-weight: bold;"&gt;&lt;dir&gt;&lt;span style="font-weight: bold;"&gt;&lt;dir&gt;&lt;span style="font-weight: bold;"&gt;&lt;dir&gt;&lt;span style="font-weight: bold;"&gt;&lt;dir&gt;&lt;br /&gt;&lt;/dir&gt;&lt;/span&gt;&lt;/dir&gt;&lt;/span&gt;&lt;/dir&gt;&lt;/span&gt;&lt;/dir&gt;&lt;/span&gt;&lt;/dir&gt;&lt;/span&gt;&lt;/dir&gt;&lt;/span&gt;&lt;/dir&gt;&lt;/span&gt;&lt;/dir&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;So, type "cd apex" to enter this folder. Then run sqlplus as sysdba.&lt;br /&gt;And execute the @apexins (apexins.sql).&lt;br /&gt;&lt;br /&gt;Then, to change the ADMIN user password type the @apxxepwd.&lt;br /&gt;&lt;br /&gt;After these, you should configure the Embedded PL SQL Gateway ( if you wont use the oracle http server like me).&lt;br /&gt;&lt;br /&gt;Type @apex_epg_config to configure the plsql gateway.&lt;br /&gt;Then, unlock the ANONYMOUS user, type "ALTER USER ANONYMOUS ACCOUNT UNLOCK".&lt;br /&gt;After these, now we are at the last point.&lt;br /&gt;To enable XML DB HTTP SERVER :&lt;br /&gt;exec dbms_xdb.sethttpport(7780);&lt;br /&gt;// if you enter a port of used service, you can't run the apex.&lt;br /&gt;// so do not enter the Apache Tomcat Port : 8080&lt;br /&gt;&lt;br /&gt;If XDB username and password is questioned, you should run this command:&lt;br /&gt;( I found it after lots of searching )&lt;br /&gt;EXEC DBMS_EPG.authorize_dad ( dad_name =&gt; 'APEX', user =&gt; 'ANONYMOUS' );&lt;br /&gt;&lt;br /&gt;Now, you can try to login the Apex page via typing "http://localhost:7780/apex/apex_admin".&lt;br /&gt;&lt;br /&gt;If it asks still XDB username and password, you should read this blog and comments carefully.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jeffkemponoracle.blogspot.com/2007/07/apex-30-via-embedded-plsql-gateway.html"&gt;http://jeffkemponoracle.blogspot.com/2007/07/apex-30-via-embedded-plsql-gateway.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you encounter any problem, send an email or comments.&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;&lt;dir&gt;&lt;span style="font-weight: bold;"&gt;&lt;dir&gt;&lt;span style="font-weight: bold;"&gt;&lt;dir&gt;&lt;span style="font-weight: bold;"&gt;&lt;dir&gt;&lt;span style="font-weight: bold;"&gt;&lt;dir&gt;&lt;span style="font-weight: bold;"&gt;&lt;dir&gt;&lt;span style="font-weight: bold;"&gt;&lt;dir&gt;&lt;span style="font-weight: bold;"&gt;&lt;dir&gt;&lt;/dir&gt;&lt;/span&gt;&lt;/dir&gt;&lt;/span&gt;&lt;/dir&gt;&lt;/span&gt;&lt;/dir&gt;&lt;/span&gt;&lt;/dir&gt;&lt;/span&gt;&lt;/dir&gt;&lt;/span&gt;&lt;/dir&gt;&lt;/span&gt;&lt;/dir&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-2019465946630446038?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/2019465946630446038/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/08/installing-application-express-31-on.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2019465946630446038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2019465946630446038'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/08/installing-application-express-31-on.html' title='Installing Application Express 3.1 on Oracle 10g 10.2.0.1.0'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-7099085691264941401</id><published>2008-07-16T06:34:00.000-07:00</published><updated>2008-07-16T06:53:14.794-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle - PL/SQL'/><title type='text'>Materialized View</title><content type='html'>Oracle DW uygulamalarında sıkça rastlayabileceğimiz bir yapı olan Materialized Viewları, saklı tablo sonuçları olarak düşünebiliriz. Normal Viewlardan farkı, bir sql sorgusu olarak değil de sql sorgusu + data olarak saklanmasıdır. Yani MV diskte yer kaplar.&lt;br /&gt;&lt;br /&gt;Peki neler yapılıyor MVlerle, milyonlarca kayıt bulunan tabloda belli sorguları önceden çalıştırıp bunun sonuçlarını saklama işlemini yapıyoruz.&lt;br /&gt;Örneğin, bir satış tablomuz var, 5 milyar kaydımız var bu tabloda, 100 id'li müşterinin o günkü toplam harcamalarını öğrenmek istiyoruz. Bu öğrenme işi çok fazla kez tekrar ediliyor diyelim. 5 milyar kayıt içinde group by, sum() gibi sql özelliklerini kullanmak çok fazla kaynak kullanımına sebebiyet vereceğinden dolayı, bu işlemlerin önceden bir yerde tutulması bizim işimize yarayacaktır.&lt;br /&gt;&lt;br /&gt;Yazının başında belirtildiği gibi, Data Warehouse sistemlerde özellikle kullanılan bir yapı, biraz real-time uygulamaların dışında gerçekleştirilebilir diyebiliriz. Örneğin salı günkü verilerden yola çıkarak, çarşamba günü rapor hazırlama işlemleri bu şekilde daha hızlı gerçekleştirilebilir. Salı akşamı sorgular çalıştırılır, MV'ler güncellenir, çarşamba günü sorgular çalıştırıldığında Ana tablo yerine bu MV'lerden ilgili bilgiler çekilmiş olur. Yani 5 milyar kayıt içinde arayacağımıza, çok daha az miktarda veri içinde arama yapmış olacağız. Bu da bizim kaynakları kullanma performansımızı arttıracak. Fakat bu durumda güncel verilerden yararlanmamış oluyoruz, sadece önceki güne ait verilerden yararlanmış oluyoruz. Bunu önleme yöntemleri de mevcut, MV'de.&lt;br /&gt;&lt;br /&gt;MV'de bilinmesi gereken en önemli özelliklerden birisi de Query Rewriting özelliği. Bu özellik Session bazında ve MV oluştururken enable yapıldığı takdirde, MV 'in sql sorgusu çalıştırıldığında ana tablo yerine MV'den veriler çekilmiş oluyor. Şöyle ki, MV yi oluştururken "SELECT * FROM SALES" olarak oluşturduğumuz zaman, Query Rewriting özelliği enable olur ise, "SELECT * FROM SALES" sorgusu çalıştırıldığında, CBO ( Cost Based Optimizer ) bu sorgunun aslında MV'den çekilmesine karar verir ve yazılan sorguyu MV'yi işaret edecek şekilde ( örn : "SELECT * FROM MV_SALES" ) değiştirirr ve sorguyu yapan farkında olmadan MV kullanılmış olur.&lt;br /&gt;&lt;br /&gt;Eğer bu özellik enable edilmez ise, MV'den yararlanmak için sorgu yazılırken MV direk işaret edilmelidir. "SELECT * FROM MV_SALE" gibi, aksi takdirde direk ana tablodan veriler çekilir.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-7099085691264941401?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/7099085691264941401/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/07/materialized-view.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/7099085691264941401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/7099085691264941401'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/07/materialized-view.html' title='Materialized View'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-9108118668750786847</id><published>2008-07-03T03:30:00.000-07:00</published><updated>2008-08-10T02:59:18.796-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle - PL/SQL'/><title type='text'>Tablespace - Datafile Oluşturma</title><content type='html'>Oracle'da verilerimiz fiziksel olarak datafile'larda saklanır ve bu datafile'ları barındıran lojiksel olarak Tablespace adını verdiğimiz yapılar bulunur. Tablespace'ler, data fileların toplu olarak yönetimini kolaylaştırmıştır. Bir Tablespacei read only yaparak, onu içeren dosyaları da read only yapmış oluruz, hepsini teker teker yapacağımıza.&lt;br /&gt;&lt;br /&gt;Şimdi bu tablespace oluşturma işlemini manuel olarak yapalım.&lt;br /&gt;İlk olarak konsoldan bir dosya oluşturalım.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;root@fuat-laptop:/home/oracle/datafiles# touch fuat_3.dbf&lt;br /&gt;root@fuat-laptop:/home/oracle/datafiles# ls -la&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Daha sonra bu dosyaya yazma işlemlerinin gerçekleşebilmesi için:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;root@fuat-laptop:/home/oracle/datafiles# chmod 777 fuat_3.dbf&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Şimdi fuat_ts_2 adli tablespacimizi fuat_3.dbf dosyasini içerecek şekilde oluşturalım:&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;CREATE TABLESPACE FUAT_TS_1 DATAFILE '/home/oracle/datafiles/fuat_1.dbf' SIZE 10M;&lt;br /&gt;&lt;br /&gt;Tablespace altered.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Kontrol etmek için:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;root@fuat-laptop:/home/oracle/datafiles# ls -la&lt;br /&gt;total 20536&lt;br /&gt;drwxr-xr-x 2 root root     4096 2008-06-03 13:35 .&lt;br /&gt;drwxrwxrwx 3 root root     4096 2008-06-03 10:11 ..&lt;br /&gt;-rwxrwxrwx 1 root root 10493952 2008-06-03 11:49 fuat_3.dbf&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Görüldüğü gibi fuat_3.dbf dosyası 10MB olarak oluşturuldu.&lt;br /&gt;&lt;br /&gt;Şimdi, başka bir dosyayı var olan tablespace'e ekleme işlemini gerçekleştirelim.&lt;br /&gt;Yine bir dosya oluşturalım, fuat_4.dbf diye, chmod ayarlarını yapalım,&lt;br /&gt;ve sql plus 'ta su komutu yazalım:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;alter tablespace fuat_ts_1 add datafile '/home/oracle/datafiles/fuat_4.dbf' SIZE 10M&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Çok basit komutlarla datafile'larımızı ve tablespace'lerimizi oluşturmuş olduk.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-9108118668750786847?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/9108118668750786847/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/07/tablespace-datafile-oluturma.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/9108118668750786847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/9108118668750786847'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/07/tablespace-datafile-oluturma.html' title='Tablespace - Datafile Oluşturma'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-3645847243933067983</id><published>2008-07-02T01:15:00.000-07:00</published><updated>2008-07-02T01:36:46.575-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle - PL/SQL'/><title type='text'>Linux Üzerinde Oracle 10g XE ve Oracle SQL Developer</title><content type='html'>Merhaba, Linux'e uygulama kurmak bazı durumlarda gerçekten güç olabiliyor ( yeteri kadar bilgi sahibi değilseniz ). Çok araştırma yapmak, forumları gözden geçirmek, döküman okumak gerekiyor. Veya deneme/yanılma yöntemi ile de çözüm bulabiliyorsunuz. Aarama motorlarından arama yapıp bazılarının blogundan bunları elde etmek de mumkun oluyor.&lt;br /&gt;&lt;br /&gt;Oracle 10g XE Linux'e kurulumu için aşağıdaki linki inceleyebilirsiniz:&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/software/products/database/xe/htdocs/102xelinsoft.html"&gt;&lt;br /&gt;http://www.oracle.com/technology/software/products/database/xe/htdocs/102xelinsoft.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ubuntu'ya kurulumu cok kolay, indirilecek .deb dosyasının çift tıklama ile yükleyebiliyorsunuz.&lt;br /&gt;&lt;br /&gt;Tabi yükleme ile bitmiyor, configure etmemiz gereken bazı şeyler var. Bunun için aşağıdaki adresten yararlanabilrsiniz :&lt;br /&gt;&lt;a href="http://susedim.blogspot.com/2008/03/suse-103-zerine-oracle-xe-kurulumu.html"&gt;&lt;br /&gt;http://susedim.blogspot.com/2008/03/suse-103-zerine-oracle-xe-kurulumu.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SQL Developer&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/software/products/sql/index.html"&gt;http://www.oracle.com/technology/software/products/sql/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;rpm li dosyayı acma sekli linkte yazıyor. Icini acip icindeki klasoru masaustune kopyleyip, /opt/sqldeveloper/sqldeveloper.sh dosyasını çalıştırarak uygulamayı başlatabilirsiniz.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-3645847243933067983?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/3645847243933067983/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/07/linux-zerinde-oracle-10g-xe-ve-oracle.html#comment-form' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/3645847243933067983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/3645847243933067983'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/07/linux-zerinde-oracle-10g-xe-ve-oracle.html' title='Linux Üzerinde Oracle 10g XE ve Oracle SQL Developer'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-1000608691807588973</id><published>2008-06-26T07:00:00.000-07:00</published><updated>2008-06-26T07:03:48.156-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sistem'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Linux Shell Scripting</title><content type='html'>Windowsta yazdığımız BAT dosyalarını yani toplu işlem yapma dosyalarının benzerini Linux için de yazabiliriz. Linux Shell Scripting denilen bu işlemde programlama diline yakın bir biçimde shell programlama yapabiliyorsunuz.&lt;br /&gt;&lt;br /&gt;İlgili tutorial için : &lt;a href="http://www.freeos.com/guides/lsst/index.html"&gt;http://www.freeos.com/guides/lsst/index.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-1000608691807588973?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/1000608691807588973/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/06/linux-shell-scripting.html#comment-form' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/1000608691807588973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/1000608691807588973'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/06/linux-shell-scripting.html' title='Linux Shell Scripting'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-6102500185087976885</id><published>2008-06-26T03:40:00.000-07:00</published><updated>2008-06-26T03:52:19.809-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Paralel Programlama'/><category scheme='http://www.blogger.com/atom/ns#' term='MPI'/><title type='text'>MPI Api Kurulumu</title><content type='html'>MPi Apisinin Linux üzerinde kurulumu nasıl oluyor?&lt;br /&gt;Bu apiyi, linux'e kurmak için epey uğraştım, sonunda başardım, okulda bazı arkadaşlar da benim gibi kuramayıp, okulun serverine uzaktan bağlanıp, kod derlemeye çalışmıştık.&lt;br /&gt;&lt;br /&gt;İlk olarak &lt;a href="http://www.lam-mpi.org/download/files/lam-7.1.4.tar.gz"&gt;buradan&lt;/a&gt; apiyi Linux işletim sistemine indiriyoruz. Daha sonra indirilen sıkıştırılmış dosyayı bir klasöre açıyoruz ve daha sonra terminal'den bu klasöre giriyoruz.&lt;br /&gt;&lt;br /&gt;Terminal'e&lt;br /&gt;"&lt;span style="font-weight: bold;"&gt;./configure CC=cc CXX=CC --without-fc -prefix=/directory/to/install/in&lt;/span&gt;" yazarak apinin configurasyonunu sağlıyoruz ( --without-fc FORTRAN uygulaması yazmayacağımızı belirtmek için ). Eğer hata çıkarsa, gcc nin yeni versiyonunun yüklenmesi gerekebilir. Bunu da "sudo apt-get install build-essential" dan yapabiliriz. Bu konfigurasyon işlemi sisteme bağlı olarak 5-10 dakika sürebilir, bu işlem bittikten sonra aynı klasörde terminale "&lt;span style="font-weight: bold;"&gt;make&lt;/span&gt;" daha sonra "&lt;span style="font-weight: bold;"&gt;make install&lt;/span&gt;" yazarak, apinin kurulmasını sağlıyoruz. Daha sonra terminale "mpicc" yazarak apinin yüklenip yüklenmediğini kontrol ediyoruz. Eğer şu şekilde bir hata alırsak :&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;root@fuat-laptop:/home/fuat/Desktop/lam-7.1.4# mpicc&lt;br /&gt;The program 'mpicc' can be found in the following packages:&lt;br /&gt; * lam4-dev&lt;br /&gt; * libmpich1.0-dev&lt;br /&gt; * libopenmpi-dev&lt;br /&gt; * libmpich-mpd1.0-dev&lt;br /&gt; * libmpich-shmem1.0-dev&lt;br /&gt;Try: apt-get install &lt;selected&gt;&lt;br /&gt;bash: mpicc: command not found&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;lam4-dev package'ını yüklememiz gerekbilir. Yüklemek için "sudo apt-get install lam4-dev" yazıyoruz terminal'e. Daha sonra mpicc yi tekrar deniyoruz ve "gcc no input files" hatası alırsak apinin doğru yüklendiğini görmüş oluyoruz.&lt;br /&gt;&lt;br /&gt;Sırada mpirun var. Terminal'e mpirun yazıp mpirun uygulamasını kontrol ediyoruz, eğer yine bulunamazsa, "sudo apt-get install lam-runtime" yazarak bu package'in yüklenmesini sağlıyoruz.&lt;br /&gt;&lt;br /&gt;Sıra geldi apiyi çalıştırmaya, "lamboot" yazıyoruz terminale, eğer şu şekild bir çıktı alırsak :&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;fuat@fuat-laptop:~/Desktop/lam-7.1.4/myexamples$ lamboot&lt;br /&gt;&lt;br /&gt;LAM 7.1.2/MPI 2 C++/ROMIO - Indiana University&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;apimiz, başarıyla kurulmuştur...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-6102500185087976885?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/6102500185087976885/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/06/mpi-api-kurulumu.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/6102500185087976885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/6102500185087976885'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/06/mpi-api-kurulumu.html' title='MPI Api Kurulumu'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-2892299297537360073</id><published>2008-06-25T16:00:00.000-07:00</published><updated>2008-06-25T16:16:02.734-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Sözlük'/><title type='text'>Linux'te Babylon Sözlük</title><content type='html'>&lt;span style="color: rgb(0, 0, 0);"&gt;Windows'tan aşina olduğumuz, yanımızdan ayıramadığımız bir parçadır Babylon. Şahsen, ingilizce kelime haznemi geliştirmede en faydası dokunan bir araç oldu bu uygulama. Peki bu araç sadece Windows'ta mı?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Sırf bu yüzden linux kullanmayanlar olduğunu biliyorum, şahsen benim de uzun süredir linux kullanmamamın sebeplerinden bir tanesi de buydu. Linux'te bu programı nasıl kullanacağız?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Babylon sadece Windows sürümleri için var fakat aynı işlemi gören bir Linux uygulaması da var : Stardict. Kelimelerin üstüne gelip kolayca farklı dilde olan anlamlarını görebilirsiniz.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Yapmamız gerekenler:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;1 - İlk olarak Stardict adlı uygulamayı bilgisayarımıza kuruyoruz.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Ubuntu için : &lt;a href="http://downloads.sourceforge.net/stardict/stardict_3.0.1-1_i386.deb"&gt;http://downloads.sourceforge.net/stardict/stardict_3.0.1-1_i386.deb &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Diğer linux : &lt;a href="http://linux.softpedia.com/progDownload/StarDict-Download-1162.html"&gt;http://linux.softpedia.com/progDownload/StarDict-Download-1162.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;2 - Daha sonra Babylon sözlüklerinin Stardicte kullanılması için&lt;/span&gt; Converter uygulaması kurmamız gerekiyor. Bu program .BGL uzantılı dosyaları, Stardict uygulamasının okuyabileceği .IFO uzantılı dosyaya çeviriyor. Programın adı : Dict Convert&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://linux.softpedia.com/get/Education/Dictconv-23446.shtml"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;http://linux.softpedia.com/get/Education/Dictconv-23446.shtml &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;adresinden programı indirebilirsiniz.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Programı indirdikten sonra zipli dosyayı bir klasöre açın ve daha sonra klasörün içine terminalden girdikten sonra :&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"./configure" yazarak configurasyonu sağlayın. Eğer C++ Compiler hatası alırsanız terminale "sudo apt-get install build-essential" yazın ve ilgili paketlerin yüklenmesini sağlayın. Eğer libxml2 hatası alırsanız terminale "&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);" &gt;sudo apt-get install libxml2-dev" yazıp libxml2 paketinin yüklenmesini sağlayın. Daha sonra bu işlemi de sorunsuz hallederseniz, "make all install" yazarak programın kurulmasını sağlayın.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3 - Çevirme işleminin yapılması&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.babylon.com/category/30/Turkish.html"&gt;http://www.babylon.com/category/30/Turkish.html&lt;/a&gt; adresinden türkçe sözlüklerden ilgilendiklerinizi indirin.&lt;br /&gt;Daha sonra terminalde "dictconv babylonsozluk.bgl -o stardictsozluk.ifo" yazıp çevirme işlemini gerçekleştirin. Daha sonra bu komutu yazdığınız klasöre olusacak 3 dosyayı stardictsozluk.ifo, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);" &gt;stardictsozluk.idx, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);" &gt;stardictsozluk.dict; stardict'in kurulduğu dizindeki dic klasörünün içine kopyalayın. Eğer nereye kurulduğunu bilmiyorsanız, "updatedb" yazın terminale, daha sonra "locate stardict" yazın ve stardict klasörünün nerede olduğunu öğrenmiş olun.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-2892299297537360073?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/2892299297537360073/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/06/linuxte-babylon-szlk.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2892299297537360073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2892299297537360073'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/06/linuxte-babylon-szlk.html' title='Linux&apos;te Babylon Sözlük'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-2865173866141398660</id><published>2008-06-19T02:09:00.000-07:00</published><updated>2008-06-19T15:56:29.412-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Paralel Programlama'/><category scheme='http://www.blogger.com/atom/ns#' term='MPI'/><title type='text'>MPI ile Paralel Programlama</title><content type='html'>Message Passing Interface kısaca MPI, C programlama dili ile paralel programlamayı sağlayan bir C apisidir. Bu apiyi uygulamalarımızda kullanarak programlarımızı birçok işlemci üzerinde çalıştırmayı sağlayabiliriz.&lt;br /&gt;&lt;br /&gt;Apinin bize sağladığı en önemli özellik processler arası haberleşmeyi sağlama imkanını sunması. Bu sayede zaten paralel programlama işlemini kusursuz yapmış oluyoruz. Genel kullanım alanları biyolojik modeller, uzay problemleri, dna modelleme gibi çok yoğun işlemleri gerektiren durumlarda kullanılıyor.&lt;br /&gt;&lt;br /&gt;Bu apiyi kullanabilmek için en önemli şart, programımızı aynı işlemleri yapacak parçalara bölebilmek. Örneğin SMS Server'ınız var, 100 adet mesajı sıra ile okuyup, her sms'e bir cevap üreteceksiniz. Bunun için normal programlama ( seri programlama diyebiliriz aslında ) ile ne yaparız, 1 den 100 e kadar iterasyon şeklinde sms okuyup, cevaplandırırız. Fakat paralel programlama da ise örneğin 4 process kullansak, her birine 25 sms veririz. Her biri bir sms okur aynı anda, yani aynı anda 4 sms okur ( tam aynı anda olmaz aslında çünkü I/O cihazına aynı anda sadece bir process ulaşabilir ) gibi bir durum oluşur.&lt;br /&gt;&lt;br /&gt;Fakat bilgisayar mimarisi ve işletim sistemleri konularından da bildiğimiz üzere bu işlemde 4 prcess kullanacağımız zaman 4 kat hızlanma gerçekleşmez. Çünkü programın bir kısmı yine seri olarak yapılacaktır ( zorunludur diyebiliriz). Bunun için &lt;a href="http://en.wikipedia.org/wiki/Amdahl_law"&gt;Amdahl's Law&lt;/a&gt; incelenebilir.&lt;br /&gt;&lt;br /&gt;En çok kullanılan durumlardan bir tanesi de matris üzerinde işlem yapma olayıdır. Örneğin matris çarpımı, matris toplamı veya 2 arrayin toplamı gibi işlemler paralel programlama ile çok daha hızlı bir şekilde yapılabilir.&lt;br /&gt;&lt;br /&gt;Vereceğim linkte &lt;a href="http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life"&gt;Game Of Life&lt;/a&gt; probleminin paralel programlama ile çözülmüş örneği var. Rar dosyası içerisinde Bilgisayar Mimarisi dersi için yapmış olduğum Game Of Life oyunun kodu ve raporu bulunmakta.&lt;br /&gt;&lt;br /&gt;Yakın zamanda metodların kullanımı ile ilgili yazı da yazacağım.&lt;br /&gt;&lt;br /&gt;Not : Program Linux üzerinde çalışmaktadır. Ve MPI apisi kurulu olmalıdır.&lt;br /&gt;MPI Apisini indirip kurmak için : &lt;a href="http://www.lam-mpi.org/using/docs/"&gt;http://www.lam-mpi.org/using/docs/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://afsungur.googlepages.com/MPI-GameOfLife.rar"&gt;Dosyayı indir&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-2865173866141398660?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/2865173866141398660/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/06/mpi-ile-paralel-programlama.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2865173866141398660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2865173866141398660'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/06/mpi-ile-paralel-programlama.html' title='MPI ile Paralel Programlama'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-9067563046523510984</id><published>2008-06-06T09:00:00.000-07:00</published><updated>2008-08-10T05:06:41.914-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSP'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle - PL/SQL'/><title type='text'>JSP - Oracle - Array Gonderme</title><content type='html'>Bazı durumlarda JSP sayfamızdan Oracledaki procedurumuze array gondermek isteyebiliriz. Bunun icin ilk olarak yapmamız gereken Oracle'da bir array type tanımlamak.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;CREATE OR REPLACE TYPE INTEGERARRAYTYPE_TY AS TABLE OF INTEGER&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Daha sonra Procedurumuzun parametre kismina bu array tipinde bir degisken yazacagiz:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;CREATE OR REPLACE FUNCTION INSERT_LINE(vLineCode IN VARCHAR, arrStations IN INTEGERARRAYTYPE_TY)&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Daha sonra JSP sayfamızdan Array ile ilgili işlemleri yapmamız gerekiyor.&lt;br /&gt;İlk olarak jsp sayfamızda ilgili sınıfları import edelim:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;%@page language="java" import="oracle.sql.ARRAY"%&amp;gt;&lt;br /&gt;&amp;lt;%@page language="java" import="oracle.sql.ArrayDescriptor"&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Daha sonra arrayimizi olusturup, import ettigimiz sinifa ait nesneleri olusturalim.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;Integer arrStations[] = new Integer[3];&lt;br /&gt;arrStations[0]= 0;&lt;br /&gt;arrStations[1]= 1;&lt;br /&gt;arrStations[2]= 2;&lt;br /&gt;&lt;br /&gt;ArrayDescriptor desc1 = ArrayDescriptor.createDescriptor("INTEGERARRAYTYPE_TY",Conn);&lt;br /&gt;ARRAY input1 = new ARRAY(desc1, Conn, arrStations);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;ArrayDescriptor nesnesi olustururken, createDescriptor metodunu kullaniyoruz. Bu metod 2 parametre aliyor. İlki bizim Oracle da olusturdugumuz integer array tipi, digeri ise jspden oracle'a baglanirken kullandigimiz Connection sınıfından türetilmis Conn nesnesi.&lt;br /&gt;&lt;br /&gt;Conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:XE",&lt;br /&gt;    "IETT","****");&lt;br /&gt;&lt;br /&gt;Buraya kadar olan islemlerde arrayimiz jsp sayfamizda olustu. Sirada, bunu gonderme islemi var.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt; &lt;br /&gt; CallableStatement cstmt = null;&lt;br /&gt; String sql = "{call ? := INSERT_LINE(?,?)}";&lt;br /&gt; try&lt;br /&gt; {&lt;br /&gt;  cstmt = Conn.prepareCall(sql);&lt;br /&gt;  cstmt.setString(2,strLineCode_tr);&lt;br /&gt;  cstmt.setArray(3,input1);&lt;br /&gt;  cstmt.registerOutParameter(1,Types.INTEGER);&lt;br /&gt;  int b = cstmt.executeUpdate();&lt;br /&gt;  int sonuc = cstmt.getInt(1);&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;        catch(Exception e) {}&lt;br /&gt;        finally {}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;CallableStatement kullaniyoruz burada. Bu sinifin setArray fonksiyonunu cstmt nesnesinden cagiriyoruz. Bu metod 2 parametre aliyor. Ilki parametre sirasi, insert_line oracle fonksiyonunun 2.parametresi oluyor bu array. Return degeri ilk parametre oldugu icin dogal olarak sirasi 3 oluyor. setArray metodunun 2.parametresi ise ARRAY sınıfından türetilen nesne oluyor. Bu da yukarıda önceden ürettiğimiz ARRAY sınıfına ait input1 nesnesi.&lt;br /&gt;&lt;br /&gt;Bu sekilde arrayimizi oracleda bir fonksiyona gondermis olduk. Biraz zahmetli bir ise benziyor. Eger daha performansli ve kolay bir yol bulursam yine paylasacagim.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-9067563046523510984?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/9067563046523510984/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/06/jsp-oracle-array-gonderme.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/9067563046523510984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/9067563046523510984'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/06/jsp-oracle-array-gonderme.html' title='JSP - Oracle - Array Gonderme'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-6607323288235166098</id><published>2008-06-01T02:13:00.000-07:00</published><updated>2008-06-01T02:20:14.342-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Map Api'/><title type='text'>Google Map Api - Ders 8 - Bir koordinata Odaklan</title><content type='html'>Bu özellik zaten önceden bahsettiğim özelliklerden bir kaç fonksiyonu kullanılarak yapılabilir. 2 Textfield'a kullanıcıdan enlem ve boylam değerleri istenilerek haritada istenilen koordinata odaklanılabilir. Hareket halindeki nesne takibinde bu özellik işe yarayacaktır.&lt;br /&gt;&lt;br /&gt;Kullanılan 2 fonskyionumuz var:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;map.setCenter(new GLatLng(enlem,boylam));&lt;br /&gt;map.setZoom(zoomSeviyesi);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;İlgili Örnek için :&lt;br /&gt;&lt;a href="http://afsungur.googlepages.com/map_ornek_10.html"&gt;&lt;br /&gt;http://afsungur.googlepages.com/map_ornek_10.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-6607323288235166098?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/6607323288235166098/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/06/google-map-api-ders-8-bir-koordinata.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/6607323288235166098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/6607323288235166098'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/06/google-map-api-ders-8-bir-koordinata.html' title='Google Map Api - Ders 8 - Bir koordinata Odaklan'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-6188982412840289825</id><published>2008-05-22T13:52:00.000-07:00</published><updated>2008-05-22T14:10:00.395-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Map Api'/><title type='text'>Google Map Api - Ders 7 - PolyLine Oluşturmak</title><content type='html'>Bazı durumlarda 2 nokta arasındaki mesafeyi yolu belli etmek amacıyla çizgi çizeriz. Bu bazen 2 nokta ile de sınırlı kalmayabilir. Bir yerden baska bir yere giderken uğranılması gereken yerleri de belirtmek isteyebiliriz. Bu durumlarda apimizin GPolyLine sınıfından yararlanacağız.&lt;br /&gt;&lt;br /&gt;Bunun için ilk olarak yapilmasi gereken bir GLatLng arrayi oluşturmak. Bu arrayin elemanlari birer koordinat objesi olacak ve bu arrayın pointerını GPolyLine sınıfının constructoruna parametre olarak göndereceğiz. Örnekte 10 noktalı yani 10 elemanlı bir GLatLng arrayi oluşturulmuş ve bu array GPolyLine sınıfının constructoruna parametre olarak gönderilmiştir.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;        var a = new GLatLng(41,29);&lt;br /&gt;        var b = new GLatLng(42,30);&lt;br /&gt;        koordinatlar[0] = a;&lt;br /&gt;        koordinatlar[1] = b;&lt;br /&gt;&lt;br /&gt;        polyOptions = {geodesic:true};&lt;br /&gt;        polyLine = new GPolyline(koordinatlar, "#ff0000", 5, 1, polyOptions);   &lt;br /&gt;        map.addOverlay(polyLine);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;GPolyLine sınıfının constructoru sırasıyla GLatLng arrayı, polyline çizgisinin rengi, kalınlığı, opaklığı ve çizgi özellikleri olacak şekilde 5 parametre alıyor. Polyoption ise geodesic ve clickable özellikleri var. True veya false değerlerini alabiliyor.&lt;br /&gt;&lt;br /&gt;Örnek için :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://afsungur.googlepages.com/map_ornek_9.html"&gt;http://afsungur.googlepages.com/map_ornek_9.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-6188982412840289825?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/6188982412840289825/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/05/google-map-api-ders-7-polyline.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/6188982412840289825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/6188982412840289825'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/05/google-map-api-ders-7-polyline.html' title='Google Map Api - Ders 7 - PolyLine Oluşturmak'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-8580363501510530104</id><published>2008-05-22T12:59:00.000-07:00</published><updated>2008-05-22T13:32:37.397-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Map Api'/><title type='text'>Google Map Api - Ders 6 - Hareket eden işaretçiler oluşturmak</title><content type='html'>Belki de bu apinin en çok beğendim özelliği hareket eden işaretçiler oluşturmak. Aslında burada apinin ekstradan herhangi bir özelliğini kullanmayacağız. Sadece programlama mantığımızdan yola çıkarak temel bir kaç javascript özelliği ile hareket edebilen işaretçiler oluşturacağız.&lt;br /&gt;&lt;br /&gt;Programımızı yine fonksiyonlara ayiriyoruz. En başta işaretçimizi oluşturduk bunda problem yok. &lt;br /&gt;Şimdi 4 tane metodumuz olacak.&lt;br /&gt;&lt;br /&gt;1-) startMarker() : Isaretciyi hareket icin tetikleyecek metod&lt;br /&gt;2-) stopMarker() : Isaretcinin hareketini durduracak metod&lt;br /&gt;3-) moveMarker() : Isaretciyi hareket ettirecek metod&lt;br /&gt;4-) setCoords() : Isaretcinin hareket edecegi koordinatları random olarak oluşturacak metod. Ben random koordinatlar olusturdum, arzu eden buraya elle degerler girip isaretcinin bir yol üzerinde hareket etmesini sağlayabilir. Projemde ben bu sekilde kullanmıstım. Elle degerleri girip aracları belli yol üzerinde hareket ettirebiliyordum.&lt;br /&gt;&lt;br /&gt;Javascript'te timer olaylarını biraz bilmek gerekiyor. startMarker metodunda yer alacak aşağıdaki kod , speedInterval milisaniye sonra moveMarker metodunun çalıştıracağını belirtiyor.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;function startMarker()&lt;br /&gt;{&lt;br /&gt; timerID = setTimeout("moveMarker()", speedInterval);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Peki movemarket metodunda ne yapiliyor? Random olarak urettigimiz koordinatlara işaretçinin yönlendirilmesi yapiliyyor:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;function moveMarker()&lt;br /&gt;{&lt;br /&gt;  coordObj = new GLatLng(coordY[coordSayac],coordX[coordSayac]); &lt;br /&gt;  busMarker.setLatLng(coordObj); &lt;br /&gt;  coordSayac++;&lt;br /&gt;  timerID = setTimeout("moveMarker()", speedInterval);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Fonksyionun ilk satirinda random degerler ile doldurdugumuz coordY ve coordX arraylarindan ilgili indexteki degerler ile bir koordinat objesi oluşturuluyor ( coordObj ). Daha sonra işaretçi buraya yönlendiriliyor ( busMarker.setLatLng ). Daha sonra index değeri bir arttırılıp, aynı metod speedInterval milisaniye sonra tekrar çağırılıyor.&lt;br /&gt;&lt;br /&gt;Örneğin tamamı için:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://afsungur.googlepages.com/map_ornek_8.html"&gt;http://afsungur.googlepages.com/map_ornek_8.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-8580363501510530104?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/8580363501510530104/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/05/google-map-api-ders-6-hareket-eden.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/8580363501510530104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/8580363501510530104'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/05/google-map-api-ders-6-hareket-eden.html' title='Google Map Api - Ders 6 - Hareket eden işaretçiler oluşturmak'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-1707595239285138373</id><published>2008-05-21T06:45:00.001-07:00</published><updated>2008-05-21T06:45:45.428-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Genel'/><title type='text'>İnnovasyon Nedir, ne işe yarar?</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div style=''&gt;TEB'in innovasyon ile ilgili hazırlamış olduğu güzel bir sunum:&lt;br/&gt;&lt;br/&gt;&lt;a href='http://www.myenocta.com/teb/ablms25/content/newinterface/start.html?width=792&amp;amp;height=540&amp;amp;amp;project_path=http://www.myenocta.com/teb/ablms25/content/teb/446&amp;amp;amp;'&gt;Burada&lt;/a&gt;&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-1707595239285138373?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/1707595239285138373/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/05/innovasyon-nedir-ne-ie-yarar.html#comment-form' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/1707595239285138373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/1707595239285138373'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/05/innovasyon-nedir-ne-ie-yarar.html' title='İnnovasyon Nedir, ne işe yarar?'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-2127772252598719684</id><published>2008-05-17T08:16:00.001-07:00</published><updated>2008-05-17T08:16:47.019-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Genel'/><title type='text'>Kardemir Karabükspor Bank Asya 1. Lig'de</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;a href='http://www.karabukspor.org'&gt;&lt;img src='http://lh5.ggpht.com/afsungur/SC72syV_sUI/AAAAAAAAABQ/3IImQiVLsT4/%5BUNSET%5D.gif' style='max-width: 800px;'/&gt;&lt;/a&gt;Canım memleketim Karabük'ün biricik temsilcisi Kardemir Karabükspor'a Bank Asya 1. Lig'de başarılar dilerim.&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-2127772252598719684?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/2127772252598719684/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/05/kardemir-karabkspor-bank-asya-1-lig.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2127772252598719684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2127772252598719684'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/05/kardemir-karabkspor-bank-asya-1-lig.html' title='Kardemir Karabükspor Bank Asya 1. Lig&amp;#39;de'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/afsungur/SC72syV_sUI/AAAAAAAAABQ/3IImQiVLsT4/s72-c/%5BUNSET%5D.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-2367741680613203353</id><published>2008-05-13T01:18:00.001-07:00</published><updated>2008-05-13T02:10:53.406-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Map Api'/><title type='text'>Google Map Api - Ders 5 - İşaretçi Eventleri ve Draggable işaretçiler</title><content type='html'>İşaretçiler üzerinde Event olaylarından bahsedeceğim. Ayrıca bu yazıda dinamik, hareket edebilen işaretçilerden de bahsedeceğim.&lt;br /&gt;&lt;br /&gt;Bu özellik de apinin en çok kullanılan özelliklerinden birisi. İşaretçiler üzerinde yapılabilecek event işlemleri:&lt;br /&gt;&lt;br /&gt;mousedown,mouseup,click,dragstart,drag,dragend.&lt;br /&gt;&lt;br /&gt;Örneğin işaretçiye tıklandığında bir balon içerisinde bize bir mesaj yazılsın. Bunun için GEvent classının statik metodlarından yararlanıyoruz.&lt;br /&gt;&lt;br /&gt;GEvent.addListener(busMarker, "click", function() {&lt;br /&gt;// yapilacak islemler&lt;br /&gt;// ...&lt;br /&gt;// ...&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Eğer işaretçi üzerine tıklarsanız yapılacak işlemler kısmındaki kod parçası çalışacaktır. Önceden dediğimiz gibi bir balon çıkmasını sağlayalım. Bunun için GMap2 classının openInfoWindowHtml metodundan yararlanacağız. Bu metodun parametrelerinin ilki GLatLng objesi, 2. si ise yazılacak mesaj.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;var myHtml = &amp;lt;b&amp;gt;&amp;amp;quote Isareci uzerine tikladiniz... Bu bir html mesaji &amp;lt;/b&amp;gt;&amp;amp;quote&lt;br /&gt;var latlng = new GLatLng(41,29);&lt;br /&gt;map.openInfoWindowHtml(latlng, myHtml);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Burada dikkat edilmesi gereken openInfoWindowHtml metoduna gönderilen latlang objesinin koordinatlarının marker ile aynı olması gerektiğidir. Eğer aynı olmaz ise siz işaretçiye tıklarsanız başka koordinat üzerinde bulut çıkabilir. Tabi bu yine size ve programınıza bağlı.&lt;br /&gt;&lt;br /&gt;Tam bir örnek için : &lt;a href="http://afsungur.googlepages.com/map_ornek_6.html"&gt;http://afsungur.googlepages.com/map_ornek_6.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Draggable İşaretçiler&lt;br /&gt;&lt;/span&gt;Bu işaretçiler önceden anlatılan statik işaretçiler gibi sabit bir şekilde yer almayabilirler. Kullanıcı isterse bu işaretçileri hareket ettirebilir. Bu hareket sayesinde harita üzerindeki bir çok farklı bölge üzerinde gezinebilir. Buraların koordinatları alınabilir, editlenebilir, veritabanına atılabilir vs. vs.. Bir çok şey yapılabilir. Bunun için ilk olarak işaretçimizin draggable olarak yani suruklenebilir olarak ayarlanmasi gerekiyor.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;markeroptions = {draggable: true,icon: greenIcon };&lt;br /&gt;busMarker = new GMarker(center,markeroptions);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;şeklinde yeni draggable markerimizi oluşturabiliriz.&lt;br /&gt;&lt;br /&gt;Peki draggable işaretçilerin ek özellikleri neler? Örneğin 3 yeni event listener draggable işaretçiler ile kullanılabiliyor.&lt;br /&gt;dragstart,drag,dragend&lt;br /&gt;dragstart -&gt; sürükleme işlemi başladığı anda yapılacak işler&lt;br /&gt;drag -&gt; sürükleme esnasında yapılacak işler&lt;br /&gt;dragend -&gt; sürükleme bırakıldığında yapılacak işler için listener görevi görüyor.&lt;br /&gt;&lt;br /&gt;yine GEvent classından yararlanıyoruz:&lt;br /&gt;&lt;br /&gt;GEvent.addListener(busMarker,"dragstart",function() {&lt;br /&gt;// surukleme basladiginda yapilacak isler&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;GEvent.addListener(busMarker,"drag",function() {&lt;br /&gt;// surukleme devam ettiginde yapilacak isler&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;GEvent.addListener(busMarker,"dragend",function() {&lt;br /&gt;// surukleme bittiginde yapilacak isler&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Az sonra verecegim ornekte 2 isaretci olacak. Biri yesil, digeri mavi. Yesili hareket ettirdiginiz surece yesil isaretcinin koordinatlarını bir div bolgesinde goreceksiniz. Maviyi hareket ettirmeye basladiginiz ve suruklemeyi biraktiginiz anda belli bir div bölgesinde mesaj goreceksiniz.&lt;br /&gt;&lt;br /&gt;Ornek 7 : &lt;a href="http://afsungur.googlepages.com/map_ornek_7.html"&gt;http://afsungur.googlepages.com/map_ornek_7.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-2367741680613203353?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/2367741680613203353/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/05/google-map-api-ders-5-iareti-eventleri.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2367741680613203353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2367741680613203353'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/05/google-map-api-ders-5-iareti-eventleri.html' title='Google Map Api - Ders 5 - İşaretçi Eventleri ve Draggable işaretçiler'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-2153746410795434184</id><published>2008-05-13T01:00:00.001-07:00</published><updated>2008-05-13T01:13:20.094-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Map Api'/><title type='text'>Google Map Api - Ders4 - İşaretçinin Koordinatını Alma</title><content type='html'>Oluşturduğumuz işaretçilerin bazen koordinatlarını alıp işlememiz gerekebilir. Ders 3'teki işaretçimizin koordinatlarını alıp belli değer ile arttırarak yeni işaretçiler oluşturabiliriz. Yaratıcı düşünce size ait, yüzlerce binlerce şey yapabilirsiniz. Önemli olan temel komutları öğrenmek.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;var temp = new GLatLng();&lt;br /&gt;temp = busMarker.getLatLng();&lt;br /&gt;enlem_degeri = temp.lat();&lt;br /&gt;boylam_degeri = temp.lng();&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Bir koordinat objesi ( GLatLng ) objesi oluşturduktan sonra buna işaretçimizin ( busMarker ) koordinatlarını atıyoruz. Daha sonra GLatLng sınıfının metodları olan lat(), lng() metodlarını temp objesinden çağırıyoruz. Eğer object oriented programlama biliyorsanız bu işleri anlamanız gerçekten çok kolay ! Daha sonra enlem ve boylam degerlerini sırasıyla çekiyoruz.&lt;br /&gt;&lt;br /&gt;İşaretçinin konumunu belli bir div bölgesine yazdıran örnek yapalım:&lt;br /&gt;&lt;br /&gt;Örnek : &lt;a href="http://afsungur.googlepages.com/map_ornek_5.html"&gt;http://afsungur.googlepages.com/map_ornek_5.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-2153746410795434184?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/2153746410795434184/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/05/google-map-api-ders4-iaretinin.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2153746410795434184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2153746410795434184'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/05/google-map-api-ders4-iaretinin.html' title='Google Map Api - Ders4 - İşaretçinin Koordinatını Alma'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-1010051992191086727</id><published>2008-05-12T14:45:00.001-07:00</published><updated>2008-05-12T15:11:33.253-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Map Api'/><title type='text'>Google Map Api - Ders 3 - İşaretçiler</title><content type='html'>İşaretçiler, harita üzerinde bir koordinatı belirtmek için kullanılan bir simge olarak karşımıza çıkıyor. Örneğin bulunduğunuz evin koordinatını biliyorsanız bu map üzerinde tam evinizin üstüne bir işaretçi koyabilirsiniz. Eğer koordinatları bilmiyorsanız üzülmeyin, ileriki derslerde de bu konuya değineceğiz.&lt;br /&gt;&lt;br /&gt;İşaretçileri genel olarak 2 kısma ayırabiliriz. Statik ve dinamik işaretçiler.&lt;br /&gt;Bu derste belirtilen koordinata bir işaretçi eklemeyi göstereceğiz.&lt;br /&gt;&lt;br /&gt;İşaretçi oluşturmak için GMarker sınıfından yararlanacağız. Bu sınıfın constructoru genel olarak 2 paremetre alır. İlki oluşacak işaretçinin koordinatı, 2.si ise işaretçinin özellikler ( rengi, büyüklüğü .. )&lt;br /&gt;&lt;br /&gt;var busMarker = new GMarker(center,markeroptions);&lt;br /&gt;&lt;br /&gt;şeklinde işaretçimizi oluşturabiliriz. Fakat center ve marker options nesnelerini bu kodu çalıştırmadan önce set etmemiz gerekiyor.&lt;br /&gt;&lt;br /&gt;center nesnesi bir GLatLng obbjesi. Yani işaretçinin koordinatlarının belirlendiği obje. Harita üzerinde 41,29 noktasına bir işaretçi koymak istediğimizi düşünürsek, center nesnesini şu şekilde oluşturmamız gerekiyor:&lt;br /&gt;&lt;br /&gt;var center = new GLatLng(41,29);&lt;br /&gt;&lt;br /&gt;Center nesnemizi oluşturduk. Daha sonra markeroptions nesnemizi oluşturmamız gerekiyor. Peki bu nesne de neyin nesi?&lt;br /&gt;Bu nesne işaretçinin özelliklerinin belirlenmesini sağlayan bir nesne. Örneğin işaretçimizin yeşil renkli bir Google Map standart işaretçisi olmasını istiyoruz.&lt;br /&gt;&lt;br /&gt;İlk olarak bir icon nesnesi oluşturalım:&lt;br /&gt;&lt;br /&gt;var greenIcon = new GIcon(G_DEFAULT_ICON);&lt;br /&gt;greenIcon.image =  "http://gmaps-samples.googlecode.com/svn/trunk/markers/green/blank.png";&lt;br /&gt;&lt;br /&gt;bu image özelliğinde kullanılan png dosyasının pathini siz kendiniz de değiştirebilirsiniz hiç sorun değil.&lt;br /&gt;&lt;br /&gt;icon nesnesinin image  özelliğinden başka bir çok özelliği mevcut, mesela iconSize bunlardan birisi. greenIcon.iconSize = ... diyerek iconun büyüküğünü de ayarlamış oluyorsunuz.&lt;br /&gt;&lt;br /&gt;greenIcon.shadow = "http://...."; diyerek iconun gölgesinin pathini ayarlayabiliyorsunuz.&lt;br /&gt;&lt;br /&gt;iconumuzu oluşturduk diyelim, şimdi sıra geldi markeroptions nesnemizi oluşturmaya:&lt;br /&gt;&lt;br /&gt;var markeroptions = {draggable: false,icon: greenIcon };&lt;br /&gt;&lt;br /&gt;bu şekilde de markeroptions nesnemizi oluşturabiliyoruz. Bu marker nesnesi draggable özelliği false olduğundan dolayı sürüklenemez bir işaretçi yani statik. Tabi daha bir çok özelliği var bu markeroptions'un..&lt;br /&gt;&lt;br /&gt;clickable: true/false&lt;br /&gt;bounceGravity : marker sürüklenip bırakıldığında markerin yere düşme hızı. Adamlar bunu bile düşünmüş ben başka bişi demiyorum :D ( bu arada bu int değeri alıyo - default 1)&lt;br /&gt;title : String&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;burada bir kaç tanesinden bahsettiğim özellikleri referans sayfasında bulabilirsiniz.&lt;br /&gt;&lt;br /&gt;En son olarak da map nesnesine bu ürettiğimiz marker nesnesini harita üzerine konumlandırmasını söylüyoruz :&lt;br /&gt;&lt;br /&gt;map.addOverlay(busMarker);&lt;br /&gt;&lt;br /&gt;örnek : &lt;a href="http://afsungur.googlepages.com/map_ornek_4.html"&gt;http://afsungur.googlepages.com/map_ornek_4.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Gelecek derslerde işaretçilerin derinliklerine doğru inilecek... Bu işin ben zevkli olduğunu düşünüyorum.. İnsanın aklına yüzlerce fikir geliyor bu harita apisini kullandıktan sonra..&lt;br /&gt;&lt;br /&gt;Google MAP APi Reference : http://code.google.com/apis/maps/documentation/reference.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-1010051992191086727?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/1010051992191086727/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/05/google-map-api-ders-3-iaretiler.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/1010051992191086727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/1010051992191086727'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/05/google-map-api-ders-3-iaretiler.html' title='Google Map Api - Ders 3 - İşaretçiler'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-2195151843170905881</id><published>2008-05-12T13:46:00.000-07:00</published><updated>2008-05-12T14:11:48.009-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Map Api'/><title type='text'>Google Map Api - Ders 2 - Harita Özellikleri</title><content type='html'>Google Map Api'de harita için kullandığımız Map nesnelerinin bir çok fonksiyonu var. Bunlardan bir kaç tane önemli olanı açıklamakta fayda var.&lt;br /&gt;&lt;br /&gt;Örneğin oluşturduğumuz harita nesnesine eklenecek şu 2 metodu inceleyerek, önceki örneğimizle aradaki farkı görelim.&lt;br /&gt;&lt;br /&gt;map.addControl(new GLargeMapControl());&lt;br /&gt;map.addControl(new GMapTypeControl());&lt;br /&gt;&lt;br /&gt;Bu 2 metod haritaya 2 özellik katıyor. İlki zoom olayını sağlama, bu şekilde zoom ölçüsünü kullanıcı kendi bir slider aracılığı ile belirleyebiliyor. 2. si ise harita özelliğini değiştirebilme imkanını sağlayan metod. Bu sayede haritayı isterseniz yol haritası, isterseniz uydu fotoğrafı veya her ikisini hibritleyerek gösterme imkanına sahip olabiliyorsunuz.&lt;br /&gt;&lt;br /&gt;Örnek için : &lt;a href="http://afsungur.googlepages.com/map_ornek_2.html"&gt;http://afsungur.googlepages.com/map_ornek_2.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;setMapType(&lt;span class="type" title="type:  GMapType"&gt;type&lt;/span&gt;)&lt;br /&gt;removeMapType(&lt;span class="type" title="type:  GMapType"&gt;type&lt;/span&gt;) metodlarını da direk set etmek veya tipi silmek için kullanabilirsiniz.&lt;br /&gt;&lt;br /&gt;Bir map nesnesi oluştururken GMap classının constructoruna ek parametreler göndererek harita özelliklerini değiştirebilirsiniz.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;         map = new GMap2(document.getElementById("map_canvas"),&lt;br /&gt;&lt;br /&gt;            { size:new GSize(800,600),&lt;br /&gt;&lt;br /&gt;             draggableCursor:"move",&lt;br /&gt;&lt;br /&gt;             draggingCursor:"crosshair"&lt;br /&gt;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            );&lt;br /&gt;&lt;/code&gt;Örneğin yukarıda GMap2 constructoruna ek parametreler dizisi gönderdik.&lt;br /&gt;size burada harita boyutunu belirtiyor. draggingCursor, haritayı drag ederken ki cursor şeklini belirtiyor.&lt;br /&gt;Diğer özellikleri Google MAP Api reference 'dan edinebilirsiniz.&lt;br /&gt;&lt;br /&gt;Örnek 3 : &lt;a href="http://afsungur.googlepages.com/map_ornek_3.html"&gt;http://afsungur.googlepages.com/map_ornek_3.html &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-2195151843170905881?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/2195151843170905881/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/05/google-map-api-ders-2-harita-zellikleri.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2195151843170905881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2195151843170905881'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/05/google-map-api-ders-2-harita-zellikleri.html' title='Google Map Api - Ders 2 - Harita Özellikleri'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-874664383494202649</id><published>2008-05-12T12:46:00.001-07:00</published><updated>2008-05-12T14:26:44.664-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Map Api'/><title type='text'>Google Map Api - Ders 1 - Haritayı Sayfaya Yükleme</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Bunun için ilk olarak Google hesabımız&lt;br /&gt;olması gerekiyor. Ve apiyi kullanabilmemiz için bir key almamız gerekiyor. Bu çok da önemli bir şey değil. Çünkü ben rasgele web sitesi ismi yazarak da bu keyi aldım. Localhostta harita sorunsuz çalışıyor. Fakat yine de gerçek veri yazabiliyor isek yazmak lazım.Aksi takdirde her sayfa açılışında alert alabiliriz.&lt;br /&gt;&lt;br /&gt;http://code.google.com/apis/maps/signup.html adresinden keyi alabilirsiniz.&lt;br /&gt;&lt;br /&gt;Key aldıktan sonra yapmanız gereken aşağıdaki kodu sayfanızda head tagleri arasına yerleştirmeniz.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script src="http://maps.google.com/maps?file=api&amp;amp;v=2&amp;amp;key=ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA"&lt;br /&gt;&lt;br /&gt;type="text/javascript"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Daha sonra yapmamız gereken ilk iş haritamızın yerleşecegi div bolgesini ayarlamak.&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;div id="map_canvas" style="width: 500px; height: 300px"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;yazarak div bölgesini ayarlayabiliyoruz. Bu bölge herhangi bir tablonun gözü olabilir, sayfanın en uç noktası, en başı olabilir bu size kalmış. Daha sonra bu div bölgesine haritayı basmamız gerekiyor. Onun için artık javascript metodumuzu yazmamız gerek.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  function initialize() {&lt;br /&gt;&lt;br /&gt;    if (GBrowserIsCompatible()) {&lt;br /&gt;&lt;br /&gt;      var map = new GMap2(document.getElementById("map_canvas"));&lt;br /&gt;&lt;br /&gt;      map.setCenter(new GLatLng(41.028, 28.293), 13);&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Yukarıdaki javascript kodunu head tagleri arasina yerlestiriyoruz. Burada yapılan iş map_canvas div bolgesine haritayı basmak ve harita ilk açıldığında merkez olarak alınacak koordinatın map.setCenter metodu ile belirlenmesi.&lt;br /&gt;&lt;br /&gt;GMap Clasına ait olan setCenter metodu görüldüğü gibi GLatLng sınıfına ait bir obje almış. Bu objeyi bir koordinat objesi olarak nitelendirebiliriz.&lt;br /&gt;Kodu su sekilde de yazabilirdik:&lt;br /&gt;GLatLng classının constr. ilk parametresi enlem, 2.si boylam buna dikkat!!!&lt;br /&gt;&lt;br /&gt;var a = new GLatLng(41.028,28.903);&lt;br /&gt;map.setCenter(a,13);&lt;br /&gt;&lt;br /&gt;Buradaki 13 sayisi ise zoom seviyesini gösteriyor. 1 en düşük değer oluyor, 14 en büyük değer oluyor. Bazı durumlarda 15 de geçerli olabiliyor. Çekilen uydu fotoğrafına göre...&lt;br /&gt;&lt;br /&gt;Tabi unutmadan bu initialize metodunun sayfa acilirken hemen yuklenmesini istiyor isek body load kismina su sekilde koymamiz lazim:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;body onload="initialize()" onunload="GUnload()"&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Bu sekilde haritamizi sayfamiza yuklemis oluyoruz.&lt;br /&gt;&lt;br /&gt;Örnek 1 : &lt;a href="http://afsungur.googlepages.com/a.html"&gt;http://afsungur.googlepages.com/a.html&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-874664383494202649?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/874664383494202649/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/05/google-map-api-ders-1-haritay-sayfaya.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/874664383494202649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/874664383494202649'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/05/google-map-api-ders-1-haritay-sayfaya.html' title='Google Map Api - Ders 1 - Haritayı Sayfaya Yükleme'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-5592612622215171208</id><published>2008-05-12T12:29:00.001-07:00</published><updated>2008-05-12T12:29:05.911-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Map Api'/><title type='text'>Google Map Api</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Bu sene okulumuzdaki bilgisayar projesi için İett Araç Takip sisteminin simülasyonunu gerçekleştirdim. Bunun için hayatımıza anlam katan Google'ın , Map Apisinden yararlanmam kaçınılmaz oldu. Gerçekten adamlar yapmışlar diyorsunuz. Uğraşmışlar, didinmişler bizler için developerlar için apiyi hazırlamışlar. Bir süredir bu api ile uğraşıyordum. Artık öğrendiklerimi paylaşmanın vakti geldi. Basit örnekler ile bu apiden nasıl yararlanacağımızdan projelerimize nasıl entegre edeceğimizden bahsedeceğim.&lt;br/&gt;Görüşmek üzere..&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-5592612622215171208?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/5592612622215171208/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/05/google-map-api.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/5592612622215171208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/5592612622215171208'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/05/google-map-api.html' title='Google Map Api'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-2104928571314612345</id><published>2008-04-12T08:22:00.000-07:00</published><updated>2008-04-12T08:29:06.653-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='SMS'/><title type='text'>Java SMS Api v1.0</title><content type='html'>Hi everybody. At last, i've finished my SMS Api. May be it is not an API because it has only four classes that handle the SMSs.&lt;br /&gt;&lt;br /&gt;After read the user guide carefully because installing and running this class some complicated. If you encounter any problem, sending an email that contains your problems, i want to help you to install and run this api.&lt;br /&gt;&lt;br /&gt;May be there are some bugs, i have not checked them comprehensively. I will fix them later version. &lt;br /&gt;&lt;br /&gt;Thank you,&lt;br /&gt;&lt;br /&gt;Download this api : &lt;br /&gt;&lt;a href="http://afsungur.googlepages.com/SMSApi.rar"&gt;http://afsungur.googlepages.com/SMSApi.rar&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-2104928571314612345?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/2104928571314612345/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/04/java-sms-api-v10.html#comment-form' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2104928571314612345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2104928571314612345'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/04/java-sms-api-v10.html' title='Java SMS Api v1.0'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-7627842060546421642</id><published>2008-04-09T08:39:00.001-07:00</published><updated>2008-06-01T01:24:39.440-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>XML Valid</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Yazdığınız XML dosyalarınızı yine kendi yazdığınız DTD veya SCHEMA dosyalarıyla kontrol edebiliyorsunuz. XML Validator işleminin düzgün yapılıp yapılmadığını öğrenebileceğiniz kullanımı gayet kolay bir yazılım var:&lt;br /&gt;&lt;br /&gt;Stylus Studio 2008 XML Enterprise Suite&lt;br /&gt;&lt;br /&gt;indirmek için : &lt;a href="http://www.stylusstudio.com/xml_download.html" target="_blank"&gt;&lt;span class="a"&gt;www.&lt;b&gt;stylus&lt;/b&gt;&lt;b&gt;studio&lt;/b&gt;.com/&lt;b&gt;xml&lt;/b&gt;_&lt;b&gt;download&lt;/b&gt;.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Web üzerinden Schema Kontrolu ( biraz agir calissa da gereksinimleri karsilamakta ) :&lt;br /&gt;&lt;a href="http://tools.decisionsoft.com/schemaValidate/" target="_blank"&gt;http://tools.decisionsoft.com/schemaValidate/&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-7627842060546421642?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/7627842060546421642/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/04/xml-valid.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/7627842060546421642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/7627842060546421642'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/04/xml-valid.html' title='XML Valid'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-8897840404738302152</id><published>2008-04-06T04:57:00.000-07:00</published><updated>2008-04-06T06:16:18.514-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>XML ve XSLT</title><content type='html'>XML, data change ve veri sakalamak için kullanabilecegimiz platform bagımsız oldukca elverisli bir teknoloji. Cok yaygın kullanımından dolayı bu yapıyı iyi anlamak gerekiyor. Çünkü yeri geldiğinde çok farklı cihazlar arasında veri alış-verişi yapılıyor ve bu veri alış-verişinin bir standart kullanılarak yapılması ilerde başka şahıslar tarafından bu işlemin geliştirilmesini sağlayabilir.&lt;br /&gt;&lt;br /&gt;XML olmadığını düşünelim, Şöyle ki bir elektronik cihazdan bilgisayara veri okuyacaksınız. Elektronik cihaza bir kod embed ettiniz, bu kodda 5 tane arac bilgisi var diyelim ve bunları su sekilde cihaza kaydediyoruz:&lt;br /&gt;&lt;br /&gt;Nesne1||Otobus||Plaka||34 OO 9899||Kapasite||200||Marka||Mercedes&lt;br /&gt;Nesne2||Otobus||Plaka||34 aa 1121||Kapasite||400||Marka||Mercedes&lt;br /&gt;Nesne3||Araba||Plaka||34 PP 3311||Kapasite||5||Marka||AUDI&lt;br /&gt;&lt;br /&gt;Görüldüğü gibi bu kodda veya kod demeyelim, bu fileda araclara ait bilgiler var. Bilgiler karmasık bir düzende kaydedilmiş. Bunu okumak gercekten zor. Hadi biz bunu pcde kendi yazdıgımız bir prog.la okuduk diyelim bilgisayar tarafından, fakat başka birisi yine bunu okuyamayacak, aynı programın onda da olması gerekiyor. Bu yüzden bu işin bir standartlaştırmaya kavuşması gerekiyor. Belli kurallar dahilinde dataların saklanması gerekiyor ki bu işlem evrensel olsun, milyonlarca insan tarafından kullanılabilsin. O yüzden XML geliştirilmiş bu işin standartlaştırılması sağlanmıştır.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;&amp;lt;nesneler&amp;gt;&lt;br /&gt;&amp;lt;nesne id="1"&amp;gt;&lt;br /&gt;    &amp;lt;tip&amp;gt;Otobus&amp;lt;/tip&amp;gt;&lt;br /&gt;    &amp;lt;plaka&amp;gt;34 00 9899&amp;lt;/plaka&amp;gt;&lt;br /&gt;    &amp;lt;kapasite&amp;gt;200&amp;lt;/kapasite&amp;gt;&lt;br /&gt;    &amp;lt;marka&amp;gt;Mercedes&amp;lt;/marka&amp;gt;&lt;br /&gt;&amp;lt;/nesne&amp;gt;&lt;br /&gt;&amp;lt;nesne id="2"&amp;gt;&lt;br /&gt;    &amp;lt;tip&amp;gt;Otobus&amp;lt;/tip&amp;gt;&lt;br /&gt;    &amp;lt;plaka&amp;gt;34 aa 1121&amp;lt;/plaka&amp;gt;&lt;br /&gt;    &amp;lt;kapasite&amp;gt;400&amp;lt;/kapasite&amp;gt;&lt;br /&gt;    &amp;lt;marka&amp;gt;Mercedes&amp;lt;/marka&amp;gt;&lt;br /&gt;&amp;lt;/nesne&amp;gt;&lt;br /&gt;&amp;lt;nesne id="3"&amp;gt;&lt;br /&gt;    &amp;lt;tip&amp;gt;Araba&amp;lt;/tip&amp;gt;&lt;br /&gt;    &amp;lt;plaka&amp;gt;34 PP 3311&amp;lt;/plaka&amp;gt;&lt;br /&gt;    &amp;lt;kapasite&amp;gt;5&amp;lt;/kapasite&amp;gt;&lt;br /&gt;    &amp;lt;marka&amp;gt;AUDI&amp;lt;/marka&amp;gt;&lt;br /&gt;&amp;lt;/nesne&amp;gt;&lt;br /&gt;&amp;lt;/nesneler&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Yukarıdaki file'ı araclar.xml olarka kaydedip, çift tıkladığımızda ağaç yapısına benzer bir yapıyı göreceğiz. Çünkü şu ana kadar HTML'den yararlanmadık. Şimdi bu XML dosyasını HTML içinde XSLT ile görüntülemeye çalışalım.&lt;br /&gt;&lt;br /&gt;İlk olarak XML File'ımızın 2.satırına yani &amp;lt;?xml version.. ile başlayan satırın bir altına şu satırı ekliyoruz :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&amp;lt;?xml-stylesheet type="text/xsl" href="araclar.xsl"?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;araclar.xsl dosyası araclar.xml dosyasıyla aynı klasörde bulunmakta ve araclar.xml dosyasının çift tıklanıp açıldığında anlamlı bir şekilde yani html gibi görüntülenmesini sağlayacak.&lt;br /&gt;&lt;br /&gt;Peki araclar.xsl dosyasını nasıl oluşturuyoruz.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;&amp;lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&amp;gt;&lt;br /&gt;&amp;lt;xsl:template match="/"&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Yukarıdaki ifadelerden ilk ikisini tanıyoruz. 3. satırdaki ise XPath olayını belirtiyor. XPath ne? XPath aynı directory yapısı gibi çalışıyor. XML deki node'lara ulaşmamız için bir path tanımlıyoruz. Buradaki onu belirtiyor. Aşağıdaki satırlarda olayı daha iyi anlayacağız.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;h2&amp;gt; Vehicles &amp;lt;/h2&amp;gt;&lt;br /&gt;&amp;lt;table border="1"&amp;gt;&lt;br /&gt;    &amp;lt;tr&amp;gt;&lt;br /&gt;       &amp;lt;th&amp;gt;Tip&amp;lt;/th&amp;gt;&lt;br /&gt;       &amp;lt;th&amp;gt;Plaka&amp;lt;/th&amp;gt;&lt;br /&gt;       &amp;lt;th&amp;gt;Kapasite&amp;lt;/th&amp;gt;&lt;br /&gt;       &amp;lt;th&amp;gt;Marka&amp;lt;/th&amp;gt;&lt;br /&gt;    &amp;lt;/tr&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;tablomuzu oluşturduk ve başlıklarını ekledik şimdi sıra geldi tablonun rowlarını doldurmaya :&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;    &amp;lt;xsl:for-each select="nesneler/nesne"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;directory'e ulaşır gibi xml de nodedan nodea atlıyoruz. nesneler nodundan nesne noduna atlıyoruz.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;    &amp;lt;xsl:sort select="kapasite" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;bilgilerin kapasite degerlerine gore sıralanmasını istedik. burada ascending sıralama gerceklesiyor. dilenirse order="" attribute ile bu deger degistirilebilir&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;    &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;choose deyimi switch yapısına benziyor. when keywordleri switch yapısındaki case'lere, otherwise ise default kısmına denk düşüyor.&lt;br /&gt;&lt;br /&gt;  &lt;span style="font-weight:bold;"&gt;  &amp;lt;xsl:when test="kapasite&amp;lt;100"&amp;gt;&lt;br /&gt;       &amp;lt;tr&amp;gt;&lt;br /&gt;          &amp;lt;td bgcolor="red"&amp;gt;&amp;lt;xsl:value-of select="tip" /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;          &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select="plaka" /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;          &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select="kapasite" /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;          &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select="marka" /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;       &amp;lt;/tr&amp;gt;&lt;br /&gt;    &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;    &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;       &amp;lt;tr&amp;gt;&lt;br /&gt;          &amp;lt;td bgcolor="yellow"&amp;gt;&amp;lt;xsl:value-of select="tip" /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;          &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select="plaka" /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;          &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select="kapasite" /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;          &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select="marka" /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;       &amp;lt;/tr&amp;gt;&lt;br /&gt;    &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;    &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;    &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;    &amp;lt;/table&amp;gt;&lt;br /&gt;    &amp;lt;/body&amp;gt;&lt;br /&gt;    &amp;lt;/html&amp;gt;&lt;br /&gt;    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt; &amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;burada yaptığımız eğer xml deki dataların yani aracların kapasiteleri 100 den kucuk ise tiplerinin arka planı "red" olarak yani kırmızı olarak, 100 den buyukse tiplerinin arka planı sarı olacak sekilde tablolarımızı doldurmus oluyoruz.&lt;br /&gt;&lt;br /&gt;KOMPLE KOD:&lt;br /&gt;&lt;br /&gt;araclar.xsl&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;&amp;lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&amp;gt;&lt;br /&gt;&amp;lt;xsl:template match="/"&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;h2&amp;gt; Vehicles &amp;lt;/h2&amp;gt;&lt;br /&gt;&amp;lt;table border="1"&amp;gt;&lt;br /&gt;    &amp;lt;tr&amp;gt;&lt;br /&gt;       &amp;lt;th&amp;gt;Tip&amp;lt;/th&amp;gt;&lt;br /&gt;       &amp;lt;th&amp;gt;Plaka&amp;lt;/th&amp;gt;&lt;br /&gt;       &amp;lt;th&amp;gt;Kapasite&amp;lt;/th&amp;gt;&lt;br /&gt;       &amp;lt;th&amp;gt;Marka&amp;lt;/th&amp;gt;&lt;br /&gt;    &amp;lt;/tr&amp;gt;&lt;br /&gt;    &amp;lt;xsl:for-each select="nesneler/nesne"&amp;gt;&lt;br /&gt;    &amp;lt;xsl:sort select="kapasite" /&amp;gt;&lt;br /&gt;    &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;    &amp;lt;xsl:when test="kapasite&amp;lt;100"&amp;gt;&lt;br /&gt;       &amp;lt;tr&amp;gt;&lt;br /&gt;          &amp;lt;td bgcolor="red"&amp;gt;&amp;lt;xsl:value-of select="tip" /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;          &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select="plaka" /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;          &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select="kapasite" /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;          &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select="marka" /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;       &amp;lt;/tr&amp;gt;&lt;br /&gt;    &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;    &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;       &amp;lt;tr&amp;gt;&lt;br /&gt;          &amp;lt;td bgcolor="yellow"&amp;gt;&amp;lt;xsl:value-of select="tip" /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;          &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select="plaka" /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;          &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select="kapasite" /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;          &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select="marka" /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;       &amp;lt;/tr&amp;gt;&lt;br /&gt;    &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;    &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;    &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;    &amp;lt;/table&amp;gt;&lt;br /&gt;    &amp;lt;/body&amp;gt;&lt;br /&gt;    &amp;lt;/html&amp;gt;&lt;br /&gt;    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt; &amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-8897840404738302152?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/8897840404738302152/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/04/xml-ve-xslt.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/8897840404738302152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/8897840404738302152'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/04/xml-ve-xslt.html' title='XML ve XSLT'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-5684507619762903585</id><published>2008-03-31T10:35:00.001-07:00</published><updated>2008-06-02T03:29:24.869-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='SMS'/><title type='text'>Java Sms Api - Haber 2</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;br /&gt;Şimdilik Nokia S40 lar için çalışan ( s60 için deneyemedim :) ) SMS Api bitmis durumda. Gözden geçiriyorum. Eksiklikler, kodda hatalar var mı? Ben de sorunsuz çalışıyor.&lt;br /&gt;&lt;br /&gt;Amacım projelerinize SMS özelliğini katabilmeniz. Gerçekten harika fikirler geliyor insanın aklına, çok güzel projeler geliyor.  Cep telefonunu insanlar her zaman taşıyorlar, onlara her zaman ulaşmak mümkün oluyor. Telefonların bu güzelliğinden yararlanarak projeler geliştirmek gerekiyor artık.&lt;br /&gt;&lt;br /&gt;Kısa bir süreliğine açık kaynak kodlu olmayacak, yani upload edeceğim jarlarda source codelar olmayacak :(&lt;br /&gt;&lt;br /&gt;Ben pcsuite bluetoothla baglanıyorum, cablo ile de olması lazım diye&lt;br /&gt;düsünüyorum deneme imkanım olmadığı için bir şey diyemeyeceğim. büyük&lt;br /&gt;ihtimalle olur diye düşünüyorum, usb de bir nevi seri port,&lt;br /&gt;baglandiginiz usb nin comport numarasını uygulamanıza girebilirseniz,&lt;br /&gt;apiyi çalıştırırsınız diye umud ediyorum.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Gereken donanım ve yazılımlar,&lt;br /&gt;-pc suite 6.82 or newer version&lt;br /&gt;-bluetooth module or usb cable&lt;br /&gt;&lt;br /&gt;az daha sabretmek lazım...&lt;br /&gt;&lt;br /&gt;sabreden derviş :&lt;br /&gt;&lt;a href="http://afsungur.googlepages.com/SMSApi.rar"&gt;&lt;br /&gt;http://afsungur.googlepages.com/SMSApi.rar&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-5684507619762903585?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/5684507619762903585/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/03/java-sms-api-haber-2.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/5684507619762903585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/5684507619762903585'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/03/java-sms-api-haber-2.html' title='Java Sms Api - Haber 2'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-9071611449321779772</id><published>2008-03-30T11:08:00.001-07:00</published><updated>2008-03-30T11:09:07.968-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java Thread Örneği - Yükleniyor Göstergesi</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;small&gt;&lt;big&gt;Java ile uygulama geliştirirken bir çok kez file'dan okuma veya database'e baglanma islemlerini gerceklestiririz. Ozellikle bazı zamanlarda saniyeler suren bir gecikme meydana gelebilir bu tip okumaları yaparken. Ve de bu isi threadsiz yapiyorsak, malesef kullanici dostu olamamisiz demek ki...&lt;br/&gt;&lt;br/&gt;Örneğin, bir butonumuz var ve bu buton veritabanına bağlanıp bize bir Connection nesnesini handle edecek. Thread kullanmaz isek butona bastığımızda buton kullanıcının veritabanına baglanma islemlerini gerceklestirme icerisinde oldugundan tepki veremeyecek ve kullanıcı programın kilitlendiğini zannedecektir. Böyle bir durumu önlemek için thread kullanılabilir.&lt;br/&gt;&lt;br/&gt;Threadler çalışan proseslerin birer parçasıdırlar. Ingilizce anlamı ipliktir. Islemci bir anda sadece bir instruction işleyebilir. Thread ile instruction işlendiği anda disk okuması yapılabilir veya ekrana görüntü basılabilir. Çünkü bu işlemleri direk yapan cpu değildir. Biz de threadin bu özelliğinden yararlanacağız.&lt;br/&gt;&lt;br/&gt;2 clasımız var. birinden diğer threadli clasımızı çağıracağız. Thread kullanılmayan classta thread kullanılan clası şu şekilde çağıracağız bizim örneğimiz için:&lt;br/&gt;&lt;/big&gt;&lt;br/&gt;&lt;font color='#000099'&gt;ff_1 =new FeedbackFrame_1(this, conn, sp, smsControl, smsReader, smsSender);&lt;/font&gt;&lt;br/&gt;&lt;big&gt;&lt;br/&gt;ff_1 bir FeedbackFrame_1 clasına ait nesne ve bu clasın contructoru görüldüğü gibi bir çok obje alıyo. Bunları siz&lt;/big&gt;&lt;/small&gt;&lt;big&gt; &lt;/big&gt;uygulamanızın durumuna göre değiştirebilirsiniz. Peki FeedbackFrame_1.java dosyası nasıl bir dosya, içeriği ne:&lt;br/&gt;&lt;small&gt;&lt;font face='Courier New'&gt;&lt;font color='#000099'&gt;&lt;br/&gt;import java.lang.reflect.*;&lt;br/&gt;import java.awt.*;&lt;br/&gt;import java.awt.event.*;&lt;br/&gt;import java.sql.Connection;&lt;br/&gt;import javax.swing.*;&lt;br/&gt;import javax.comm.*;&lt;br/&gt;&lt;br/&gt;/**&lt;br/&gt; *&lt;br/&gt; * @author Ahmet Fuat SUNGUR&lt;br/&gt; * Sms kontrolunu saglamakla yukumludur. Soyleki serveri baslatmadan onceki ayarlarin bir thread&lt;br/&gt; * aracigiyla yapilip, kullanici arayuzunu dondurmamak icin kullanilmis bir class'tir.&lt;br/&gt; */&lt;br/&gt;public class FeedbackFrame_1 extends JFrame implements Runnable {&lt;br/&gt;&lt;br/&gt;    private SmsFlow sf;&lt;br/&gt;    private Thread t;&lt;br/&gt;    private JLabel label;&lt;br/&gt;    private int state;&lt;br/&gt;    private SerialPort sp;&lt;br/&gt;    private ComSettings comInstance;&lt;br/&gt;    private SmsControl sc;&lt;br/&gt;    private SmsReader sr;&lt;br/&gt;    private SmsSender ss;&lt;br/&gt;    private Connection conn;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;    public FeedbackFrame_1(SmsFlow sf,Connection conn, SerialPort sp,SmsControl sc, SmsReader sr, SmsSender ss) {&lt;br/&gt;        this.sf = sf;&lt;br/&gt;        this.sc = sc;&lt;br/&gt;        this.sr = sr;&lt;br/&gt;        this.ss = ss;&lt;br/&gt;        this.conn = conn;&lt;br/&gt;        this.sp = sp;&lt;br/&gt;        setupFrame();&lt;br/&gt;        t = new Thread(this);&lt;br/&gt;        t.start();&lt;br/&gt;        pack();&lt;br/&gt;        show();&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    private void setupFrame() {&lt;br/&gt;        label = new JLabel();&lt;br/&gt;        label.setPreferredSize(new Dimension(200,50));&lt;br/&gt;        &lt;br/&gt;        Container c = getContentPane();&lt;br/&gt;        JButton stopButton = new JButton("Stop");&lt;br/&gt;        stopButton.addActionListener(new ActionListener() {&lt;br/&gt;            public void actionPerformed(ActionEvent ae) {&lt;br/&gt;                error();&lt;br/&gt;            }&lt;br/&gt;        });&lt;br/&gt;        c.add(label, BorderLayout.NORTH);&lt;br/&gt;        c.add(stopButton, BorderLayout.SOUTH);&lt;br/&gt;        this.setTitle("Baglantilar deneniyor...");&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    private void setText(final String s) {&lt;br/&gt;        try {&lt;br/&gt;            SwingUtilities.invokeAndWait(new Runnable() {&lt;br/&gt;                public void run() {&lt;br/&gt;                    label.setText(s);&lt;br/&gt;            }&lt;br/&gt;            });&lt;br/&gt;        } catch (InterruptedException ie) {&lt;br/&gt;            error();&lt;br/&gt;        } catch (InvocationTargetException ite) {&lt;br/&gt;            error();&lt;br/&gt;        }&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    private void error() {&lt;br/&gt;        t.interrupt();&lt;br/&gt;        if (SwingUtilities.isEventDispatchThread())&lt;br/&gt;            closeDown();&lt;br/&gt;        else SwingUtilities.invokeLater(new Runnable() {&lt;br/&gt;            public void run() {&lt;br/&gt;                closeDown();&lt;br/&gt;           }&lt;br/&gt;        });&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    private void closeDown() {&lt;br/&gt;        sf.setupCancelled();&lt;br/&gt;        hide();&lt;br/&gt;        dispose();&lt;br/&gt;    }&lt;br/&gt;    public SmsSender getSmsSender()&lt;br/&gt;    {&lt;br/&gt;        return this.ss;&lt;br/&gt;    }&lt;br/&gt;    public SmsReader getSmsReader()&lt;br/&gt;    {&lt;br/&gt;        return this.sr;&lt;br/&gt;    }&lt;br/&gt;    public SmsControl getSmsControl()&lt;br/&gt;    {&lt;br/&gt;        return this.sc;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    public void run() {&lt;br/&gt;        // Simulate connecting to server&lt;br/&gt;       &lt;br/&gt;        try{&lt;br/&gt;        /////&lt;br/&gt;                   // Streamlari ayarliyoruz. DataOutput, DataInput, OUTPUT Stream...&lt;br/&gt;            setText("Stream aciliyorr...");&lt;br/&gt;                try&lt;br/&gt;                {&lt;br/&gt;                    Thread.sleep(1000);&lt;br/&gt;                }&lt;br/&gt;                catch (InterruptedException ie) {}&lt;br/&gt;            sc.setStreams();&lt;br/&gt;&lt;br/&gt;            &lt;br/&gt;            // Ve GSM modemimizle konusmaya basliyoruz.&lt;br/&gt;            // ilk mesaji gonderdik.&lt;br/&gt;            setText("İlk mesajlar gonderiliyor...");&lt;br/&gt;                try&lt;br/&gt;                {&lt;br/&gt;                    Thread.sleep(1000);&lt;br/&gt;                }&lt;br/&gt;                catch (InterruptedException ie) {}&lt;br/&gt;            sc.send("AT");&lt;br/&gt;            sc.expect("OK");&lt;br/&gt;&lt;br/&gt;            setText("Karakter mod destegi...");&lt;br/&gt;                try&lt;br/&gt;                {&lt;br/&gt;                    Thread.sleep(1000);&lt;br/&gt;                }&lt;br/&gt;                catch (InterruptedException ie) {}&lt;br/&gt;            // Mesajlarin pdu formatinda degil de text formatinda olmasini istiyoruz.&lt;br/&gt;            sc.send("AT+CMGF=1");&lt;br/&gt;            sc.expect("OK");&lt;br/&gt;&lt;br/&gt;            // Ve simdi sira geldi mesajlari okumaya ve gelen mesajlari parse edip&lt;br/&gt;            // gerekli cevabi kullaniciya gondermeye. &lt;br/&gt;            // Simdi GSM modemimizdeki mesajlari okurken 1 okuyup, okudugumuz&lt;br/&gt;            // mesaji irdeleyip, yorumlayip, gereken cevabi uretip, bu cevabi&lt;br/&gt;            // bize mesaj gonderen kullaniciya geri iletmemiz gerekiyor.&lt;br/&gt;            // Burada bir producer consumer problemi var. Producer Reader kismi,&lt;br/&gt;            // Consumer Sender kismi oluyor. Yani bir mesaj ilk once okunacak, bu mesaj&lt;br/&gt;            // ile ilgili islemler yapilmadan 2. mesaj okunmaya gecilmeyecek.&lt;br/&gt;            // Bunu asmak icin threadlarden yararlandik ve producer consumer &lt;br/&gt;            // problemini çözmek için SmsProducerConsumer clasini olusturduk.&lt;br/&gt;            // SmsReader ve SmsSender classlari constructorlarinda bu SmsProducerConsumer&lt;br/&gt;            // classina ait nesneyi alirlar ve bu sayede gerekli senkronizasyon&lt;br/&gt;            // saglanmis olur.&lt;br/&gt;            /*SmsFirstSettings sfs = new SmsFirstSettings(smsControl);&lt;br/&gt;            sfs.start();&lt;br/&gt;            smsControl = sfs.getSmsControl(); */&lt;br/&gt;            setText("SMSReader ve SMSSender Class'lari hazirlaniyor...");&lt;br/&gt;                try&lt;br/&gt;                {&lt;br/&gt;                    Thread.sleep(1000);&lt;br/&gt;                }&lt;br/&gt;                catch (InterruptedException ie) {}&lt;br/&gt;            SmsProducerConsumer smsProducerConsumer = new SmsProducerConsumer();&lt;br/&gt;            sr = new SmsReader(sp,conn,sf,sc,smsProducerConsumer);&lt;br/&gt;            ss = new SmsSender(sp,conn,sf,sc,smsProducerConsumer);&lt;br/&gt;             if (Thread.currentThread().isInterrupted())&lt;br/&gt;            return;&lt;br/&gt;    &lt;br/&gt;        SwingUtilities.invokeLater(new Runnable() {&lt;br/&gt;            public void run() {&lt;br/&gt;                  sf.setupDone();&lt;br/&gt;                hide();&lt;br/&gt;                dispose();&lt;br/&gt;        }&lt;br/&gt;        });&lt;br/&gt;        }&lt;br/&gt;        catch(Exception e)&lt;br/&gt;        {}&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;    public SerialPort getSerialPort()&lt;br/&gt;    {&lt;br/&gt;        return sp;&lt;br/&gt;    }&lt;br/&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font face='arial'&gt;&lt;big&gt;&lt;br/&gt;Burada önemli olan clasın Runnable interfacını implement etmesi, bunu unutmuyoruz. &lt;br/&gt;&lt;br/&gt;ff_1 = new FeedbackFrame(...) &lt;br/&gt;kodunu yazdığımızda yukarıdaki classın ilk run methodu çağırılıyor. Bu da bu husus açısından önemli...&lt;br/&gt;&lt;/big&gt;&lt;/font&gt;&lt;/font&gt;&lt;small&gt;&lt;font face='arial'&gt;&lt;big&gt;&lt;big&gt;Daha sonra yaptiğiniz baglantilari bir sekilde get etmeniz gerekiyor. o yüzden bu feedback clasına constructordan gonderdiginiz parametreleri get edebilecek metodlar eklemelisiniz...&lt;br/&gt;&lt;br/&gt;iyi çalışmalar..&lt;/big&gt;&lt;/big&gt;&lt;/font&gt;&lt;/small&gt;&lt;/small&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-9071611449321779772?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/9071611449321779772/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/03/java-thread-rnei-ykleniyor-gstergesi_30.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/9071611449321779772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/9071611449321779772'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/03/java-thread-rnei-ykleniyor-gstergesi_30.html' title='Java Thread Örneği - Yükleniyor Göstergesi'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-8268036344329592320</id><published>2008-03-29T14:42:00.001-07:00</published><updated>2008-03-29T14:42:55.292-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Jar Oluşturmak</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;aa klasöründeki Class dosyalarından jar oluşturmak için Komut satırından :&lt;br/&gt;&lt;br/&gt;jar -cf yourjarfile.jar aa/&lt;br/&gt;&lt;br/&gt;yazınız. Peki jar ne işe yarar :&lt;br/&gt;&lt;br/&gt;- Classlarınızı jar haline getirip, yani tek dosya haline getirip, ileride api olarak bunu sunabilirsiniz.&lt;br/&gt;- Classlarınıza tek dosya da ulaşmanızı sağlar.&lt;br/&gt;- Mobil Cihazlara java dosyalarının aktarımını sağlar.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-8268036344329592320?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/8268036344329592320/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/03/jar-oluturmak.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/8268036344329592320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/8268036344329592320'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/03/jar-oluturmak.html' title='Jar Oluşturmak'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-3470374442251280738</id><published>2008-03-27T09:22:00.000-07:00</published><updated>2008-03-27T09:23:47.457-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle - PL/SQL'/><title type='text'>FORALL Performance</title><content type='html'>&lt;span style="font-weight:bold;"&gt;FORALL&lt;/span&gt;&lt;br /&gt; Örnek olarak bir tablodan çektiğimiz verilerle başka bir tabloyu doldurmamız gerekiyor.  Yapacağımız iş nedir? Her select işlemi ile aldığımız veriyi insert ile tabloya eklemek veya bulk collect ile bir arraya veriyi atayıp daha sonra o array içerisinde FOR ile dönerek tabloya verileri ekleyebiliriz.&lt;br /&gt; Bize bu konuda yardımcı olacak başka bir yapı var: FORALL. FORALL keywordu, Toplu DML Statementlerde performans artışı sağlayan çok önemli bir keyword. Somut bir örnekle FORALL’ın performansını gösterelim.&lt;br /&gt;Step_1 : FORALL keywordlu procedure&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;create or replace procedure step_1 is&lt;br /&gt;  TYPE array_type_id IS TABLE OF TEST_1.ID%TYPE;&lt;br /&gt;  TYPE array_type_name IS TABLE OF TEST_1.NAME%TYPE;&lt;br /&gt;  &lt;br /&gt;  iteration_time INTEGER := 1000;&lt;br /&gt;  varIdArr array_type_id := array_type_id();&lt;br /&gt;  varNameArr array_type_name := array_type_name();&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;  SELECT ID,NAME BULK COLLECT INTO varIdArr,varNameArr FROM TEST_1;&lt;br /&gt;  FORALL i in varIdArr.first..varIdArr.last&lt;br /&gt;      INSERT INTO TEST_2 VALUES(varIdArr(i),varNameArr(i));&lt;br /&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Step_2: FOR keywordlu procedure&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;create or replace procedure step_2 is&lt;br /&gt;  TYPE array_type_id IS TABLE OF TEST_1.ID%TYPE;&lt;br /&gt;  TYPE array_type_name IS TABLE OF TEST_1.NAME%TYPE;&lt;br /&gt;  &lt;br /&gt;  iteration_time INTEGER := 1000;&lt;br /&gt;  varIdArr array_type_id := array_type_id();&lt;br /&gt;  varNameArr array_type_name := array_type_name();&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;  SELECT ID,NAME BULK COLLECT INTO varIdArr,varNameArr FROM TEST_1;&lt;br /&gt;  FOR i in varIdArr.first..varIdArr.last&lt;br /&gt;  LOOP&lt;br /&gt;      INSERT INTO TEST_2 VALUES(varIdArr(i),varNameArr(i));&lt;br /&gt;  END LOOP;&lt;br /&gt;end;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Test Sonuçları:&lt;br /&gt;&lt;br /&gt;SQL&gt; exec runstats_pkg.rs_stop;&lt;br /&gt; &lt;br /&gt;Run1 ran in 9 hsecs&lt;br /&gt;Run2 ran in 125 hsecs&lt;br /&gt;run 1 ran in 7,2% of the time&lt;br /&gt; &lt;br /&gt;Name                                  Run1        Run2        Diff&lt;br /&gt;LATCH.dml lock allocation                1           0          -1&lt;br /&gt;STAT...calls to get snapshot s          10           9          -1&lt;br /&gt;LATCH.list of block allocation           0           1           1&lt;br /&gt;STAT...IMU Flushes                       1           0          -1&lt;br /&gt;STAT...session cursor cache co           1           0          -1&lt;br /&gt;LATCH.Consistent RBA                     1           2           1&lt;br /&gt;LATCH.lgwr LWN SCN                       1           2           1&lt;br /&gt;LATCH.mostly latch-free SCN              1           2           1&lt;br /&gt;LATCH.OS process allocation              0           1           1&lt;br /&gt;LATCH.enqueue hash chains                1           2           1&lt;br /&gt;STAT...bytes received via SQL*       1,912       1,910          -2&lt;br /&gt;STAT...messages sent                     0           2           2&lt;br /&gt;LATCH.library cache lock                 2           4           2&lt;br /&gt;LATCH.enqueues                           0           2           2&lt;br /&gt;STAT...enqueue requests                  2           0          -2&lt;br /&gt;LATCH.undo global data                  24          28           4&lt;br /&gt;STAT...consistent changes               14          19           5&lt;br /&gt;LATCH.redo writing                       3           8           5&lt;br /&gt;STAT...cleanout - number of kt          22          28           6&lt;br /&gt;STAT...active txn count during          22          28           6&lt;br /&gt;STAT...calls to kcmgcs                  22          28           6&lt;br /&gt;STAT...consistent gets - exami          22          28           6&lt;br /&gt;STAT...consistent gets                 847         838          -9&lt;br /&gt;STAT...consistent gets from ca         847         838          -9&lt;br /&gt;LATCH.messages                           2          14          12&lt;br /&gt;LATCH.channel operations paren           0          14          14&lt;br /&gt;LATCH.checkpoint queue latch             0          16          16&lt;br /&gt;STAT...redo ordering marks               0          26          26&lt;br /&gt;STAT...calls to kcmgas                   0          26          26&lt;br /&gt;STAT...workarea memory allocat         -49           0          49&lt;br /&gt;LATCH.SQL memory manager worka           6          73          67&lt;br /&gt;STAT...change write time                 3          78          75&lt;br /&gt;STAT...free buffer requested             4          81          77&lt;br /&gt;LATCH.cache buffers lru chain            4          81          77&lt;br /&gt;STAT...recursive cpu usage               6         112         106&lt;br /&gt;STAT...CPU used when call star           6         117         111&lt;br /&gt;STAT...CPU used by this sessio           6         117         111&lt;br /&gt;STAT...DB time                          10         124         114&lt;br /&gt;STAT...Elapsed Time                     12         127         115&lt;br /&gt;LATCH.object queue header oper          12         243         231&lt;br /&gt;LATCH.simulator lru latch               56         877         821&lt;br /&gt;LATCH.simulator hash latch              59         889         830&lt;br /&gt;STAT...redo entries                     87      10,036       9,949&lt;br /&gt;LATCH.redo allocation                   91      10,040       9,949&lt;br /&gt;STAT...recursive calls                   3      10,007      10,004&lt;br /&gt;STAT...execute count                    11      10,015      10,004&lt;br /&gt;STAT...session logical reads           968      11,070      10,102&lt;br /&gt;STAT...db block gets from cach         121      10,232      10,111&lt;br /&gt;STAT...db block gets                   121      10,232      10,111&lt;br /&gt;STAT...db block changes                185      20,163      19,978&lt;br /&gt;LATCH.library cache pin                 60      20,068      20,008&lt;br /&gt;LATCH.library cache                     75      20,083      20,008&lt;br /&gt;LATCH.cache buffers chains           2,238      52,343      50,105&lt;br /&gt;STAT...undo change vector size      25,852     642,176     616,324&lt;br /&gt;STAT...redo size                   209,100   2,471,572   2,262,472&lt;br /&gt; &lt;br /&gt;Run1 latches total versus runs -- difference and pct&lt;br /&gt;        Run1        Run2        Diff       Pct&lt;br /&gt;       2,691     104,847     102,156      2.57%&lt;br /&gt; &lt;br /&gt;PL/SQL procedure successfully completed&lt;br /&gt; &lt;br /&gt;SQL&gt;&lt;br /&gt;Görüldüğü gibi FORALL’ı kullandığımız zaman 9hsec’te gerçekleşen iş, bu keywordu kullanmadığımız zaman 125hsec süre içersinde gerçekleşmiş. Ayrıca LATCH oranlarını karşılaştırdığımızda da 1/50 gibi bir oran karşımıza çıkıyor. Ve bu istatistikler bize FORALL’ın Toplu DML İşlemlerinde (INSERT,DELETE,UPDATE) ne kadar önemli bilgi sağladığını göstermiş oluyor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-3470374442251280738?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/3470374442251280738/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/03/forall-performance.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/3470374442251280738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/3470374442251280738'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/03/forall-performance.html' title='FORALL Performance'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-2625644665375930631</id><published>2008-03-27T09:15:00.001-07:00</published><updated>2008-03-27T09:21:47.111-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle - PL/SQL'/><title type='text'>BULK COLLECT Performance</title><content type='html'>BULK COLLECT&lt;br /&gt;Bu denememizde BULK COLLECT adlı bir yapıyla tanışmış oluyoruz. Bu yapı bize sorgu sonuçlarını bir cursora değil de bir array’e aktarmamızı sağlıyor. Normalde bir tablodaki her satıra ait bir colonu yazdırmak istesek bunu şu şekilde yaparız:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;FOR REC IN ( SELECT NAME FROM EMP)&lt;br /&gt;LOOP&lt;br /&gt; DBMS_OUTPUT….&lt;br /&gt;END LOOP;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;İşte, BULK COLLECT kullanarak bir cursor içerisinde değil de bir array içerisinde dönmüş oluyor. Ve bu PLSQL Kodunun performansını arttırıyor.&lt;br /&gt;Denememizi şu şekilde yapacağız. 2 procedurumuz var. Step_1 BULK COLLECT ile veri çekiyor. Step_2  ise bildiğimiz şekilde. &lt;br /&gt;Step_1 Proceduru :&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;create or replace procedure step_1 is&lt;br /&gt;  TYPE array_type_id IS TABLE OF TEST_1.ID%TYPE;&lt;br /&gt;  TYPE array_type_name IS TABLE OF TEST_1.NAME%TYPE;&lt;br /&gt;  &lt;br /&gt;  varIdArr array_type_id;&lt;br /&gt;  varNameArr array_type_name;&lt;br /&gt;BEGIN&lt;br /&gt;  SELECT id,name bulk collect into varIdArr,varNameArr from test_1 WHERE ID &lt; 10000;&lt;br /&gt;  &lt;br /&gt;  for i in varIdArr.first..varIdArr.last&lt;br /&gt;  Loop&lt;br /&gt;      dbms_output.put_line('&gt;ID :' || varIdArr(i) || ' - NAME :' || varNameArr(i) );&lt;br /&gt;  end loop;&lt;br /&gt;end;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;Step_2 Proceduru:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;create or replace procedure step_2 is&lt;br /&gt;BEGIN&lt;br /&gt;  FOR REC IN ( SELECT * FROM TEST_1 WHERE ID &lt; 10000)&lt;br /&gt;  LOOP&lt;br /&gt;      DBMS_OUTPUT.put_line('&gt;ID :' || REC.ID || ' - NAME :' || REC.NAME);&lt;br /&gt;  END LOOP;&lt;br /&gt;END;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;Testimizi Başlatmak için:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;exec runstats_pkg.rs_start;&lt;br /&gt;exec step_1;&lt;br /&gt;exec runstats_pkg.rs_middle;&lt;br /&gt;exec step_2;&lt;br /&gt;exec runstats_pkg.rs_stop;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;Test Sonuçları :&lt;br /&gt;SQL&gt; exec runstats_pkg.rs_stop;&lt;br /&gt; &lt;br /&gt;Run1 ran in 1048 hsecs&lt;br /&gt;Run2 ran in 1139 hsecs&lt;br /&gt;run 1 ran in 92,01% of the time&lt;br /&gt; &lt;br /&gt;Name                                  Run1        Run2        Diff&lt;br /&gt;LATCH.mostly latch-free SCN              4           3          -1&lt;br /&gt;STAT...session cursor cache co           1           0          -1&lt;br /&gt;STAT...recursive cpu usage               3           4           1&lt;br /&gt;LATCH.library cache lock                28          27          -1&lt;br /&gt;LATCH.object queue header oper           4           5           1&lt;br /&gt;LATCH.library cache lock alloc           1           0          -1&lt;br /&gt;LATCH.undo global data                  17          18           1&lt;br /&gt;STAT...redo entries                     11          12           1&lt;br /&gt;LATCH.Shared B-Tree                      0           1           1&lt;br /&gt;LATCH.active checkpoint queue            4           3          -1&lt;br /&gt;LATCH.kwqbsn:qsga                        0           1           1&lt;br /&gt;LATCH.cache buffers lru chain            0           1           1&lt;br /&gt;LATCH.lgwr LWN SCN                       4           3          -1&lt;br /&gt;STAT...free buffer requested             0           1           1&lt;br /&gt;LATCH.KMG MMAN ready and start           3           4           1&lt;br /&gt;LATCH.enqueues                         164         162          -2&lt;br /&gt;LATCH.resmgr:resource group CP           2           0          -2&lt;br /&gt;LATCH.library cache pin             26,809      26,811           2&lt;br /&gt;LATCH.enqueue hash chains              166         164          -2&lt;br /&gt;STAT...bytes received via SQL*   1,105,839   1,105,837          -2&lt;br /&gt;STAT...db block changes                 36          33          -3&lt;br /&gt;LATCH.redo allocation                   22          19          -3&lt;br /&gt;LATCH.redo writing                      15          12          -3&lt;br /&gt;STAT...heap block compress               7           4          -3&lt;br /&gt;LATCH.qmn task queue latch               0           4           4&lt;br /&gt;LATCH.messages                          72          68          -4&lt;br /&gt;STAT...active txn count during          11          15           4&lt;br /&gt;STAT...cleanout - number of kt          11          15           4&lt;br /&gt;STAT...consistent gets - exami          11          15           4&lt;br /&gt;STAT...calls to kcmgcs                  11          15           4&lt;br /&gt;LATCH.shared pool                       50          55           5&lt;br /&gt;STAT...consistent changes               25          20          -5&lt;br /&gt;STAT...db block gets                    37          44           7&lt;br /&gt;STAT...db block gets from cach          37          44           7&lt;br /&gt;LATCH.channel operations paren          56          48          -8&lt;br /&gt;STAT...parse time cpu                   14           1         -13&lt;br /&gt;STAT...CPU used by this sessio          60          47         -13&lt;br /&gt;STAT...CPU used when call star          63          47         -16&lt;br /&gt;LATCH.checkpoint queue latch            72          54         -18&lt;br /&gt;STAT...parse time elapsed               30           2         -28&lt;br /&gt;STAT...DB time                          87          56         -31&lt;br /&gt;STAT...workarea memory allocat          31          -2         -33&lt;br /&gt;LATCH.SQL memory manager worka         274         207         -67&lt;br /&gt;STAT...undo change vector size       2,180       2,248          68&lt;br /&gt;STAT...Elapsed Time                  1,056       1,140          84&lt;br /&gt;LATCH.shared pool simulator            107          15         -92&lt;br /&gt;LATCH.simulator lru latch               54         232         178&lt;br /&gt;LATCH.simulator hash latch              54         232         178&lt;br /&gt;STAT...redo size                     2,972       3,216         244&lt;br /&gt;STAT...no work - consistent re         777       4,109       3,332&lt;br /&gt;STAT...table scan blocks gotte         777       4,109       3,332&lt;br /&gt;STAT...consistent gets                 800       4,136       3,336&lt;br /&gt;STAT...consistent gets from ca         800       4,136       3,336&lt;br /&gt;STAT...recursive calls                   6       3,344       3,338&lt;br /&gt;STAT...session logical reads           837       4,180       3,343&lt;br /&gt;LATCH.cache buffers chains           1,778       8,426       6,648&lt;br /&gt;STAT...session uga memory          196,392           0    -196,392&lt;br /&gt;STAT...session pga memory          458,752           0    -458,752&lt;br /&gt;STAT...table scan rows gotten      497,103   2,246,371   1,749,268&lt;br /&gt; &lt;br /&gt;Run1 latches total versus runs -- difference and pct&lt;br /&gt;        Run1        Run2        Diff       Pct&lt;br /&gt;      80,153      86,968       6,815     92.16%&lt;br /&gt; &lt;br /&gt;PL/SQL procedure successfully completed&lt;br /&gt; &lt;br /&gt;SQL&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Bu Testte asıl dikkat etmemiz gereken birkaç nokta var. Bunlardan en önemlisi Tom Kyte’a göre Total Latches olayı. Görüldüğü gibi 2. Procedurumuzda bu daha fazla. Yani daha fazla gecikme meydana gelmiş. Diğer bakılabilecek önemli nokta ise elapsed time, yine aynı şekilde 1. Procedure 2.procedur’a göre daha performanslı elapsed time açısından.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-2625644665375930631?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/2625644665375930631/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/03/bulk-collect-performance.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2625644665375930631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2625644665375930631'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/03/bulk-collect-performance.html' title='BULK COLLECT Performance'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-5996080739543304437</id><published>2008-03-27T08:57:00.001-07:00</published><updated>2008-06-02T03:30:15.687-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='SMS'/><title type='text'>Java SMS Api</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Okuldaki projemde kullandığım SMS applicationu bir Api haline getirip,açık kaynak kodlu olarak geliştirilmesini sağlamak amacıyla yakında bir api çıkarmayı düşünüyorum. Bu api ile uygulama geliştiriciler kendi pclerine bağladıkları cep telefonundan Java kodlarıyla sms gönderip alabilecek. Bu şekilde projelerinize SMS özelliğini bu şekilde ekleyebileceksiniz.&lt;br /&gt;&lt;br /&gt;Şimdilik Nokia S40 destekleyecek gibi, ama daha sonra tüm cihazlar için geliştirmeyi düşünüyorum.&lt;br /&gt;&lt;br /&gt;Edit : Şu anda SMS Gönderme işlemi tamam, okuma işlemi var. Bu biraz uzun süreceğe benziyor. Ama beklemeye değer...&lt;br /&gt;&lt;br /&gt;sabreden derviş :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://afsungur.googlepages.com/SMSApi.rar"&gt;http://afsungur.googlepages.com/SMSApi.rar&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-5996080739543304437?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/5996080739543304437/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/03/java-sms-api.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/5996080739543304437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/5996080739543304437'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/03/java-sms-api.html' title='Java SMS Api'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-6975181068650272184</id><published>2008-03-26T06:07:00.001-07:00</published><updated>2008-03-26T06:07:44.856-07:00</updated><title type='text'>Fantastik Forvet Gitti</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Kendini GittiGidiyor.com'da Fantastik Forvet başlığıyla açık artırmaya çıkaran amatör küme oyuncusu&lt;br/&gt; &lt;table class='contentpaneopen'&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign='top' colspan='2'&gt;&lt;nobr&gt;&lt;span style='border-bottom: 3px double rgb(255, 0, 0); color: rgb(255, 0, 0); font-weight: bold; line-height: 1.7; cursor: pointer;'/&gt;&lt;/nobr&gt; Engin Kodan, 6.100 YTL'ye yeni kulübünü buldu. &lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;div style='text-align: justify;'&gt;GittiGidiyor, &lt;span style='font-weight: bold;'&gt;'Bilkentli'nin Donu'&lt;/span&gt;ndan sonra en ilginç&lt;nobr&gt;&lt;span style='border-bottom: 3px double rgb(255, 0, 0); color: rgb(255, 0, 0); font-weight: bold; line-height: 1.7;'/&gt;&lt;/nobr&gt; açık artırmalardan birine sahne oldu. İstanbul amatör küme takımlarından &lt;span style='font-weight: bold;'&gt;İmesspor&lt;/span&gt;'da oynayan &lt;span style='font-weight: bold;'&gt;Engin Kodan&lt;/span&gt;, bir 3. lig takımında oynamak için kendini &lt;span style='font-weight: bold;'&gt;GittiGidiyor.com&lt;/span&gt;'da açık artırmaya çıkardı.&lt;br/&gt;&lt;br/&gt;&lt;a href='http://urun.gittigidiyor.com/FANTASTIK-FORVET_W0QQidZZ8622029' target='_blank' linkindex='116'&gt;Fantastik Forvet&lt;/a&gt;&lt;br /&gt;başlıklı artırmaya ilgi büyüktü. 21.755 tekil kullanıcı tarafından&lt;br /&gt;izlenen artırmaya 4 kulüpten teklif geldi. 5.000 YTL ile açılan&lt;br /&gt;artırma, İstanbul bölgesinden bir kulübün &lt;span style='font-weight: bold;'&gt;6.100 YTL&lt;/span&gt; bedelle &lt;span style='font-weight: bold;'&gt;Fantastik Forvet&lt;/span&gt;'i almasıyla son buldu.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-6975181068650272184?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/6975181068650272184/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/03/fantastik-forvet-gitti.html#comment-form' title='2 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/6975181068650272184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/6975181068650272184'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/03/fantastik-forvet-gitti.html' title='Fantastik Forvet Gitti'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-7467083984375689777</id><published>2008-03-20T08:13:00.001-07:00</published><updated>2008-03-20T08:13:32.574-07:00</updated><title type='text'>ScribeFire</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;b&gt;ScribeFire&lt;/b&gt;, Firefox'a eklenebilecek çok kullanışlı olduğunu düşündüğüm bir add-on. Bu araç ile blogspot wordpress gibi bloglarınıza tek tıklama ile yazı ekleyebiliyorsunuz. Veya firefox'ta açtığınız herhangi bir sayfayı bloglayabiliyorsunuz...&lt;br/&gt;&lt;br/&gt;Ve daha nicesi...&lt;br/&gt;&lt;br/&gt;&lt;a href='http://www.scribefire.com/getting-started/'&gt;http://www.scribefire.com/getting-started/&lt;br/&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-7467083984375689777?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/7467083984375689777/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/03/scribefire.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/7467083984375689777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/7467083984375689777'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/03/scribefire.html' title='ScribeFire'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-5149729079242608710</id><published>2008-03-17T12:37:00.001-07:00</published><updated>2008-03-19T15:34:19.046-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Genel'/><title type='text'>18 Mart Çanakkele Zaferi</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Canlarını, vatan uğruna gözünü kırpmadan verebilen şehitlerimizi ve vatanı için kolunu,bacağını,ayağını feda etmiş nice gazilerimizi saygıyla anıyoruz.&lt;br/&gt;&lt;br/&gt;http://tr.wikipedia.org/wiki/%C3%87anakkale_Sava%C5%9Flar%C4%B1&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-5149729079242608710?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/5149729079242608710/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/03/18-mart-anakkele-zaferi.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/5149729079242608710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/5149729079242608710'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/03/18-mart-anakkele-zaferi.html' title='18 Mart Çanakkele Zaferi'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-2001390652296484388</id><published>2008-02-25T14:01:00.000-08:00</published><updated>2008-02-25T14:14:15.148-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sistem'/><title type='text'>BAT dosyası yazımı</title><content type='html'>Bu yazımda tek klikle birden cok dos komutu calismasini saglayan bat dosyalarinin olusturulmasindan bahsedecegim. &lt;br /&gt;Birden cok islemi, gunun veya ayin belli zamanlarinda sık sık tekrar mi ediyorsunuz?&lt;br /&gt;Bu sizin icin cok mu zaman alıyor?&lt;br /&gt;Autorun.inf viruslerinde biktiniz mi?&lt;br /&gt;size bat dosyasini oneriorum, bazi durumlarda bu viruslerden kurtulmanizi da sagliyor.&lt;br /&gt;&lt;br /&gt;İlk olarak dos komutlarina ne kadar asinasiniz onu ogrenmek gerek:&lt;br /&gt;&lt;br /&gt;http://en.wikipedia.org/wiki/List_of_DOS_commands &lt;br /&gt;http://www.easydos.com/dosindex.html&lt;br /&gt;http://www.computerhope.com/dosapp.htm&lt;br /&gt;&lt;br /&gt;biraz komutlari ogrendikten sonra ornek bir uygulama yapalim.&lt;br /&gt;!!dosya uzantilarini goruntule secenegimizin klasör seçeneklerinden seçili olmasi gerekiyor ( ne cumle oldu be! )&lt;br /&gt;&lt;br /&gt;daha sonra, yeni metin belgesi olusturuyoruz, a.bat diye. Buna sag tiklayip duzenle diyoruz.&lt;br /&gt;Daha sonra C:\aaa klasörümüzü D:\bbb klasörüne kopyalayacak bat dosyamizi yaziyoruz:&lt;br /&gt;&lt;br /&gt;a.bat dosyasinin içeriği:&lt;br /&gt;---------------&lt;br /&gt;@echo off&lt;br /&gt;echo Dosya kopyalama islemi baslayacak... &lt;br /&gt;pause&lt;br /&gt;c:&lt;br /&gt;xcopy /E/Y aaa D:\bbb&lt;br /&gt;echo Dosya kopyalam islemi tamamlandi...&lt;br /&gt;pause&lt;br /&gt;----------------&lt;br /&gt;pause : devam etmek icin bir tusa basiniz. yazisini ekrana basip, sizden herhangi bir tusa basmanizi istiyor.&lt;br /&gt;xcopy , klasörü komple kopyalamayı sagliyor&lt;br /&gt;yardim icin dosta help xcopy yaZin.&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;tüm disklerime tek tıkla defrag attirmak icin sunu yazdim:&lt;br /&gt;defrag_all_disks.bat:&lt;br /&gt;---------------------&lt;br /&gt;@echo off&lt;br /&gt;echo Sistem Bakımı&lt;br /&gt;defrag C: -f -v&lt;br /&gt;defrag D: -f -v&lt;br /&gt;defrag E: -f -v&lt;br /&gt;defrag F: -f -v&lt;br /&gt;defrag G: -f -v&lt;br /&gt;defrag H: -f -v&lt;br /&gt;pause&lt;br /&gt;-------------------&lt;br /&gt;artık tek tıkla tüm disklerime defrag(disk birleştiricisi) yaptırıyorum&lt;br /&gt;&lt;br /&gt;autorun.inf virusleriyle de epey ugrasmıstım. bazen cozum elde edebildim ama yine de virusler gercek yuzlerini gosterdiler. biraz da ugrasılsa tam olarak cozum elde edilebilir.&lt;br /&gt;attrib ile viruslerin korumasini kaldirip, virusun bulundugu klasore kendi urettiginiz file ı kopyleyin, daha sonra attrib +s +h +r ile kendi file'ınıza yani kendi autorun.inf inize gorunmezlik eklemeye calisin. cok zeki olmayan virusleri bu yolla sisteminizden def edebilrisiniz..&lt;br /&gt;&lt;br /&gt;sonuc : bat dosyalari cok kullanisli, birden cok isi (batch) tek hamlede yapmaniza olanak sagliyor eger iyi dos bilginiz varsa&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-2001390652296484388?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/2001390652296484388/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/02/bat-dosyas-yazm.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2001390652296484388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2001390652296484388'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/02/bat-dosyas-yazm.html' title='BAT dosyası yazımı'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-4611355353911226464</id><published>2008-02-20T11:20:00.001-08:00</published><updated>2008-02-20T11:30:38.499-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle - PL/SQL'/><title type='text'>Oracle Date Functions</title><content type='html'>Projemiz için lazım oldu, ben de yeni öğrendim bir çoğunu : &lt;br /&gt;&lt;br /&gt;SELECT TO_CHAR(SYSDATE,'DD-MON-YYYY') FROM DUAL;&lt;br /&gt;20-ŞUB-2008&lt;br /&gt;&lt;br /&gt;SELECT TO_CHAR(SYSDATE,'DD-MON-YEAR') FROM DUAL;&lt;br /&gt;20-ŞUB-TWO THOUSAND EIGHT&lt;br /&gt;&lt;br /&gt;SELECT TO_CHAR(SYSDATE,'DD-MON-YYYY DAY') FROM DUAL;&lt;br /&gt;20-ŞUB-2008 ÇARŞAMBA&lt;br /&gt;&lt;br /&gt;SELECT TO_CHAR(SYSDATE,'DD-MM-YYYY DAY') FROM DUAL;&lt;br /&gt;20-02-2008 ÇARŞAMBA &lt;br /&gt;&lt;br /&gt;-------------------&lt;br /&gt;&lt;br /&gt;Ayın ilk günü:&lt;br /&gt;&lt;br /&gt;SELECT TO_CHAR(TRUNC(SYSDATE,'MONTH'),'DAY') FROM DUAL;&lt;br /&gt;CUMA     &lt;br /&gt;&lt;br /&gt;Ayın Son günü:&lt;br /&gt;&lt;br /&gt;SELECT TO_CHAR(LAST_DAY(SYSDATE),'DAY') FROM DUAL;&lt;br /&gt;CUMA   &lt;br /&gt;&lt;br /&gt;En yakın Cuma gününün ayın hangi günü olduğu:&lt;br /&gt;SELECT TO_CHAR(NEXT_DAY(SYSDATE,'CUMA'),'DD') FROM DUAL;&lt;br /&gt;&lt;br /&gt;İki tarih arasındaki ay farkı&lt;br /&gt;SELECT ROUND(MONTHS_BETWEEN(TO_DATE('31-08-2008','DD-MM-YYYY'),TO_DATE('25-05-2008','DD-MM-YYYY'))) FROM DUAL;&lt;br /&gt;&lt;br /&gt;( yukarıda roundu kaldırırsak sonucu tam sayi olarak degil de kusurlu bir sayi olarak buluruz )&lt;br /&gt;&lt;br /&gt;simdilik bu kadar...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-4611355353911226464?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/4611355353911226464/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/02/oracle-date-functions.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/4611355353911226464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/4611355353911226464'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/02/oracle-date-functions.html' title='Oracle Date Functions'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-2565469836399445919</id><published>2008-02-17T12:42:00.000-08:00</published><updated>2008-02-17T13:26:13.404-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSP'/><title type='text'>Bean</title><content type='html'>&lt;p&gt;Java'da&lt;p&gt;Kullanmak istediğimiz class'ı jsp dosyalarımızın bulunduğu ana klasörden WEB-INF/classes klasörüne atmamız gerekiyor. Eğer böyle bir klasör yoksa, bu klasörü siz oluşturun. Mesela:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;E:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\fuat\WEB-INF\classes&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Daha sonra package'imizin adini alan klasörü de üstteki klasör içinde oluşturalım. Örnek IETT olsun.&lt;/p&gt;&lt;p&gt;E:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\fuat\WEB-INF\classes\iett\&lt;/p&gt;&lt;p&gt;daha sonra, bus.class dosyamızı üstteki klasöre atalım. &lt;br /&gt;Şimdi sıra geldi bu class dosyasını jsp dosyamıza include etmeye.&lt;br /&gt;JSP dosyamızı açıp,&lt;/p&gt;&lt;p&gt;&lt;code&gt;&lt;/p&gt;&lt;p&gt;&lt; jsp:usebean id="db" class="iett.bus"&gt;&lt;br /&gt;&lt;%   db.setId(5);  db.setPlate("ahmet");   out.print(db.getId());  out.print(db.getPlate());  %&gt; &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;yazdık mı, b.jsp olarak kaydedip çalıştırdık mı, bizden mutlusu yoktur.&lt;br /&gt;( ha, tabi class olarak kaydettik ya o classtaki üstte kullandığımız setId, setPlate, getInfo metodları olacak tabi ! )&lt;/p&gt;&lt;strong&gt;&lt;jsp:usebean class="iett.bus"&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-2565469836399445919?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/2565469836399445919/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/02/bean.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2565469836399445919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2565469836399445919'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/02/bean.html' title='Bean'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-2585489491999643143</id><published>2008-02-17T12:22:00.000-08:00</published><updated>2008-02-17T12:34:09.671-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSP'/><title type='text'>JSP'ye Giriş</title><content type='html'>&lt;p&gt;Java Server Pages, Java dilinin web'e uyarlanmış versiyonudur. Servlet'lerden farklı olarak JSP'ler HTML ile iç içedirler. Sayfanın bir kısmında HTML, bir kısmında JSP kullanabilirsiniz.&lt;/p&gt;&lt;p&gt;İlk olarak Tomcat6'yı sistemimize kuruyoruz : &lt;/p&gt;&lt;p&gt;&lt;a href="http://godel.cs.bilgi.edu.tr/apache/tomcat/tomcat-6/v6.0.16/bin/apache-tomcat-6.0.16.zip"&gt;http://godel.cs.bilgi.edu.tr/apache/tomcat/tomcat-6/v6.0.16/bin/apache-tomcat-6.0.16.zip&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Sonrasında, Tomcati kurduğumuz dizinde bin/ klasöründe tomcat6.exe yi çift tıklayarak serverımızı çalıştırıyoruz.&lt;br /&gt;"E:\Program Files\Apache Software Foundation\Tomcat 6.0\bin"&lt;br /&gt;&lt;/p&gt;&lt;p&gt;daha sonra &lt;br /&gt;E:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\&lt;br /&gt;klasörüne "fuat" adında bir klasör olusturuyoruz.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Bu klasör içerisine a.jsp adlı jsp dosyamızı kaydediyoruz.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;a.jsp&lt;br /&gt;&lt;/strong&gt;&lt;% out.println("AFS"); %&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;E:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\fuat\a.jsp olarak kaydettik.&lt;/p&gt;&lt;p&gt;Browserımızı açtık ve şunu girdik&lt;/p&gt;&lt;p&gt;http://localhost:8080/fuat/a.jsp&lt;/p&gt;&lt;p&gt;ve jsp dosyamızı bu şekilde çalıştırmış olduk.&lt;br /&gt;Eğer port değişikliği yapmak istiyorsanız, &lt;br /&gt;E:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\server.xml adresinde 8080 olan ilgili port kisimlarini 8089,8091 gibi değerler ile değiştirebilirsiniz.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-2585489491999643143?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/2585489491999643143/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/02/jspye-giri.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2585489491999643143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/2585489491999643143'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/02/jspye-giri.html' title='JSP&apos;ye Giriş'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-8140726712747631390</id><published>2008-02-16T06:02:00.001-08:00</published><updated>2008-02-16T06:04:32.541-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Proje'/><title type='text'>IETT Araç Takip ve Yolcu Bilgilendirme Sistemi</title><content type='html'>Otobüs beklemekten çok sıkıldınız veya önünüzden bir taksi geçiyor "ya zaten binmemize gerek yok, şimdi otobüs gelir" mi diyorsunuz?&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Artık bunları projemizle dert etmenize gerek kalmayacak:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;IETT Araç Takip ve Yolcu Bilgilendirme Sistemi&lt;/p&gt;&lt;p&gt;Beklediğiniz hatta ait otobüsün, beklediğiniz durağa yaklaşık olarak kaç dakika sonra geleceğini hem web hem mobile uygulamayla artık öğrenebileceksiniz.&lt;br /&gt;&lt;br /&gt;Çok yakında, sizlerle...&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-8140726712747631390?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/8140726712747631390/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/02/iett-ara-takip-ve-yolcu-bilgilendirme.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/8140726712747631390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/8140726712747631390'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/02/iett-ara-takip-ve-yolcu-bilgilendirme.html' title='IETT Araç Takip ve Yolcu Bilgilendirme Sistemi'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9089611451883883661.post-1067343216145269736</id><published>2008-02-16T05:51:00.000-08:00</published><updated>2008-02-16T23:32:20.456-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Genel'/><title type='text'>Hello World</title><content type='html'>&lt;p&gt;Bir bilgisayar mühendisi adayı olarak, böyle başlamazsak mesleğimize ihanet etmiş oluruz :&lt;/p&gt;&lt;p&gt;BEGIN&lt;br /&gt;               DBMS_OUTPUT.PUT_LINE('HELLO WORLD');&lt;br /&gt;END;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9089611451883883661-1067343216145269736?l=afsungur.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://afsungur.blogspot.com/feeds/1067343216145269736/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://afsungur.blogspot.com/2008/02/hello-world.html#comment-form' title='2 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/1067343216145269736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9089611451883883661/posts/default/1067343216145269736'/><link rel='alternate' type='text/html' href='http://afsungur.blogspot.com/2008/02/hello-world.html' title='Hello World'/><author><name>A. Fuat Sungur</name><uri>http://www.blogger.com/profile/06214746832459473740</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
