RSS

Category Archives: Software

your first step with ZK

your first step with ZK

peace be upon all

 

ZK in a glance

ZK is a highly productive open source Java web framework for building amazing enterprise web and mobile applications. Its unique Sever+client Fusion architecture enable developers to write applications using pure Java, design UI in XML while having optional control to the client side. ZK’s true event-driven model reflects desktop programming shielding developers from JavaScript programming, cross-browser issues, complex Ajax communication and the danger of exposing business logic.

ZK  also have alot of other products along with the framework

ZK  : web framework 

ZK mobile : extends the reach of Web applications to billions mobile devices supporting Java Mobile and Android.

ZK studio and ZTL tools :  visual IDE plugin for Eclipse and testing suite

ZK spreadsheet , ZK calendar : ajax application component

ZK Pivottable : Ajax web component for summarizing raw data

 

Why ZK ?

1- ZK is the leading enterprise Ajax framework and the easiest way to build great modern Java web applications.

2- Enterprise. Trusted. Established.

3- End to End Productivity Boost

4- Industry Leading Architecture

5- Transparent Ajax with Jav6- Rich Modular UI

7-  Fortune 500 Approved Security

 

Getting Started !

  • ** installation
    – u can  download and run on any IDE , but assume using netbeans , u need to download the REM plugin from here
    – start netbeans , on main menu bar select Tools >> plugins
    – click on downloaded tab >> add plugin , then navigate to where REM is downloaded and select it
    –  click install
  • ** create Netbeans demo ZK project
    – new project >> samples >> java web >> zk509 Demo application >> write the project name and click Finish
    – this is a demo project to explore the different component of the framework
    – click run and Enjoy 😀

>> <<  To can create a new project and use the palette to explore the different tools

>><<  more on   http://www.zkoss.org/

 

 
Leave a comment

Posted by on March 27, 2012 in Back-end, Featured, Programming

 

Tags:

Java Programming: Let's master (8/i)

Java Programming: Let's master (8/i)

Chapter 8 – Strings & Text I-O

8.1. Introduction

النهاردة معادنا في شابتر سهل أول وممتع ومهم،، هنتكلم فيه عن كل ما يخص الـ Strings والـCharacters  وهنغطي كمان جزء الـ Text I/O أو ما يسمى بقراءة وإدخال النصوص إن صحّت الترجمة، حيث لا أميل لترجمة المصطلحات دي بالعربية.. المهم

في البداية طبعا عاوزين نعرف يعني ايه string ؟؟

هو عبارة عن تسلسل من الحروف. في معظم لغات البرمجة بيعامل الـ string معاملة الarray of chars ولكن في الجافا بنعامل الـ string معاملة ال object . فيه عندنا تلات كلاسات بيتعاملوا مع الـ string وهما :

String, StringBuilder, and StringBuffer

لو التعامل هيبقي فقط لتخزين والتعامل مع الـ string في الحالة دي كلاس الـ String اختيار موفق ولكنه مش بيسمح بالتعديل علي الـ string . في حالة استخدامنا للكلاسين التانيين StringBuilder & StringBuffer نقدر نعمل strings ونقدر نعدلهم والتعامل هيبقي مرن .

8.2. The String Class

كلاس java.lang.String بيكون string من تسلسل مجموعة من الحروف. احنا اتعاملنا قبل كده مع المتغير اللي من نوع String زي مثلا ميثود println(String s) والـ compiler بياخد الـ string variable وبيقوم محوله لـ string object وبيتعامل معاه علي الأساس ده.

كلاس الـ String بيحتوي علي 11 constructor واكتر من اربعين ميثود بيعملوا وظائف متعددة زي مقارنة محتويات الـ strings والبحث عن string معين داخل string ووالتعامل مع الناتج الجديد وتحويل الحروف من حالة ال capital لحالة الـ small او من الـ uppercase للـ lowercase .

8.2.1. Constructing a String

طيب ازاي اعمل   String object؟

عندنا اربع طرق كلهم بيعملوا string جديد

1-    اول طريقة هتعامل مع الـ string علي انه object وبخلقه زي اي object :

2-    تاني طريقة اني اديله الـ stringLiteral علطول :

