التغطية المصورة ليوم سوالف: الجزء الأول، الجزء الأخير
الفائزون في المسابقة الأصغر لسوالف كاست

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > PHP
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد  
 
LinkBack أدوات الموضوع
عضو فعال
تاريخ التسجيل: Jul 2003-
#1 (permalink)  
Talking على هامش التجارب [ Intelligent Query Language ]


IQL او Intelligent Query Language

موضوع شيق للغاية ، قرأت عنه بعض المقالات مؤخرا وتأثرت به إلى حد ما

والليلة والواحد سهران كده مش عارف يعمل ايه ( بيدور على طريقة عشان يهرب بيها من المذاكرة لامتحان بكرة ) جاءت في بالي فكرة تنفيذ سكربت بسيط وسريع لتطبيق فكرة IQL وان كنت اشك اني استطعت الوصول لفكرتها بشكل صحيح .. ولكن لهذا اسم الموضوع " على هامش التجارب "


موضوع ال IQL باختصار هو .. مثلا لو افترضنا انه يوجد Panel مخصصة في لوحة تحكم ال VBulletin للمشرف العام للوصول إلى المواضيع بشكل اسرع واكثر احترافية .. من خلال كتابة بعض الاوامر النصية مثل
browse all topics
او
browse topics with date greater than 30 days

او اي كان .. ومن المفترض ان يقوم سكربتك ( والذي يدعم مبدأ ال IQL ) بترجمة هذه الجملة إلى SQL ويقوم بتنفيذها ..


ما نطول عليكم ، ده اللي انا وصلتله خلال ساعة ونص ، طبعا قمت بالتحضر لعدة خصائص ولكن الوقت لا يسعفني لاكمالها الآن .. feel free to improve it

كود PHP:
<?php
// class.iql.php
class IQL{
    var 
$pub = array();
    var 
$flds = array();
    var 
$string;
    var 
$words = array();
    var 
$query "";
    
    function 
run($string){
        
$this->string strtolower($string)." #";
        
$this->words $this->wordCut($this->string);
        
$func "iql_".$this->words[0];
        if (
method_exists($this$func)){
            
$this->$func();
        }else{
            
$this->fail(1);
        }
    }
    
    function 
wordCut($sText){
        
$sString wordwrap($sText1'[cut]');
        return 
explode('[cut]'$sString);
   }
   
   function 
iql_browse(){
       
$func "iql_browse_".$this->words[1];
       if (
method_exists($this$func)){
            
$this->$func();
        }else{
            
$this->fail(1);
        }
   }
   
   function 
iql_browse_students(){
       
$this->iql_browse_all(1);
   }
   
   function 
iql_browse_all($n 2){
       if (
$this->pub$this->words[$n] ]){
           
           
$q "select * from ".$this->pub$this->words[2] ];
           
$this->add2query($q);
           
           if (
$this->words$n+] && $this->words$n+]){
               if (
in_array($this->words$n+],$this->flds)){
                   
$q2 $this->add2where($n+3);
               }
           }
       }else{
           
$this->fail(1);
       }
   }
   
   function 
add2where($x){
       if (
$this->words[$x] == "greaterthan" || ($this->words[$x] == "greater" && $this->words[$x+1] == "than") ){
           if (! 
is_numeric($this->words[$x+2])){
               if (
is_numeric($this->words[$x+1])){
                   
$value $this->words[$x+1];
               }else{
                   
$this->fail(1);
               }
           }else{
               
$value $this->words[$x+2];
           }
           
           
$factor ">";
           
       }else if ( 
$this->words[$x] == "lessthan" || ($this->words[$x] == "less" && $this->words[$x+1] == "than") ){

           if (! 
is_numeric($this->words[$x+2])){
               if (
is_numeric($this->words[$x+1])){
                   
$value $this->words[$x+1];
               }else{
                   
$this->fail(1);
               }
           }else{
               
$value $this->words[$x+2];
           }
           
            
$factor "<";
            
            
        }else if (
$this->words[$x] == "equal"){
            
preg_match("/equal(.*)(order|and|or|#)/"$this->string$res);
            
$factor "=";
            
$value $res[1];
            
        }else if (
$this->words[$x] == "notequal" || ( $this->words[$x] == "not" && $this->words[$x+1] == "equal") ){
            
preg_match("/equal(.*)(order|and|or|#)/"$this->string$res);
            
$factor "!=";
            
$value $res[1];
        }else{
            
$this->fail(1);
        }
        
            
$q " where ".$this->words[$x-1]." $factor '$value'";
            
$this->add2query($q);
            
   }
   
   function 
