1 Ağustos 2009 Cumartesi

Oracle Text - Full Text Search

Oracle Text Çalışırken tuttuğum bazı notları ve örnekleri burada paylaşmak istedim. Örneklerin bazıları için değişik kaynaklardan faydalandım, bazılarını ise kendim yazdım. Umarım faydalı olur.

1 -)Full Text Search Nedir?

Indexlenmek istenen alan eğer text içeriyorsa ki bu bir html dosyası pdf de olabilir, bu tip verileri indexlemek için Full Text Search kullanılır. Bu şekilde büyük metin verileri üzerinde daha hızlı sorgulama yapılabilir.

2 -) Oracle Text Index Tipleri

2.1 -) CONTEXT: Arayacağınız metin büyük text verileri içeriyorsa (HTML,word,pdf,xml de olabilir) bu tip indeksleme kullanılır. CONTAINS sözcüğü ile sorgulama yapılır. Veri değiştiğinde (DML sonrası) index CTX_DDL.SYNC_INDEX ile güncellenmelidir. Bölümlenmiş (partitioned) tabloları destekler.

2.2 -) CTXCAT: Daha küçük documan ve metinler üzerinde arama yapmak için kullanılır. Mixed Query'lerde daha iyi performans sağlar. Indeks'e text olmayan tablo sütunları da dahil edilebilir ve böylece performans arttırımı sağlanmış olur. CATSEARCH sözcüğü ile sorgulama yapılır. Index oluşturmak CONTEXT'den daha fazla zaman alır ve daha çok yer kaplar. Bölümlenmiş (partitioned) tabloları desteklemez.

2.3 -) CTXRULE : Daha çok döküman sınıflandırılması uygulamalarında kullanılır. MATCHES sözcüğü ile sorgulama yapılır.

2.4 -) CTXXPATH : Eskiye uyum için XMLType tipindeki sütunlar üzerindeki existsNode() sorgulamalarını hızlandırmak için eklenmiştir. Yeni uygulamalar için XMLIndex kullanılması önerilir.




ÖRNEK #1: Kullanıcı oluşturma ve haklar
-- Connect as the System Admin
CONNECT sys;

-- Create User
CREATE USER myuser IDENTIFIED BY myuser_password;

-- Grant Roles
GRANT RESOURCE, CONNECT, CTXAPP TO MYUSER;

-- Grant to MYUSER execute privileges on all Oracle Text packages
GRANT EXECUTE ON CTX_CLS TO myuser;
GRANT EXECUTE ON CTX_DDL TO myuser;
GRANT EXECUTE ON CTX_DOC TO myuser;
GRANT EXECUTE ON CTX_OUTPUT TO myuser;
GRANT EXECUTE ON CTX_QUERY TO myuser;
GRANT EXECUTE ON CTX_REPORT TO myuser;
GRANT EXECUTE ON CTX_THES TO myuser;

-- Connect as the New User
CONNECT myuser;


ÖRNEK #2: Context Index ile HTML üzerinde sorgulama
-- Create your text table
CREATE TABLE docs (id NUMBER PRIMARY KEY, text VARCHAR2(200));

-- Load Documents into Table
INSERT INTO docs VALUES(1, 'California is a state in the US.');
INSERT INTO docs VALUES(2, 'Paris is a city in France.');
INSERT INTO docs VALUES(3, 'France is in Europe.');

-- Create the CONTEXT index
CREATE INDEX idx_docs ON docs(text)
INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS
('FILTER CTXSYS.NULL_FILTER SECTION GROUP CTXSYS.HTML_SECTION_GROUP');

-- look for all documents that contain the word France:
SELECT SCORE(1), id, text FROM docs WHERE CONTAINS(text, 'France', 1) > 0;

-- add some rows
INSERT INTO docs VALUES(4, 'Los Angeles is a city in California.');
INSERT INTO docs VALUES(5, 'Mexico City is big.');

-- the index is not synchronized, these new rows are not returned with a query on city:
SELECT SCORE(1), id, text FROM docs WHERE CONTAINS(text, 'city', 1) > 0;

-- synchronize the index with 2Mb of memory, and reexecute the query:
EXEC CTX_DDL.SYNC_INDEX('idx_docs', '2M');


ÖRNEK #3: Özel Karakterleri İndeksleme ( Örneğin, "*=" )
-- Create your text table
CREATE TABLE mydata (id NUMBER PRIMARY KEY, text VARCHAR2(1000));