3-    تالت طريقة اني اعامل الـ string عادي كأنه متغير عادي (ودي الطريقة الشائعة):

4-    اخر طريقة اني اعرفه علي انه array زي كده

ملحوظة ::

فيه فرق بين String variable , String object , String value ولكن لأن الفروق بسيطة جدا فحاليا هنتعامل معاهم علي انهم واحد ونتجاهل الفروق دي مؤقتا وهنستخدم كلمة string بدل منهم.

8.2.2. Immutable Strings and Interned Strings

كلمة immutable string معناها انه لا يمكن تغييره او تعديله مثلا لو كتبنا الكود ده ياتري قيمة الString هتتغير؟؟

الإجابة هي لأ القيمة مش هتتغير. الجملة الأولي هتخلق String object وتحط فيه قيمة “java” وتدي الـ Reference بتاعه للمتغير s وفي الجملة التانية هييجي يحط القيمة الجديدة في نفس المتغير مش هينفع زي مااحنا شايفين:

لأن الـ String قيمته مش بتتغير الجافا بتوفر طريقة لتوفير استهلاك الـ memory  عن طريق استخدام ميثود اسمها intern() زي كده :

النتيجة هتبقي كده:

هنلاقي ان s, s2, s3 كلهم عبارة عن interned string فكلهم ساووا بعض لكن s1 لما قارناها بـ s طلعت مش بتساويها لأنهم اتنين objects مختلفين مع انهم بيحملوا نفس القيمة.

8.2.3. String Comparisons

احيانا بنحتاج نقارن قيمة اتنين string ببعض بإستخدام (==) :

ولكن الطريق دي بتشوف هل string1 و string2 بيشاوروا علي نفس الـ object ولا لأ. علشان نقارن بين القيم اللي بداخل string1 و string2 بنستخدم ميثود اسمها equals زي كده

ملحوظة::

مش معني ان اتنين strings بيحملوا نفس القيمة انهم يبقوا بيشوروا علي نفس الـ object ممكن يبقوا بيحملوا نفس القيمة ولكن كل واحد بيحمل reference لـ object مختلف عن التاني زي كده

في اول جملة هيبقي الناتج false لأنهم بيحملوا reference لأتنين object مختلفين ولكن في الجملة التانية هترجع true لأنهم بيحملوا فعلا نفس القيمة وهي “Welcome to Java” .

فيه برده ميثود اسمها compareTo ودي بتقارن بين اتنين string وبتبقي زي كده :

الميثود دي بترجع 0 لو s1 بيساوي s2 وبترجع قيمة اقل من 0 لو s1 اقل من s2 وبترجع قيمة اكبر من 0 لو s1 اكبر من s2  .

ونلاحظ برده ان نتيجة المقارنة بتعتمد علي ترتيب الحروف الأبجدي نفسه يعني بفرض ان عندنا s1 فيه “abc” وعندنا s2 فيه “abg” نتيجة المقارنة هتبقي -4 . هنيجي نقارن اول حرف من s1 واول حرف من s2 اللي هو “a” هيطلع متساويين فيه وبالمثل في التاني ولكن في الحرف التالت هنلاحظ  ان في ترتيب الحروف ال”c” بتقل عن ال”g” بـ 4 حروف فالنتيجة هتطلع -4 .

تنبيه:: يرجي عدم استخدام علامات المقارنة العادية (<,>,<=,>=) في حالة الـ String ولكن يتم استخدام ميثود compareTo فقط.

برده فيه ميثودس كتير ممكن نحتاجها زي equalsIgnoreCase بتقارن ولكن بتتجاهل حالة الحروف من حيث انهم uppercase او lowercase وميثود regionMatches بتقارن جزء فقط من الـ string وليس الstring كله وفيه برده ميثود str.startsWith(prefix) بتختبر هل الـ string ده بيبتدي بالقيمة الفلانية ولا لأ وميثود str.endsWith(suffix) بتختبر هل الـ string ده بينتهي بالقيمة الفلانية ولا لأ.

8.2.4. String Length and Retrieving Individual Characters

من الممكن معرفة طول الـ string عن طريق استخدام ميثود length() زي message.length() ودي بترجع طول الـ string .