add2query($string){
       
$this->query .= $string;
   }
   
   function 
fail($number){
       
// 1 = Syntax Error
       
exit;
   }
   
   function 
getQ(){
       return 
$this->query;
   }
}


واستخدام الملف :



كود PHP:
<?php
//iql.php
include('class.iql.php');
$obj = new IQL;
$obj->pub = array("students"=>"stu");
$obj->flds = array("age""name");
// $obj->run("Browse all students with name equal ahmed ehab");
// $obj->run("Browse all students with name not equal ahmed ehab");
// $obj->run("Browse all students with age greaterthan 20");
// $obj->run("Browse all students with age greater than 20");
$obj->run("Browse all students with age equal 20");
echo 
$obj->getQ();




حاولت البحث عن مراجع جيدة عن ال IQL في جوجل .. ولكن لم اجد فاعتذر عن عدم اضافة مراجع في هذا الموضوع . .

تحياتي






__________________
النسخة الثانية من ابلود بلس قريبا جدا :
+ شريط مئوي لرفع الملفات
+ دعم اكثر من سيرفر لرفع الملفات Multi-Server
+ مكتبة ملفات مؤرشفة
Egyptechno غير متواجد حالياً   قديم 26-05-2008, 03:38 AM
رد مع اقتباس
مشرف قسم PHP
تاريخ التسجيل: May 2007-
#2 (permalink)  

رهييب ياحمد ... فعلاً حاجة حلوة ..

جميل الكلاس أيضاً مع أني ما قرأته كله لكن أخذت نظرة سريعة ..

طيب شو الفكرة من استخدام IQL في ظل وجود أوامر وأزرار أسهل ؟!

لا تنسى أن المستخدم قد يخطئ إملائياً !

شوف، لو كان نظام الـ IQL المعتمد عربي يبقى روعة ، يعني مناسب جداً للمستخدمين العرب ..

وسؤال كمان، ليش أضفت "#" لاستعلام الـ IQL ؟

موضوع شيق ولي عودة إن شاء الله ..

تحياتي، أشرف السمهوري






__________________
[هل] سيتحقق الحلم؟
هذا ما ستخبرنا به الأيام :) ..
أشرف السمهوري غير متواجد حالياً   قديم 26-05-2008, 08:43 AM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Jul 2003-
#3 (permalink)  

اهلا اهلا اشرف باشا .. شكرا على مرورك يا جميل

بالنسبة لفكرة IQL عامة ، لابد انك لاحظت في بعض الاحيان يكون لديك حرية الاختيار ما بين Normal Mode او Advanced Mode مثلا في كتابة ال BB Code او غيره ..

او تعالا صحيح ، اثناء كتابتك انت للموضوع واحببت ان تقوم باضافة كود php هل تقوم بالضغط على الزر ام تقوم بكتابة [ php ] بيدك وتقوم باغلاقها ؟

هذه هي الفكرة ، تخيل مجتمع اغلبية زواره او من المفترض ان كل اعضاءه من المبرمجين او ناس لديهم خبرة ، وتريد توفير طريقة افضل واسهل ومريحة اكثر ..


بالنسبة للكلاس ، لقد اعتمدت بشكل كامل في السكربت على تقطيع ال String القادم إلى كلمات .. والتحقق من كل كلمة بالترتيب ..
مثلا اول كلمة من المفترض ان تكون
Browse او GET
فقمت بانشاء فنكشن باسم iql_browse و المفروض iql_get (ولكن ماعملتهاش )
تاني كلمة من المفترض ان تكون مثلا
browse all او browse student او browse students .. وهكذا

يعني قمت بحصر الاحتمالات .. وتقييم السكربت على اساس هذه الاحتمالات ..
ولهذا قمت باضافة ال # في آخر السترينج .. حتى يمكنني التشييك على نهايته ، وكذلك في النقطة الخاصة ب
equal and not equal

كانت لدي الجملة بهذا الشكل :
" browse student with name equal ahmed ehab "

فكنت اريد استخلاص الاسم او ال value من بعد equal ولكن واجهتني مشكلة انه من الممكن ان تكون ال value عدة اشكال مختلفة لا يمكن حصرها .. فقمت بحصرها ب
and|or|order|#