-- Load some data into Table
INSERT INTO mydata VALUES(1, '==================================');
INSERT INTO mydata VALUES(2, '444 ** *** ***** 444');
INSERT INTO mydata VALUES(3, '============== Cash ================');
INSERT INTO mydata VALUES(4, '============= Success ===============');

-- set up the special characters as printjoins if you wish to search for them
EXEC CTX_DDL.CREATE_PREFERENCE ('special_chars_lexer', 'BASIC_LEXER');
EXEC CTX_DDL.SET_ATTRIBUTE ('special_chars_lexer', 'PRINTJOINS', '*=');

-- create the CONTEXT index with your special_chars_lexer
CREATE INDEX idx_mydata ON mydata(text)
INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS ('LEXER special_chars_lexer');

-- make some query
SELECT SCORE(1), id, text FROM mydata WHERE CONTAINS(text, '%4%', 1) > 0 ORDER BY SCORE(1) DESC;
SELECT SCORE(1), id, text FROM mydata WHERE CONTAINS(text, '{444}', 1) > 0;
SELECT SCORE(1), id, text FROM mydata WHERE CONTAINS(text, '{44}', 1) > 0;
SELECT SCORE(1), id, text FROM mydata WHERE CONTAINS(text, '{**}', 1) > 0;
SELECT SCORE(1), id, text FROM mydata WHERE CONTAINS(text, '{
============== Cash ================}', 1) > 0;

-- synchronize the index with 2Mb of memory, and reexecute the query:
EXEC CTX_DDL.SYNC_INDEX('idx_mydata', '2M');

ÖRNEK #4:
-- Set up an auction table to store your inventory:
CREATE TABLE auction(
item_id NUMBER,
title VARCHAR2(100),
category_id NUMBER,
price NUMBER,
bid_close DATE
);

-- Populate the table with various items
INSERT INTO AUCTION VALUES(1, 'NIKON CAMERA', 1, 400, '24-11-2002');
INSERT INTO AUCTION VALUES(2, 'OLYMPUS CAMERA', 1, 300, '25-11-2002');
INSERT INTO AUCTION VALUES(3, 'PENTAX CAMERA', 1, 200, '26-11-2002');
INSERT INTO AUCTION VALUES(4, 'CANON CAMERA', 1, 250, '27-11-2002');
INSERT INTO AUCTION VALUES(5, '5-STAR(*****) CAMERA', 1, 2500, '28-11-2002');
INSERT INTO AUCTION VALUES(6, '5-STAR (*****) CAMERA', 1, 2500, '28-11-2002');
INSERT INTO AUCTION VALUES(7, '5 - STAR (*****) CAMERA', 1, 2500, '28-11-2002');
INSERT INTO AUCTION VALUES(8, 'EQUAL (=) CAMERA', 1, 25, '29-11-2002');
INSERT INTO AUCTION VALUES(9, '* STAR CAMERA', 1, 2500, '28-11-2002');
INSERT INTO AUCTION VALUES(10, '=======================================', 1, 100, '28-11-2002');
INSERT INTO AUCTION VALUES(11, '444 ** *** ***** 444', 1, 101, '28-11-2002');
INSERT INTO AUCTION VALUES(12, '============== Cash ==================', 1, 102, '28-11-2002');
INSERT INTO AUCTION VALUES(13, '============= Success ================', 1, 103, '28-11-2002');
INSERT INTO AUCTION VALUES(14, '============== Cash ==================4', 1, 104, '28-11-2002');
INSERT INTO AUCTION VALUES(15, '- -- --- ---- Update ---- --- -- -', 1, 105, '28-11-2002');

-- set up the special characters as printjoins if you wish to search for them
EXEC CTX_DDL.CREATE_PREFERENCE ('special_chars_lexer', 'BASIC_LEXER');
EXEC CTX_DDL.SET_ATTRIBUTE ('special_chars_lexer', 'PRINTJOINS', '*=-');

-- create an index set and add a sub-index
EXEC CTX_DDL.CREATE_INDEX_SET('auction_iset');
EXEC CTX_DDL.ADD_INDEX('auction_iset','price');

-- Create the combined catalog index on the AUCTION table
DROP INDEX auction_titlex;
CREATE INDEX auction_titlex ON AUCTION(title)
INDEXTYPE IS CTXSYS.CTXCAT
PARAMETERS ('LEXER special_chars_lexer index set auction_iset');