ميثود تانية s.charAt(index) بترجع حرف معين من الـ String والـ index بيكون رقم بين الـ 0 وبين s.length() – 1 يعني message.charAt(0) هترجع “w” زي كده :

تنبيه :: لازم نراعي ان الـ index بيبقي اقصي قيمة ليه هي s.length()-1 وده لأن الـ index في حالة الـ string بيبدأ من 0 ومش من 1ولو كتبناها s.length() بس هيطلع StringIndexOutOfBoundsException  .

ملحوظة :: ميثود length موجودة اصلا في الـ array  وبنستخدمها هنا لنفس السبب ولكن هنا بنقول s.length()  وبترجع عدد الحروف في الـ string وفي حالة الـ array بنقول a.length وبترجع عدد العناصر في الـ array.

8.2.5. String Concatenation

ممكن نستخدم ميثود concat لدمج اتنين string زي كده:

وممكن برده الطريقة دي:

String myString = message + ” and ” + “HTML” ;

ونقدر نستخدم + لنفس الغرض لدمج اكتر من string مع بعض والأرقام كمان وفي حالة الأرقام بيتحول الرقم لـ string وبعد كده يندمج مع الـ string الأصلي ولازم نراعي ان في المعادلة دي لازم اي طرف يكون نوعه string وإلا الدمج مش هيتم.

8.2.6. Obtaining Substrings

احنا استخدمنا ميثود charAt() لإسترجاع حرف من string ولكن لو عاوزين نرجع اكتر من حرف بنستخدم ميثود substring وبيبقي ليها شكلين :