عموما ، لا ادري هل الطريقة المتبعة في ميكاانيكية السكربت صحيحة ام لا .. كنت افضل استخدام RegEx بشكل كامل .. ولكن لا ادري كيفيتها بالضبط ..

اشياء يمكن تحسينها في الكلاس :
- Order By
- Limit
- more than one coniditon (حاليا الكلاس تدعم شرط واحد في where )



تحياتي وشكرا لاهتمامك






__________________
النسخة الثانية من ابلود بلس قريبا جدا :
+ شريط مئوي لرفع الملفات
+ دعم اكثر من سيرفر لرفع الملفات Multi-Server
+ مكتبة ملفات مؤرشفة
Egyptechno غير متواجد حالياً   قديم 26-05-2008, 02:18 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: May 2007-
#4 (permalink)  

رائع جداً ، فكرة جميلة لتبسيط البسيط ، شكراً لك






dev11 غير متواجد حالياً   قديم 26-05-2008, 04:47 PM
رد مع اقتباس
مشرف قسم PHP
تاريخ التسجيل: May 2007-
#5 (permalink)  

أحمد أفندم

قبل ما أكتب أي حاجة أنا خطرت ببالي فكرة رائعة ، أعتقد تنفيذها هيفيد الكل إن شاء الله .. هاراسلك بريدياً وأشوف رأيك إن شاء الله ..

تحياتي، أشرف السمهوري






__________________
[هل] سيتحقق الحلم؟
هذا ما ستخبرنا به الأيام :) ..
أشرف السمهوري غير متواجد حالياً   قديم 26-05-2008, 06:33 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Nov 2003-
#6 (permalink)  

رائع بالفعل ،

للاسف الاختبارات خانقة
على العموم لي عودة بعد انتهاء الاختبارات (نهاية الاسبوع القادم)






__________________
AlwatanVoice, www.alwatanvoice.com
Almashroo, www.almashroo.com

Pal Coder == Palestinian Coder
Pal Coder غير متواجد حالياً   قديم 26-05-2008, 08:41 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: May 2007-
#7 (permalink)  

يعني انت زنق معاك تنزل موضوع حلو كدا يشد الواحد
وهو عنده امتحانات
ماش ياعم
بس موضوع جميل وفكره ولا اروع فعلا
انا فكرت في الحوار دا بس ماكنتش اعرف ان في اصلا مسمى وفكر شغال
جزاك الله خير
لي عوده






__________________
انتظروا المفاجاه (سكربت ......... الاول من نوعه )
-----
شركه ارت نت
برمجه
(العاب - مواقع - ويندوز ابلكيشين )
( اداره للمواقع - حمايه للسيرفيرات)
(كشف ثغرات المواقع والسكربتات )
artint.net غير متواجد حالياً   قديم 26-05-2008, 09:53 PM
رد مع اقتباس
مشرف قسم PHP
تاريخ التسجيل: Apr 2002-
#8 (permalink)  

الفكره جيدة لكن تطبيقها عمليا ليس مفيد جدا ... فكرة وضع مرادفات لل sql او html هو تقنين استخدامها او توحيدها على سبيل المثال bbcode وضع من اجل اتاحة وسوم خاصة في html وتجاهل البقية منها وهو حل من اجل آمان البرنامج ويشمل ذلك وسوم wiki الخاصة .
لكن ما يعيب bbcode او wiki code هو انها لم توحد هذه الشفره , علما ان اغلب التطبيقات الحديثة اصبحت تستخدم wiki code .

الفكرة التى قد تكون مفيدة جدا في الصنف السابقة, ان يتعامل مع قواعد بينات مختلفة بنفس الصيغه , اي يكون هناك sql عادي موحد لكل انواع قواعد البينات ويتم ترجمتة حسب قادة البينات .

مثال الاستعلام العادي سيكون:
كود:
SELECT * FROM `table_name` LIMIT 5
سيصبح في mysql
كود:
SELECT * FROM `table_name` LIMIT 5
اما في oracle سيصبح
كود:
SELECT * FROM `table_name` where rownum<=5






__________________
I Love PHP (d4d@hotmail.com)
http://www.daif.net/
daif غير متواجد حالياً   قديم 27-05-2008, 02:33 AM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Jul 2003-
#9 (permalink)  

Pal Coder :
artint.net :