-- Query
SELECT title, price FROM auction WHERE CATSEARCH(title, 'CAMERA', 'order by price')> 0;
SELECT title, price FROM auction WHERE CATSEARCH(title, 'CAMERA', 'price <= 300')>0;

-- query for special character (=)
SELECT title, price FROM AUCTION WHERE CATSEARCH(title, '{=}', 'order by price') > 0;
SELECT title, price FROM auction WHERE CATSEARCH(title, '{=} & CAMERA', 'order by price')>0;

-- query for special character (-)
SELECT title, price FROM auction WHERE CATSEARCH(title, '{5-STAR}','order by price')>0;
*/
SELECT title, price FROM auction WHERE CATSEARCH(title, '\-','order by price')>0; -- /*not finds %-% */
SELECT title, price FROM auction WHERE CATSEARCH(title, '{*-*}','order by price')>0;
/*-- finds %-% */
SELECT title, price FROM auction WHERE CATSEARCH(title, '{--}','order by price')>0; -- finds nothing

-- query for special character (*)
SELECT title, price FROM AUCTION WHERE CATSEARCH(title, '{*}', 'order by price') > 0;
/* interpreted as wildcard */
SELECT title, price FROM auction WHERE CATSEARCH(title, '\*','order by price')>0;
/* not finds %*% */
SELECT title, price FROM AUCTION WHERE CATSEARCH(title, '\*\*', 'order by price') > 0; -- not finds %**%
*/
SELECT title, price FROM AUCTION WHERE CATSEARCH(title, '{\*\*}', 'order by price') > 0;
/* same as above */
SELECT title, price FROM auction WHERE CATSEARCH(title, '\*\*\*\*\*','order by price')>0;
/* only ***** */
SELECT title, price FROM auction WHERE CATSEARCH(title, '{*\**}','order by price')>0;
/* ???? */

-- Query for Special Characters mixed with other characters
SELECT title, price FROM AUCTION WHERE CATSEARCH(title, '*4*', 'order by price') > 0;
/* finds %4% */
SELECT title, price FROM AUCTION WHERE CATSEARCH(title, '{44}', 'order by price') > 0;
/* finds nothing */
SELECT title, price FROM AUCTION WHERE CATSEARCH(title, '{44*}', 'order by price') > 0;
/* finds 44% */
SELECT title, price FROM AUCTION WHERE CATSEARCH(title, '{============== Cash ==================}','order by price') > 0;
SELECT title, price FROM AUCTION WHERE CATSEARCH(title, '{============== Cash ==================*}','order by price') > 0;


ÖRNEK #5:






31 Temmuz 2009 Cuma

Vazgeçemeyeceğiniz Programlar

  • JDownloader:Özellikle Rapidshare gibi sitelerden dosya indirmeyi otomatize eden bir prog. Siz sadece indireceğiniz dosyaları listeye ekliyorsunuz, gerisini JDownloader sizin için yapıyor.








  • GnuCash: Ücretsiz finans programı.








  • Daemon Tools: Tüm CD/DVD yazma kalıplarını okuyabilen bir program.







  • CCleaner: Gereksiz ve kullanılmayan dosyaları temizleme aracı.





24 Temmuz 2009 Cuma

Call Stored Procedure In Oracle And Pass In Out Parameters

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;

public class Main {
public static void main(String[] args) throws Exception {
Connection conn = getOracleConnection();
// Step-2: identify the stored procedure
String proc3StoredProcedure = "{ call proc3(?, ?, ?) }";
// Step-3: prepare the callable statement
CallableStatement cs = conn.prepareCall(proc3StoredProcedure);
// Step-4: set input parameters ...
// first input argument
cs.setString(1, "abcd");
// third input argument
cs.setInt(3, 10);
// Step-5: register output parameters ...
cs.registerOutParameter(2, java.sql.Types.VARCHAR);
cs.registerOutParameter(3, java.sql.Types.INTEGER);
// Step-6: execute the stored procedures: proc3
cs.execute();
// Step-7: extract the output parameters
// get parameter 2 as output
String param2 = cs.getString(2);
// get parameter 3 as output
int param3 = cs.getInt(3);
System.out.println("param2=" + param2);
System.out.println("param3=" + param3);
conn.close();
}

private static Connection getHSQLConnection() throws Exception {
Class.forName("org.hsqldb.jdbcDriver");
System.out.println("Driver Loaded.");
String url = "jdbc:hsqldb:data/tutorial";
return DriverManager.getConnection(url, "sa", "");
}

public static Connection getMySqlConnection() throws Exception {
String driver = "org.gjt.mm.mysql.Driver";
String url = "jdbc:mysql://localhost/demo2s";
String username = "oost";
String password = "oost";

Class.forName(driver);
Connection conn = DriverManager.getConnection(url, username, password);
return conn;
}

public static Connection getOracleConnection() throws Exception {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:caspian";
String username = "mp";
String password = "mp2";

Class.forName(driver); // load Oracle driver
Connection conn = DriverManager.getConnection(url, username, password);
return conn;
}
}

