Monday, April 20, 2009

sql IN logical operation for java

Hi,
have you ever needed sql IN for java language ?
OK, in this post I'm going to use new java 5 feature (varargs method) to simulate sql IN:
public static boolean in(int i, int... ints) {
Arrays.sort(ints);
return Arrays.binarySearch(ints, i) >= 0;
}
as you see, our function gets 2 parameters, first one is your desired value and second one is your search list.
now, when you call the method:
public static void main(String[] args) {
System.out.println(in(1, 2, 3, 4, 5, 1));
}
it returns:
true
i hope you find this tip useful;

Labels:

Saturday, April 11, 2009

backup from mysql database's routines

Sometimes we need get backup just from mysql database's routines.
command below shows us how we can do that:
mysqldump dbname -uusername -p -Rtd > /path/to/your/dump/file

-u username
-p prompt password
-R stored procedures and functions
-t prevent writing table creation
-d " " row information

Labels: ,

Tuesday, May 27, 2008

how to detecet is there persian alphabet(s) in a string via php?

Because our system should detect direction of a string, we need a function that tell us the string has Persian alphabet or no,
so i write a little function to check it for us:

function hasPersianAlphabet($str) {
$persianAlphabet = array('ا', 'ب', 'پ',
'ت', 'ث', 'ج', 'چ', 'ح', 'خ', 'د',
'ذ', 'ر', 'ز', 'ژ', 'ط', 'ظ', 'س',
'ش', 'ض', 'ص', 'ع', 'غ', 'ف', 'ق',
'ك', 'ک', 'گ', 'ل', 'م', 'ن', 'و',
'ه', 'ي', 'ی', 'ه', 'آ', 'ء', 'ئ', 'ة');
str_ireplace($persianAlphabet, '', $str, $count);
return $count > 0;
}

Labels: , , ,

Wednesday, May 7, 2008

how to deploy war file into web root ?

Some times we need deploy our peoject into root directory of your domain (not sub directory), to solve the problem:
  1. make war file (for example myproject.war)
  2. rename the war file to ROOT.war (attention the filename must be uppercase)
  3. deploy war file
now, you can see / in tomcat web application manager page that deployed in site root.

Labels:

Monday, March 3, 2008

how to get all oracle components version ?

You can use 2 queries to get oracle components version:
1. select * from product_component_version
in this case you get result like below

PRODUCT VERSION STATUS
---------------------------------------------
NLSRTL 9.2.0.1.0 Production
Oracle9i Enterprise E... 9.2.0.1.0 Production
PL/SQL 9.2.0.1.0 Production
TNS for Solaris: 9.2.0.1.0 Production

all fields have crystal clear contents, so i won't describe them

or
2. select * from v$version
that returns same result as above but all fields is concated

BANNER
---------------------------------------------
Oracle9i Enterprise Edition Release 9.2...
PL/SQL Release 9.2.0.1.0 - Production
CORE 9.2.0.1.0 Production
TNS for Solaris: Version 9.2.0.1.0 - Produ...
NLSRTL Version 9.2.0.1.0 - Production

Labels:

Wednesday, January 30, 2008

90, 7, 3 rule

Few days ago, my boss told me a rule in software projects (or maybe other projects).
The rule called 90, 7, 3 rule ! which means:
90 percent of project is thinking
7 percent is implementing
and
3 percent is debugging
isn't it fantastic ?

Maybe some developers do vice versa!

I hope we were not who developers that did 90% implementing, 7% debugging and 3% thinking!

Labels:

Monday, January 21, 2008

temporary/memory tables in mysql

As you know memory tables (temporary tables) are a kind of tables which store data in memory and respond to your query very fast.
I've experienced temporary tables in Oracle and SQL Server by myself but I had no practical experience about that in mysql till yesterday!
Yesterday, I had a query that was very slow and took 4-5 hours for running! So I started to search about temporary tables in mysql and found how to use them.
After I used memory table in my queries, it took only 9 minutes !!! It was unbelievable.
So I decied to post a new mini article here and share result of my research with you.

There is a very simple command for creating a memory table :
create table tbl1(fld varchar(64)) engine=memory;
This commands will create a table in memory for us but it's empty. Now, how we can fill it ? We can use insert command for filling this table or fill it on creation time:
create table my_table engine=memory
select ip,country from ip_location;
As you see it's like a piece of cake ;)
Now we have a table in memory which help to decrease our query run time. if you get
Error Code : 1114
The table 'my_table' is full
error message during creation memory table, you have some solutions to solve the problem:

1. increase max_heap_table_size system variables.
 set @@max_heap_table_size=1048576
/* your favorite size in byte, it's 1 MB */
It's a system variables that force maximum size on memory tables

2.
limit rows by max_rows table option. It's a table option in the create table statement to keep the table from becoming too large

3.
decrease length of fields type, for example if you have a field as varchar(100) change it to varchar(32)

After creation, the table will be accessible for all sessions till server doesn't restart or shut down, after that you have your memory table without any rows.

You can read a complete document about memory tables here.

The solution solved my problems, I wish you enjoyed it :)

Labels: , ,