يا جدعاااااان .. احلى برمجة تطلع من ايدك هي في ايام الامتحانات
لما يكون وراك امتحان Computer Graphics بعد 3 ساعات وانت قاعد تتابع سوالف .. بردو بتحط احلى ردود

تسلموا عالتشجيع .. وبانتظار عودتكم



daif :
شكرا لمرورك وكلامك يا باشا
كلامك صحيح
1- لاحظت مدى تقنين البرمجية ، فلايمكن اضافة كلمة اخرى غير Browse بسهولة ، وايضا لا ادري ان كان " تعميم " الكلمات او " تنوعها " هو من الناحية الايجابية ام السليبة .. سواء عمليا او برمجيا
يعني كونك انت تستخدم مثلا كلمة Browse وغيرك يستخدم كلمة Get وغيرك يستخدم كلمة Show .. في نفس البرمجة او نفس الصفحة ، هل هذه ستكون ميزة ؟ ام انها ستكون عيب ويجب ان يكون الكلام موحد ووفق سياق واحد ؟

2- فكرة تعدد محركات الداتا بيز في بالي ولكن لم اقم باضافتها مباشرة نظرا لأني لم اتعامل مع الاوراكل من قبل ولكن اضافتها او اضافة اي محرك قواعد بيانات آخر او حتى اي لغة مصدرية اخرى مثلا XML سيكون سهل للغاية

لأنك تقوم ببناء الجملة من الصفر وإلى نهايتها بنفسك .. من بضع كلمات يقوم الزائر بكتابتها وتقوم برمجيتك بفهم المطلوب وتحويله إلى شكل اوامر برمجية


نريد افكار عملية لتحسين الفكرة وطريقة برمجتها .. الموضوع جميل والله ولذيذ

دعواتكم لي في الامتحان
تحياتي






__________________
النسخة الثانية من ابلود بلس قريبا جدا :
+ شريط مئوي لرفع الملفات
+ دعم اكثر من سيرفر لرفع الملفات Multi-Server
+ مكتبة ملفات مؤرشفة
Egyptechno غير متواجد حالياً   قديم 27-05-2008, 09:27 AM
رد مع اقتباس
مشرف قسم PHP
تاريخ التسجيل: May 2007-
#10 (permalink)  

اقتباس:
1- لاحظت مدى تقنين البرمجية ، فلايمكن اضافة كلمة اخرى غير Browse بسهولة ، وايضا لا ادري ان كان " تعميم " الكلمات او " تنوعها " هو من الناحية الايجابية ام السليبة .. سواء عمليا او برمجيا
يعني كونك انت تستخدم مثلا كلمة Browse وغيرك يستخدم كلمة Get وغيرك يستخدم كلمة Show .. في نفس البرمجة او نفس الصفحة ، هل هذه ستكون ميزة ؟ ام انها ستكون عيب ويجب ان يكون الكلام موحد ووفق سياق واحد ؟
امبارح وأنا بلعب بالكلاس عملت شوية تطويرات ، ومن ضمنها كان تعدد الكلمات ، طريقتي كانت في تعيين مصفوفة في الكلاس كالتالي:

كود PHP:
 public $cmd = array
  (
   
'browse' => 'select',
   
'show' => 'select'
  
); 
وبذلك ، أصبحت دالة run كالتالي:
كود PHP:
 function run($string){ 
  
$this->string strtolower($string) .' #';
  
$this->words $this->wordCut($this->string); 
  if (!isset(
$this->cmd[$this->words[0]])) $this->fail(1);
  
$func 'iql_'$this->cmd[$this->words[0]];
  if (
method_exists($this$func)) {
   
$this->$func();
  } else { 
   
$this->fail(1);
  }
 } 