10 Temmuz 2009 Cuma

JQuery Visualize

Scott Jehl tarafından yayınlanan JQuery eklentisi JQuery Visualize sayesinde HTML table'ındaki verilerden çok güzel grafikler oluşturmanız mümkün. Üstelik bunu basit bir $('table').visualize(); koduyla yapabiliyorsunuz.

JQuery Visualize

2 Temmuz 2009 Perşembe

Yuvarlak Köşeler

Jquery'nin yuvarlak köşeler oluşturmanızı sağlayan güzel bir eklentisi (rounded corners plug-in ) var. Bunun sayesinde resimlerin bile köşelerini yuvarlatmak mümkün.

Gerekli Dosyalar:


Ayrıntılı Bilgi İçin Tıkla


30 Haziran 2009 Salı

Google I/O Sessions - 2009 Developer Conferance, San Francisco

27-28 Mayıs 2009'da San Francisco'da düzenlenen "Developer Conferance"'ın sunumları na ulaşmak için tıkla.


25 Kasım 2008 Salı

Video Lectures

Mühendislik ve bilim dünyasının YouTube'u olarak görülen Video Lectures isimli web sitesini sık kullanılanlarınıza eklemenizi tavsiye ederim. En son baktığımda sitede "Computer Science" etiketiyle 1375 video vardı. Üstelik MIT (Massachusetts Institute of Technology) de elindeki tüm görsel içeriği bu siteye bağışlamış. Aşağıdaki iki link sayesinde artık MIT'ye gitmeden de MIT'li olabiliriz demek ki :P

VideoLectures'daki MIT sayfası
MIT Open Courseware kapsamında açılan online dersler

10 Kasım 2008 Pazartesi

HTML5'deki yenilikler

HTML5 ile birlikte birçok yenilik geldiği söyleniyor.

Gerçi Internet Explorer'ın HTML5'i desteklemediği söyleniyor ama bu özellikler Internet Explorer 7'de desteklense bile bir çok kişi hala IE6 hatta IE5 kullanıyor. Bu özellikleri kullanmak için biraz daha zaman geçmesi beklemek daha iyi olur sanırım. Yine de bi incelemeye değer bence.

Aşağıdaki makalelere bir göz atabilirsiniz:

W3.org - HTML 5 differences from HTML 4 ( link1 ) ( link 2 )
IBM Developer Works - New elements in HTML 5
W3 Schools - HTML5 Reference
Alistaparat - A Preview of HTML5
Fatih Hayrioğlu - HTML5'in Yeni Elementleri

30 Ekim 2008 Perşembe

Java'da PHP kullanmak : Quercus

Quercus: Java altında PHP

Quercus isimli bir kütüphane sayesinde artık Java ile PHP'yi bir arada kullanmak artık çok kolay. Quercus ayrıca Resin'i de geliştiren Caucho tarafından GPL lisansıyla yayımlanan bir teknoloji.

Quercus aslında PHP'nin %100 Java ile tekrar yazılmış hali. Bu nedenle Quercus herhangi bir Java Application Server üzerinde rahatlıkla çalıştırılabiliyor. Quercus Resin Application Server ile birlikte geliyor ama diğer serverlar içinse kurulum bir .war dosyası ile mümkün. Kurulum için ayrıca yapmanız gereken şey config dosyasında ufak bir değişiklik.

Quercus, PHP'nin tüm özelliklerini içinde barındırmasının yanısıra PHP'de kullanılan PDF, PDO, MySQL ve JSON gibi bazı temel modül ve eklentileride içinde barındırmakta.