–         public String substring(int beginIndex, int endIndex

بترجع string جديد عبارة عن جزء مقتطع من الـ string الأصلي وبحددله بداية التقطيع beginIndex ونهايته endIndex زي المثال ده :

–         التقطيع والنهاية بتبقي لنهاية الـ string زي كده :


 

والنتيجة هتكون كده:    “Welcome to HTML”

8.2.7. String Conversions

صحيح ان بمجرد عمل الـ string مش بقدر اعدل في قيمته لكن اقدر اعمل string جديد بإستخدام toLowerCase, toUpperCase, trim, and replace كلهم بيرجعوا String جديد  :

–         toLowerCase, toUpperCase بيرجعوا String جديد بتتبدل فيه حروف الأصلي سواء من الupper لل lower او العكس.

–         trim بتشيل اي مساحات بين الحروف .

–         replace بتبدل اي حرف في كل مرة وجوده بحرف تاني

8.2.8. Finding a Character or a Substring in a String

ممكن نستخدم ميثودس زي indexOf  و  lastIndexOfللبحث عن حرف او مجموعة حروف بداخل اي string .فيه عندنا اربع صور لميثود indexOf() وميثود lastIndexOf():

بترجع الـ index بتاع الحرف ch لو ظهر مرة واحدة بس والindex بتاع اخر ظهور للحرف في حالة تكراره وبترجع -1 في حالة عدم وجود الحرف نهائي وبنستخدمها كده مثلا indexOf(‘a’) .

بترجع الـ index بتاع الحرف من اول الـ fromIndex

بترجع الـ index بتاع اول حرف في str في حالة وجوده مرة واحدة فقط واخر index لأول حرف في حالة تكرار الstr كله وبيرجع -1 في حالة عدم وجود Str
/p>

بترجع الـ index بتاع اول حرف في str من اول fromIndex .

امثلة :

8.2.9. Conversion Between Strings and Arrays

الـ string  مش array ولكن ممكن احوله لـ array والعكس صحيح. علشان احول من String لـ array بنستخدم ميثود toCharArray زي كده :

هيبقي عندنا chars[0]=”J” , chars[1]=”a”, chars[2]=”v”, chars[3]=”a”

لو عاوزين نحول من array لـ string هنستخدم الـ constructor ده String(char[]) :

أو

8.2.10. Converting Characters and Numeric Values to Strings

علشان نقدر نحول اي قيمة عددية لـ string بنستخدم الميثود المناسبة لنوع القيمة العددية يعني مثلا Double.parseDouble(str) بنستخدمها في حالة المتغير اللي من نوع Double وميثود Integer.parseInt(str) في حالة المتغير اللي من نوع int .

8.2.11. Example: Checking Palindromes

مثال عندنا ده برنامج بيختبر اي string هل هو palindrome ولا لأ؟

الـ string بيكون palindrome لو اتقري من اليمين زي الشمال زي مثلا “mom” او “dad” او “noon”

لو جينا نفكر في فكرة للبرنامج اول حاجة عمل متغيرين low و high عبارة عن index اول واخر حرف في الـ string ومبدئيا low قيمته 0 والـ high قيمته s.length()-1 وبيقارن الـ low مع الـ high لو هما نفس الحرف بيزود الـ low بواحد ويقلل الـ high بواحد ويقارنهم تاني وهكذا لحد اخر الString وبنطلع من اللووب لو الـlow بقي اكبر من الـ high او في حالة ان الحرفين مختلفين.

احنا لحد هنا نكون اتعرفنا على كلاس String و StringBuilder وعرفنا أهم عمليات المعالجة اللي ممكن تتم على String أو charArray

في النهاية عايز أوضح ان الجافا بتتعامل مع الString على انه أوبجكت وبتعتبره reference dataType ..

ومعادنا المرة الجاية ان شاء الله نتكلم عن كلاس Character والجزء الخاص بـ Text I/O..

It’s totally free to share

Thanks, CATReloaded

Thanks, CATaZine

Om4rezz

 
Leave a comment

Posted by on March 26, 2012 in Featured, Programming, Software

 

Tags: , , ,

Introduction to Cassandra

Introduction to Cassandra

Welcome back ! to NoSQL DB  most of Software engineers know what is MongoDB – CouchDB

What is Cassandra ?

Cassandra is Apache project working in large platforms such as facebook

you can download it from here

1- Edit Configuration file from here

conf/cassandra.yaml

The distribution’s sample configuration conf/cassandra.yaml contains reasonable defaults for single node operation, but you will need to make sure that the paths exist fordata_file_directoriescommitlog_directory, and saved_caches_directory.

Verify storage_port and rpc_port are not conflict with other service on your computer. By default, Cassandra uses 7000 for storage_port, and 9160 for rpc_port. The storage_port must be identical between Cassandra nodes in a cluster. Cassandra client applications will use rpc_port to connect to Cassandra.

It will be a good idea to change cluster_name to avoid unnecessary conflict with existing clusters.

initial_token. You can leave it blank, but I recommend you to set it to 0 if you are configuring your first node.

 2- Edit log4j-server.properties
# Edit the next line to point to your logs directory
log4j.appender.R.File=/var/log/cassandra/system.log

 3- Edit cassandra-env.sh

Cassandra has JMX (Java Management Extensions) interface, and the JMX_PORT is defined in conf/cassandra-env.sh. Edit following line if you need.

# Specifies the default port over which Cassandra will be available for
# JMX connections.
JMX_PORT="7199"

By default, Cassandra will allocate memory based on physical memory your system has. For example it will allocate 1GB heap on 2GB system, and 2GB heap on 8GB system. If you want to specify Cassandra heap size, remove leading pound sign(#) on the following lines and specify memory size for them.

#MAX_HEAP_SIZE="4G"
#HEAP_NEWSIZE="800M"

If you are not familiar with Java GC, 1/4 of MAX_HEAP_SIZE may be a good start point for HEAP_NEWSIZE.

Cassandra will need more than few GB heap for production use, but you can run it with smaller footprint for test drive. If you want to assign 128MB as max, edit the lines as following.

MAX_HEAP_SIZE="128M"
HEAP_NEWSIZE="32M"
 Start up cassandra

And now for the moment of truth, start up Cassandra by invoking bin/cassandra -f from the command line1. The service should start in the foreground and log gratuitously to standard-out. Assuming you don’t see messages with scary words like “error”, or “fatal”, or anything that looks like a Java stack trace, then chances are you’ve succeeded.

Press “Control-C” to stop Cassandra.

If you start up Cassandra without “-f” option, it will run in background, so you need to kill the process to stop.

 

bin/cassandra-cli is a interactive command line interface for Cassandra. You can define schema, store and fetch data with the tool. Run following command to connect to your Cassandra instance.

bin/cassandra-cli -h host -p rpc_port

example:
% bin/cassandra-cli -h 127.0.0.1 -p 9160

 

 
Leave a comment

Posted by on March 25, 2012 in Featured, New Technology, Programming

 

Python Part (9) : OOP

Python Part (9) : OOP

تعملنا سابقا بعض العناصر الاساسية في البايثون مثل (strings ,list,dictionary,….) كل هذه العناصر تعتبر objects.

وبما انهم يندرجون تحتى مسمى واحد ، فمن المؤكد ان هناك بعض العوامل والصفات المشتركة فيما بينهم ،هذا الحديث سيقودنا مباشرة الى ال(oop) ، ولكن دعونا في البداية نلقي نظرة على مفهوم ال (functions) .

Functions

تعمل ال(functions) على تقسيم البرنامج الى قطع معية من الكود ، كل قطعة تقوم بعمل خاص ومميز ، هذه القطع تسمى (function) وتعمل بمجرد استدعائك لها في المكان المناسب في كود البرنامج لكي تقوم بالوظيفة المطلوبة في الوقت المناسب اثناء عمل البرنامج  .

يحاول المبرمجون -قدر الامكان – تقسيم البرامج الكبيرة الى (functions) وجعل البرنامج في شكل قطع مرتبة من الكود ، وهذا لاسباب عديدة من اهمها

تسهيل قراءة الكود وتصور ما يمكن ان يقوم به الكود عند تشغيل البرنامج  .

يساعد المبرمج في التعرف على اي جزء من البرنامج في حالة حدوث اخطاء .

سهولة التعديل والتطوير في الكود فيما بعد اذا لزم الامر .

(حتى الان) تعد هذه مقدمة عامة عن مفهوم ال (oop و ال functions) ، ولكن دعونا نجعل الامر اكثر تخصصية في البايثون ،ولنبدأ بالتحدث عن بعض المفاهيم الاساسية في ال(oop) .

Object

ال(object) يتكون من مجموعة من ال(data)  تقوم بتوصيف ال(object) ، ومجموعة من ال(methods) تقوم بتحديد المهمة او الوظيفة التي يؤديها ال(object) .

Class

هو الهيكل العام او القالب الذي يصنع منه ال(object) ، وللتسهيل : اعتبر ان الكلاس عبارة عن وعاء يحتوي على مجموعة من ال(objects) من نفس النوع . وفي الكلاس يتم تعريف ال(methods) والمتغيرات التي تتحكم في ال(object) .كما يمكن تعريف اكثر من object في نفس الكلاس .

 

في الجزء الثامن من هذه السلسلة تعلمنا كيفية تعريف دالة جديدة ، عن طريق (def) وذكرنا ان ال(def) هي احدى طرق ال(abstraction) .

في الحقيقة تكمن فائدة ال(abstraction)  الاساسية وهي تعني “التجريد” في توفيرها للجهد والوقت على المبرمج اثناء كتابة الاكواد الضخمة . وهنا تظهر فكرة ال(function) مرة اخرى ، انك تقوم بتعريف دالة تقوم بوظيفة محددة وتقوم باستدعائها فيما بعد في البرنامج كلما لزم الامر ، او حتى استخدامها في وظائف مشابهة في برامج اخرى ان امكن .

 ملحوظة مهمة  :

يفضل ان يقوم المبرمج بجعل ال(functions) اقل اعتمادية على البرنامج نفسه ،بحيث يقوم بتحويلها الى (Parametrized Functions) ، وجعلها (Generic) الى اقصى حد ممكن ، وذلك لسهولة استخدامها في برامج اخرى فيما بعد .

والان دعونا نسرد خصائص ال(oop) :

1- Polymorphism:

اصل الكلمة تعني “تعدد الاشكال” ،وتعني في ال (oop) : وجود عملية تؤدي نفس الوظيفة على انواع مختلفة من الكائنات (objects) .

بمعنى انه يمكن استخدام عملية الجمع ،لجمع الارقام ،ويمكن استخدامها ايضا لجمع مجموعة من ال(characters).

مثال :

في البداية : قمنا بتعريف دالة (add) تقوم بعملية جمع شيئين ،وارجاع الناتج .

بعد ذلك تعاملت الدالة مع الارقام وارجعت الناتج ، ثم تعاملت مع الحروف وارجعت الناتج ،وهذا يوضح مفهوم ال(Polymorphism).

2- Encapsulation:

معناها الحرفي هو “التغليف”.

اما في ال(oop) فهو استخدام اي جزء من (object) معين ،سواء كان (method) او (attribute) دون التعرف على محتواه ،ودون التعرف على طريقة تعريفه .

3- Inheritance:

معناها الحرفي هو الوراثة” .

في ال(oop) تعني الوراثة ايضا ولكن بشكل مختلف قليلا. فهي تعني ان يرث الكلاس مجموعة من الخصائص للكلاس الاصلي .لكن ياتي الاختلاف بين الوراثة في الحقيقة وبين الوراثة في ال(oop) في النقطة التالية:

– الوراثة الحقيقية يأخذ الطفل مجموعة من صفات الاب ولكن ليس بالضرورة ان يأخذ جميع الخصائص والصفات .

– في ال(oop) يأخذ الكلاس جميع صفات الكلاس الاصلي + مجموعة من الصفات الخاصة (ان وجدت) .

 

الى هنا نكون قد وضحنا بعض معالم ال(oop) في البايثون ، نستكمل حديثنا في المرة القادمة ان شاء الله  بالتفصيل  مع ذكر الامثلة .

 
2 Comments

Posted by on March 21, 2012 in Featured, Programming, Software

 

Tags: , , ,

let's forge !! ()

let's forge !! ()

welcome all ,

sure you are wondering what’s Forge !!
Forge is a Cross-platform app framework  which enables you to create native apps for multiple platforms from a single HTML5 codebase.

Here are a few benefits of Forge:

    • ** Single code base
    • ** Ability to generate mobile applications for Android and iPhone
    • ** Ability to generate browser extensions for Chrome, Safari, Firefox, and IE
    • ** Rapid development
    • ** Reduced maintenance costs

 

It doesn’t require to write any line of  java or objective-c or learn any platform-specific APIs.
now let’s get started

 

    1.  Download the development environment
              ** To use Forge, you will first need to sign up for the service at https://trigger.io/forge/
      •  download the Forge development environment and unzip it to any directory .

 

    1.  For Win users >> run go.bat
      • ** for linux and MAC users >> from the terminal change the directory to wherever you extracted the zip file run source  go.sh

 

    1.  Creating your first app
               ** by now u should have a command terminal look something like that.

 

(forge-environment)

** HINT ** if u want to keep each of your apps separated u should use another directory for them

mkdir “../test-apps”
cd “../test-apps”

now we are in a separated directory , let’s create the app

forge create
after that you will be prompted to enter the app name , your user-name , password and that’s it you are done 🙂

you can switch to the app directory and try run your index page named index.html Now if u wanna start your app as an extension to chrome , or Firefox add-on or android , iphone app >> let’s move to another level i would prefer to start it as an extension to chrome .

by now u should see src  directory under the app directory , this is where all the extensions will be placed

inside , u should see “config.jsonwhich automatically generated and holds all the settings for the extension .

 

1- Create a file called background.js” inside the “src” directory and add the following code
     window.alert(‘Hello Chrome’);

2- Open config.json and add this file to the background_files array
     “background_files”: [“background.js”],

3- Building and load Chrome Extensions Using Forge

** Navigate to the directory where you extracted the build tools from the terminal

** Windows users run go.bat. OSX/Linux users run source go.sh

** Run forge build.

** When the build finishes take a look inside the development directory and you should see your generated Chrome extension

** Open the Chrome browser and go to chrome:extensions.

** If Developer mode isn’t already enabled click the [+] button at the top right.

** Click Load unpacked extension.

** Navigate to the development directory which contains the generated extension.

** Select the chrome folder and click OK.

** You should see ‘Hello Chrome’ alert window as soon as the extension has loaded.

>> NOTE  <<
only the “Get Started” apps are FREE , more pricing here >> https://trigger.io/pricing/

>> REFERENCE <<
https://trigger.io/