مع تعديل اسم الفنكشن من iql_browse إلى iql_select ( استخدام أسماء التعليمات الأصلية للوصول للهدف عن طريق أسماء أخرى ) :
كود PHP:
function iql_select(){ 
وكذلك قمت بدعم طريقة:
كود:
Browse from 10 to 20 students
عن طريق :
كود PHP:
  if ($this->words[1] == 'all') {
   
$this->limitfrom $this->limitto 0;
  } elseif (
$this->words[1] == 'from') {
   
$this->limitfrom intval($this->words[2]);
   if (
$this->words[3] == 'to') {
    
$this->limitto intval($this->words[4]);
   }
  } elseif (
$this->words[1] == 'to') {
   
$this->limitto intval($this->words[2]);
  } 
داخل دالة iql_select ، وطبعاً، معرفين متغيرين في الكلاس :
كود PHP:
 public $limitfrom 0;
 
public $limitto 0
طبعاً انا ما طرحتش التعديلات على شكل كلاس كامل لإني عدّلت حاجات والباقي خرب عشان ترتيب الكلمات وكدا ، فمش ممكن أنزله إلا لما يكون شغال بطريقة صحيحة ..

لكن أعتقد أن صيغة from و to غير مناسبة بهذه الطريقة ، أفكّر في صيغ مفيدة للـ Limit :
كود:
Browse first 10 students
Browse second 10 students
...
تنفع للصفحات ، يعني تمشي صفحة صفحة ..

كود:
Browse students from 10 to 20
بدل الطريقة اللي عملتها أنا، أحس دي مناسبة أكتر ..

كود:
Browse any 10 students
يستخدم Rand في الترتيب ..

كود:
How many/much students?
ممكن لو عايز توسَع أكتر يعني ..

كود:
Browse 5 students
وبرضه:
كود:
Browse 5 students with greatest age
بحيث يعمل Order By Age و Limit

كود:
Browse students without age
بحيث الحقل age فاضي

وايه رأيك يكون في علامات للحقول ، يعني مثلاً [field] لو اتكتب كدا ياخد اسم الحقل زي ماهو ، لو كان بدون [] يشوف اسم الحقل من الكلاس عن طريق الاسم الموجود ..

وممكن تكون الخاصية اختيارية في الكلاس ..

هذا اللي خاطر في بالي الآن ..

ولي عودااات إن شاء الله ..

تحياتي، أشرف السمهوري






__________________
[هل] سيتحقق الحلم؟
هذا ما ستخبرنا به الأيام :) ..
أشرف السمهوري غير متواجد حالياً   قديم 27-05-2008, 11:08 AM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Jul 2003-
#11 (permalink)  

باك ..

اشرف باشا ، مجهود رائع ..

قمت باضافة النقطة التي اضفتها إلى الكلاس ..
كود PHP:
<?php
class IQL{
    var 
$pub = array();
    var 
$flds = array();
    var 
$string;
    var 
$words = array();
    var 
$query "";
    var 
$cmd = array();
    
    function 
run($string){
        
$this->string strtolower($string)." #";
        
$this->words $this->wordCut($this->string);
        if (!isset(
$this->cmd[$this->words[0]])) $this->fail(1);
        
$met $this->cmd$this->words[0] ];
        
$func "iql_$met";
        if (
method_exists($this$func)){
            
$this->$func();
        }else{
            
$this->fail(1);
        }
    }
    
    function 
wordCut($sText){
        
$sString wordwrap($sText1'[cut]');
        return 
explode('[cut]'$sString);
   }
   
   function 
iql_select(){
       
$func "iql_browse_".$this->words[1];
       if (
method_exists($this$func)){
            
$this->$func();
        }else{
            
$this->fail(1);
        }
   }
   
   function 
iql_browse_students(){
       
$this->iql_browse_all(1);
   }
   
   function 
iql_browse_all($n 2){
       if (
$this->pub$this->words[$n] ]){
           
           
$q "select * from ".$this->pub$this->words[2] ];
           
$this->add2query($q);
           
           if (
$this->words$n+] && $this->words$n+]){
               if (
in_array($this->words$n+],$this->flds)){
                   
$q2 $this->add2where($n+3);
               }
           }
       }else{
           
$this->fail(1);
       }
   }
   
   function 
add2where($x){
       if (
$this->words[$x] == "greaterthan" || ($this->words[$x] == "greater" && $this->words[$x+1] == "than") ){
           if (! 
is_numeric($this->words[$x+2])){
               if (
is_numeric($this->words[$x+1])){
                   
$value $this->words[$x+1];
               }else{
                   
$this->fail(1);
               }
           }else{
               
$value $this->words[$x+2];
           }
           
           
$factor ">";
           
       }else if ( 
$this->words[$x] == "lessthan" || ($this->words[$x] == "less" && $this->words[$x+1] == "than") ){

           if (! 
is_numeric($this->words[$x+2])){
               if (
is_numeric($this->words[$x+1])){
                   
$value $this->words[$x+1];
               }else{
                   
$this->fail(1);
               }
           }else{
               
$value $this->words[$x+2];
           }
           
            
$factor "<";
            
            
        }else if (
$this->words[$x] == "equal"){
            
preg_match("/equal(.*)(order|and|or|#)/"$this->string$res);
            
$factor "=";
            
$value $res[1];
            
        }else if (
$this->words[$x] == "notequal" || ( $this->words[$x] == "not" && $this->words[$x+1] == "equal") ){
            
preg_match("/equal(.*)(order|and|or|#)/"$this->string$res);
            
$factor "!=";
            
$value $res[1];
        }else{
            
$this->fail(1);
        }
        
            
$q " where ".$this->words[$x-1]." $factor '$value'";
            
$this->add2query($q);
            
   }
   
   function 