Quercus PHP'nin Java dilinde tekrar yazılmış hali olduğundan Java servisleri ile de birlikte çok iyi çalışabiliyor. Ufak birkaç ayarlamayla PHP içinden java servislerini çağırmanız mümkün.


İlk Deneme

Application Server olarak Resin kullandığım için Quercus zaten kurulu gelmekteydi.
Java ile geliştirdiğim Web Uygulamasında tek yapmam gereken /WEB-INF/web.xml dosyasına aşağıdaki gibi bir "servlet mapping" tanımlamam yeterli oldu.

<web-app>

<servlet-mapping>
<servlet-name>AjaxServlet</servlet-name>
<url-pattern>/AjaxServlet</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name> QuercusServlet </servlet-name>
<servlet-class>
com.caucho.quercus.servlet.QuercusServlet
</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name> QuercusServlet </servlet-name>
<url-pattern> *.php </url-pattern>
</servlet-mapping>

</web-app>


Bundan sonra örnek bir hello.php dosyası yazdığımda, hello.php'nin normal bir jsp dosyası gibi yani javaya çevrilerek derlendiğini gördüm.

Ayrıntılı Bilgi İçin

http://quercus.caucho.com/
http://www.caucho.com/resin-3.0/quercus/

17 Ekim 2008 Cuma

CentOS'da Başlangıçta Çalışan Servisleri Ayarlama

( ENGLISH: Enabling and disabling services during start up in CentOs )

Geçenlerde Kullandığımız CentOs 5 Linux Server'da başlangıçta çalışan servislerden bazılarını Kapatıp , bazılarını da çalıştırmak istedik. Aşağıdaki kaynaklar bize oldukça yardımcı oldu:

http://linuxhelp.blogspot.com/2006/04/enabling-and-disabling-services-during_01.html
http://www.netadmintools.com/art94.html

Yaptıklarımızı özetlersek:

1-) Öncelikle /etc/init.d/ içine yeni bir script oluşturmamız gerekiyor. Bu dosyaya "mytomcat" diyelim. Bu scriptin içeriği şöyle olmalı.
# chkconfig: 2345 20 80
# description: Runs my tomcat server
#

export JRE_HOME=/usr/java/jdk1.5.0_16/jre

./var/appservers/mytomcat/bin/startup.sh
Linux'un bu oluşturduğumuz rc script dosyasını çalıştırabilmesi için bir tanımlama satırı oluşturmak gerekiyormuş. Bu satır ise yukarıda gördüğünüz "# chkconfig: 2345 20 80" satırı oluyor. Burda 2345 script'in çalıştırılacağı run-level'leri, 20 start priority'sini, 80 ise kill priority'sini tanımlıyormuş. Bu tanımlama satırlarından sonra da elbette script'in içeriğini yazıyoruz.

2-) Bundan sonra oluşturduğumuz script chkconfig'e tanıtmamız gerekiyor. Bunu da şu şekilde yapıyoruz:
chkconfig mytomcat --add

3-) Sonra yazdığımız script'i aşağıdaki şekilde enable ediyoruz:

chkconfig mytomcat on

4-) Script'in hangi levellerde çalışacağını da aşağıdaki komutla ontrol edebiliriz:

chkconfig mytomcat--list


5-) Son olarak şunu da belirteyim biz tomcat'i 80 portunda çalıştırmak istiyorduk ama bu yapmak için önce 80 portunda çalışan Apache'yi kapatmamız gerekiyordu. Normalde "chkconfig httpd off" yaptığımızda apache'nin Linux'da başlangıçta çalıştırılan servisler listesinden çıkması gerekiyordu ama nedense bu işe yaramadı. Bunun için biz de Türk Zekamızı (!) kullanarak /etc/init.d/httpd servicinin ismini değiştirdik böylece Linux bu script'i bulamadığından başlangıçta apache'yi çalıştıramadı.


16 Ekim 2008 Perşembe

Microsoft Silverlight

Genel olarak bir Java tutkunu olduğum için Microsoft tarafındaki teknolojilerle çok ilgilenme imkanım olmadı ne yazıkki ama bu hep içimde ukde olagelmiştir. Belki de bu yüzden Microsoft tarafındaki gelişmelere de pek uzak kalmamaya çalışıyorum.

Sözü kısa kesmek gerekirse, Microsoft Silverlight'ın ikinci sürümünü duyurdu. Oldukça güzel şeyler vadeden bu teknolojiyi gelin biraz daha yakından tanıyalım.

GENEL BAKIŞ

Microsoft Silverlight, web (browser) uygulamaları için animasyon, vektör ve 3D grafik ve video oynatma imkanları sağlayan, WPF tabanlı (Windows Presentation Foundation) browser eklentisidir. [1]

Adobe Flash, DHTML ve JavaFX ile rekabeti amaçlıyor. [1]

Silverlight ile oluşturulan içerik, Adobe Flash'in aksine derlenmiyor. [1]

Vektör grafik ve animasyonların işaretleme dili biçiminde kodlanmasını sağlayan görsel geliştirme dili XAML, içerdiği belgedeki Javascript değerlerine ulaşıp çalıştırabilmesi sayesinde, XAML (Okunuşu:Zamel) belgeleri DHTML/Ajax/Javascript içerikleri tarafından düzenlenip, programlanabiliyor. [1]

XAML oluşturmak için herhangi bir editör yeterli olduğu gibi, Microsoft’un bu iş için hazırladığı “Expression Blend” uygulamasıyla daha kolay çizim yapılabilir, animasyon oluşturulabilir. [1]

Olaylara biraz daha teknik bakmak gerekirse, iyi bir Silverlight uygulaması geliştirmek için temelde 2 kişiye ihtiyacınız var: Bir tasarımcı/animasyoncu ve bir yazılımcı (js/.net). Tasarımcı, Microsoft Expression Blend ile uygulamanın arayüzünü ve animasyonlarını yaratıp XAML (Extensible Application Markup Language) formatında yazılımcıyla paylaşacaktır. Yazılımcı ise uygulamanın arka tarafını tasarlayıp uygulamaya geçecektir. [2]

KAYNAKLAR

Silverlight Resmi Sitesi
Sikverlight Hakkında Türkçe Wiki Girdisi
Silverlight Hakkında İngilizce Wiki Girdisi
Silverlight Hakkında Türkçe Güzel Bir Mini Eğitim Yazısı
Javascript Geliştiricileri İçin XAML ve Microsoft Silverlight Sunumu

ÖRNEKLER ve DEMOLAR

Web Tabanlı XAML IDE : Rainbow 9

ALINTILAR


[1]: Azer Koçoğlu, http://docs.google.com/TeamPresent?docid=ddwks393_12dbf2zg&skipauth=true
[2]: Eren Emre, SiberKültür, http://www.siberkultur.com/?q=microsoft-silverlight

14 Ekim 2008 Salı

Dilbert'den Seçmeler

Dilbert'in Yenilen Sitesini oldukça beğendim. Boş zamanlarınızda ziyaret edebileceğiniz çok güzel bir site. Ayrıca favori Dilbert'lerinizi kaydetmeniz de mümkün. Herkese tavsiye ederim.

İşte benim hoşuma giden bazı dilbert'lerden seçmeler:

Dilbert.com



Dilbert.com



Dilbert.com

Diğer favori Dilbert'lerime buradan bakabilirsiniz.


13 Ekim 2008 Pazartesi

JQuery

Javascript kütüphaneleri bu aralar çok moda. JQuery isimli bi javascript kütüphanesi galiba prototype.js'nin pabucunu dama atmaya aday. Burdun buradan inceleyin:

http://jquery.com/

Burda da çok güzel bilgiler var:

http://www.eburhan.com/jquery-dunyasina-adim-atiyoruz/

9 Ekim 2008 Perşembe

Linux'de Faydalı Komutlar

Linux Kullanırken Elinizin altında bulunması gereken bazı komutlar:

# Dosyayı Sıkıştır (Tar formatında)
tar -czvf FILE.tar.gz DIR_OR_FILE

# Sıkıştırılmış Dosyayı Çıkart
tar -xzvf FILE.tar.gz

# Give all rights to all users
chmod 777 -R "MY FOLDER NAME"

# Search for a file or directory everywhere
find / -iname "FILE TO FIND"

# Copy an entire directory
cp -R DIR_TO_COPY/ NEW_DIR/

# Print working directory
pwd

# Dosya Sil
rm FILE_NAME

# Dizin Sil
rmdir DIRECTORY_NAME

# bir komutu başka bir kjullanıcı hesabına çalıştırma
su -c 'COMMAND' other user' # Örnek:
su -c 'pg_ctl start -D /usr/local/pgsql/data -l serverlog' postgres