add2query($string){
       
$this->query .= $string;
   }
   
   function 
fail($number){
       
// 1 = Syntax Error
       
exit;
   }
   
   function 
getQ(){
       return 
$this->query;
   }
}

ويتم اضافة هذا إلى الكائن :
كود PHP:
$obj->cmd = array('browse'=>'select''show'=>'select'); 



بالنسبة لفكرة ال [] اعتقد انه يجب استخدامها .. واستخدامها اعتقد سيفتح الطريق لاستخدام ال RegEx بشكل اكبر ..

اعتقد انه سيكون هناك نوعا ما Syntax خاص حتى يتم التعامل مع السترينج المدخل بشكل كامل .. مثلا من المفترض ان يكون هناك شكل معين لكتابة اسماء الحقول في السترينج .. او القيم ولكن بهذا سنقلل من قيمة الفكرة نفسها كسهولة التعامل .. وسيبدا يتحول الامر إلى انشاء اوامر برمجية اخرى ..

تحياتي






__________________
النسخة الثانية من ابلود بلس قريبا جدا :
+ شريط مئوي لرفع الملفات
+ دعم اكثر من سيرفر لرفع الملفات Multi-Server
+ مكتبة ملفات مؤرشفة
Egyptechno غير متواجد حالياً   قديم 28-05-2008, 04:36 PM
رد مع اقتباس
مشرف قسم PHP
تاريخ التسجيل: May 2007-
#12 (permalink)  

شكراً لاستجابتك عزيزي المستخدم هع ..

اقتباس:
اعتقد انه سيكون هناك نوعا ما Syntax خاص حتى يتم التعامل مع السترينج المدخل بشكل كامل .. مثلا من المفترض ان يكون هناك شكل معين لكتابة اسماء الحقول في السترينج .. او القيم ولكن بهذا سنقلل من قيمة الفكرة نفسها كسهولة التعامل .. وسيبدا يتحول الامر إلى انشاء اوامر برمجية اخرى ..
تطبيق فكرة ضيف الله سوف تحوّل الفكرة إلى أوامر برمجية جديدة ..

الآن الموضوع ممكن أن يتم بإحدى طريقتين:
* التسهيل على المبرمجين : بتحويل التقنية إلى توحيد الاستعلام ، وهي بفكرة ضيف الله ..
* التسهيل على المستخدمين : بإعطاء التقنية مرونة أعلى ، وهذا سيجعلها متوفرة بمتناول يد الجميع ، وسيحبها المستخدمون لأنها توفّر عليهم الوقت والجهد ..

النقطة الثانية هي التي تحقق مقصد IQL بالتحديد ، لذلك أنا أرى أن إعطاء التقنية مرونتها المطلوبة ، أو مرونة أعلى من الحالية ، بل وبمحاولة توفير جميع الاحتمالات ، هو ما سيجعل من هذه البرمجية أعجوبة تحقق الكثير من الأهداف ، وأهمها السلاسة ..

فعلاً يجب توفير Syntax جديد ، بل الأفضل أن يتم توفير Multi-Syntaxes .. حتى لو تم دعم [] ، فهي إضافية لتحديد اسم الحقل بالضبط مثلاً ، والطريقة العادية ستعمل بكفاءة كذلك ، كل حسب الهدف المطلوب ..

أرى أن الفكرة واسعة جداً والعمل عليها لتصبح بالشكل المطلوب قد يستغرق وقتاً طويلاً ..

سأتردد على الموضوع كلما جدّ به جديد إن شاء الله تعالى ..

شكراً على المتابعة مستر أحمد ..

تحياتي، أشرف السمهوري






__________________
[هل] سيتحقق الحلم؟
هذا ما ستخبرنا به الأيام :) ..
أشرف السمهوري غير متواجد حالياً   قديم 29-05-2008, 06:21 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Nov 2007-
#13 (permalink)