• الإعلانات

    • فيصل الحربي

      تسجيل عضوية جديدة في المنتدى   01/31/2016

      السلام عليكم ورحمة الله وبركاته  عزيزي العضو الجديد :  حاليا رسالة الإيميل لتأكيد صحة إيميلكم تذهب للبريد العشوائي ( جاري حل المشكلة )  فإذا لم تجد رسالة التحقق من إيميلكم في صندوق الوارد لديكم إتجه للبريد العشوائي ( JUNK)  وقم بتفعيل إشتراككم من هناك   

shreef

المشرفين القدامى
  • عدد المشاركات

    796
  • تاريخ الانضمام

  • تاريخ اخر زياره

السمعه بالموقع

7 عادي

عن shreef

  • الرتبة
    مشرف قسم الـ php والـ Perl
  • تاريخ الميلاد 10/17/1987

طرق الإتصال

معلومات الملف الشخصي

  • الجنس ذكر
  • الدولة : مصر , اﻹسكندرية

أحدث الزائرين لملفلك الشخصي

5,064 زياره للملف الشخصي
  1. Microsoft Edc 2008

    وصلنى من مجموعة dotnetWork.org رسالة عن انهم بيقدموا دعوات مجانية لحضور EDC08 , اخر معاد تقدر تجيب فيه دعوة هو بكرة 5 ابريل لحد الساعة 12 بالليل. للأسف مش حقدر اروح عشان اجازتى حتخلص يوم 8 ابريل :(
  2. Php-gtk

    السلام عليكم, انا مشتغلتش بيها قبل كدة فللأسف مقدرش اساعدك غير بعنوان موقع مجتمع php-gtk و حتلاقى هناك محترفين التخصص دة php-gtk.eu
  3. ما الجديد في Php5

    السلام عليكم, ZDZ: What's new in PHP5 دة مقال انجليزى عن الجديد فى php5 , المقال دة من سنة 2004 فبيتكلم على اخر اضافات فى الوقت دة النسخة 5.3 من php قربت تخرج , و هى حتكون فيها اضافات كتير من اللى كان مخطط انها تضاف فى php6 , فالمفروض ان يكون مبرمجى php المهتمين على علم بالتحديث المهم دة, اقرى المقال دة SP: What's new in PHP5.3 معلومة معرفش إن كان عندك علم بيها , و هى ان دعم php4 حينتهى يوم 2008/8/8 فالمفروض ان تكون كل الناس الى منقلتش لـ php5 من زمان , انها تكون جهزت نفسها انها تنقل للأصدار الأحدث و تتابع بعد كدة كل اصدار جديد عشان تقدر تستفيد منه اول بأول.
  4. السلام عليكم MySQL : Optimizing subqueries منها LEFT TO RIGHTUse x = ANY (table containing (1,2)) rather than x=1 OR x=2. ----- ملحوظة : اسف إن مكنتش حقدر اتابع فى الموضوع , عشان حكون فى طريقى من تانى ﻷرض المعركة إن شاء الله بعد دقائق :)
  5. انا الى فهمته هو ان عندك مشكلة فى الـ performance بسبب انك بتعمل sql queries كتير و احيانا بيكون ملهاش لازمة, فأنت عايز تقللها على قد متقدر. الحقيقة انت ممكن تعمل الى انت عايزه دة فى عدد 2 من الاستعلامات كأقصى حد, و دة باﻷعتماد على امكانية لقاعدة البيانات بتمكنك من انك تبعت اكثر من قيمة كـ array فى جملة الـ SQL بتاعتك , انا استخدمت هنا كلمة IN و مقابلها NOT IN . <?php /** * returns the list of names stored in the file * [email protected] Array */ function getNamesFromFile() { // ... return array('ahmed', 'ali', 'zack', 'sara'); } /** * generates number of place holders used in preparing sql statments * [email protected] int number of place holders needed [email protected] String */ function getSqlPlaceHolders($num=1){ $str = '?'; for($i=1;$i<$num;$i++) { $str .= ', ?'; } return $str; } $namesInFile = getNamesFromFile(); //array ( ... ) $numberOfNames = count($namesInFile) $db = new PDO('mysql:host=localhost;dbname=test', $user, $pass); if ($numberOfNames > 0) { //set flags to 0 $stmt = $db->prepare('UPDATE table_name SET flag = 0 WHERE name NOT IN (' . getSqlPlaceHolders( $numberOfNames ) . ')'); for($i=0; $i<$numberOfNames; $i++) { $stmt->bindValue($i+1, $namesInFile[$i], PDO::PARAM_STR); } $stmt->execute(); //set flags to 1 $stmt = $db->prepare('UPDATE table_name SET flag = 1 WHERE name IN (' . getSqlPlaceHolders( $numberOfNames ) . ')'); for($i=0; $i<$numberOfNames; $i++) { $stmt->bindValue($i+1, $namesInFile[$i], PDO::PARAM_STR); } $stmt->execute(); }else{ $db->exec('UPDATE table_name SET flag = 0'); } لاحظ انا بستخدم هنا PDO بدل من استخدام الطريقة القديمة للتعامل مع MySQL بأستخدام دوال mysql_connect و اخواتها, راجع المنوال للتفاصيل. مراجع : ==== MySQL : Subqueries with ANY, IN ,and SOME PHP: PDO - PHP Data Object
  6. السلام عليكم نظريا اعتقد ان الموضوع دة ممكن بس مش حيبقى دقيق , إذا كنت بتستخدم حروف Unicode , فأنت عندك كل الحروف بتاعت اللغات الحية تحت character set واحدة , و حيكون كل حرف ليه رقمه الخاص , و منها احنا نقدر نعرف رقم الحرف دة بيقع فى مدى الحروف الخاصة بأى نص (script) , بس لسة مقدرناش نعرف اللغة لسة . لاحظ هنا لمة بنتكلم عن script فدة معناه اننا نقصد مجموعة حروف , زى مثلا الـ script اللاتينى ( اقصد بيه الحروف من a الى z ) ممكن بنفس الحروف دى اكتب كلام انجليزى و المانى و فرنساوى. هنا ححتاج ﻷنى اعمل اختبارات تانية على الجملة, زى مثلا انى ابحث عن حروف او كلمات مميزة فى الجملة , تكون مستخدمة فى اى من اللغات الى بتعتمد على حروف لاتينية. كذلك الحال مع الـ Arabic script , الحروف عربى, بس احتمال يكون اللغة المكتوب بيها الكلام إيرانى مثلا. فهى الفكرة كلها مبنية على احتمالات , فيصعب انك تطلع نتائج دقيقة 100% كذلك كلاس ArIdentifier لصاحبه خالد الشما الى حطه ASDen فى رده كمثال , بيميز الـ script العربى فقط و مدخلش لمرحلة تحديد اللغة.
  7. السلام عليكم اﻷولى كانت صح و حتطبع قيمة PHP_SELF , التانية مش حتطبع حاجة, هو عموما معتقدش ان المشكلة هنا ﻷن حتى إذا لم يكن هناك قيمة لـ action فى الفورم, سيتم ارسال البيانات لنفس الصفحة. فى php5 المتغير PHP_SELF ممكن تستبدله بـ $_SERVER['SCRIPT_NAME'] غالبا فى خطأ بس مش ظاهر بسبب اعدادت على السيرفر, ممكن تظهر كل اﻷخطاء اللى فى الصفحة بأنك تحط الكود دة فى اول الملف <?php //for debugging only error_reporting(E_ALL); ini_set('display_errors', 'on'); ?> حاول بعد كدة تخلى مواصفات السيرفر المحلى بتاعك و اعداداته مطابقة لسيرفر الموقع عشان لمة تعمل اختبار على حاجة يبقى احتمال انها تشتغل على كل منهم افضل إن شاء الله
  8. السلام عليكم, كان عندى شوية وقت فاضى فكتبت كلاس صغير, طبعا انا ملحقتش احط كل امكانيات grep فى الكلاس دة حاليا, هو دلوقتى كل الى بيعمله هو recursive search على المجلدات و الملفات الى انت بتحددهاله. ملحوظة: الكود دة php 5 , و حتلاقى الـ DirectoryIterator فى SPL . <?php /** * this small class searches for strings in files and dirs * <code> * $searcher = new SearchFile("/foo"); * var_dump($searcher->find('shreef'); * </code> * [email protected] Ahmed Shreef < http://shreef.com > * last update feb 26, 2008 21:45 GMT */ class SearchFile { /** * the search path * [email protected] String */ protected $path = null; /** * it's TRUE if the search path is directory * [email protected] Boolean */ protected $isDir = false; /** * it's TRUE if we are allowed to search directories recursively * [email protected] Boolean */ protected $isRecursive = false; /** * the needle to search for * [email protected] String */ protected $string = null; /** * the search results * [email protected] Array */ protected $result = null; /** * Construct * [email protected] String the search path [email protected] Boolean is recursive search in dirs */ public function __construct($path, $isRecursive = FALSE){ $this->setPath($path, $isRecursive); } /** * sets the main search path and checks if it's Directory or File * [email protected] String the search path [email protected] Boolean is recursive search in dirs [email protected] void */ public function setPath($path, $isRecursive = FALSE){ $this->result = null; if( is_dir($path) ) { $this->isDir = TRUE; }elseif( is_file($path) ) { $this->isDir = FALSE; }else{ throw Exception('path not found'); } $this->path = $path; $this->isRecursive = (bool)$isRecursive; } /** * starts the search for the passed string * [email protected] String the needle to search for [email protected] Array */ public function find($string){ $this->string = $string; if( $this->isDir ){ $this->searchDir($this->path); }else{ $this->searchFile($this->path); } return $this->result; } /** * reads file to search for the needle * [email protected] String the path of the file [email protected] void */ protected function searchFile($path) { $lines = file($path); foreach($lines as $lnum=> $line) { if ( stristr($line, $this->string) ){ $this->addResult($path, $lnum); } } } /** * opens directory to list the files * [email protected] String the path of the directory [email protected] void */ protected function searchDir($path) { $dir = new DirectoryIterator($path); foreach ($dir as $file) { if( !$file->isDot() ){ if( !$file->isDir() ){ $this->searchFile( $file->getPathname() ); }elseif( $this->isRecursive ){ $this->searchDir( $file->getPathname() ); } } } } /** * adds a new record to the results var * [email protected] String the path of the file [email protected] int the line number [email protected] void */ protected function addResult($path, $lineNum) { $this->result[$path][] = $lineNum; } } مثال استخدام $searcher = new SearchFile('/media/hda2/server/c/lexical analyzer', true); var_dump($searcher->find('void'));
  9. php دوت نت

    السلام عليكم, @theblacklily2006 طبعا أكيد إن شاء الله, phalanger موجودة بقالها اكتر من سنة و هى تطبيق للغة php على دوت نت, اللى بعض الناس بتتوقعه هو ان اى لغة على منصة الدوت نت يبقى لازم اخر اسمها "net." ودة مش صحيح , فى لغات اخرى ليها تطبيق منها على دوت نت زى لغة Python اللى تطبيقها على منصة الدوت نت اسمه IronPython و كذلك لغة Ruby اللى تطبيقها على الدوت نت اسمه IronRuby . كان فى نقاش على IRC من سنة تقريبا عن phalanger و دة الـ log بتاعه , ممكن تقراه و حتعرف الأختلافات بينها و بين لغة php العادية , انا كنت كاتب ملخص للنقاش دة على البلوج . لاحظ ان المناقشة كانت من سنة تقريبا فكان الكلام على phalanger 1.0 و لحظة كتابتى للكلام دة فى نسخة phalanger 2.0 beta 3 دة فيديوا من channel9 مع مطورى phalanger .
  10. php دوت نت

    السلام عليكم لغة PHP على منصة دوت نت اسمها phalanger , و رد الأخ StrikerX فيه موضوع كتبه كمقدمة سريعة عن الموضوع دة, حتحتاج يبقى عندك خلفية عن اساسيات كيفية عمل الدوت نت عشان توصلك المعلومات بسهولة و يسر .
  11. @علاء السرعة الـ 2 ميجا موجودة من سنيين فى مصر ----- السعر الجديد للـ 256 (عدد ساعات استخدام 60 ساعة/شهر) او (2 جيجا/شهر) بتكلفة 45 جنيه إذا عملنا مقارنة بين السعر الحالى و السعر الجديد حنلاقى : فى السعر الحالى (95/شهر) :- عدد ساعات الأستخدام المسموحة : (24 * 30) = 720 ساعة سعر الساعة : 0.13 جنيه فى السعر الجديد(45/شهر) :- عدد ساعات الأستخدام المسموحة: 60 ساعة سعر الساعة : 0.75 جنيه كدة سعر الساعة ارتفع مش انخفض زى مبيقولوا, و المشترك حيدفع سعر الساعة 6 مرات اكتر من السعر الحالى. و عشان تاخد نفس مستوى الخدمة الحالى , حتطر تدفع 540 جنيه/شهر. ------ اعتقد ان دى سياسة, وزارة الأتصالات بترمى الكرة فى ملعب المستخدم , عايزين يخلوا الناس تحسبها من تانى , و حيلاقوا ان سعر سرعة 512 حيبقى ارخص كتيير (متوقع انخفاض اسعار 512 و 1 ميجا بما انهم فتحوا اسعارها للمنافسة بين الشركات) , فعدد كبير من المستخدمين حيشترك فى السرعة الأعلى بكامل ارادته , بعد فترة عدد مستخدمين 256 حيبقى قليل جدا, ساعتها حتتلغى سرعة 256 و يتفتح الباب ان تدخل سرعة اعلى من الـ 2 ميجا فى مصر (اعتقد 3 ميجا). ملحوظة: وزير الأتصالات قال ان الناس الى شغالة حاليا بسرعة 256 , حيفضلوا زى مهما و مش حيتعاملوا بنظام الـ 45 جنيه, الا إذا : 1- المشترك قرر ينقل لنظام 45/شهر بأرادته. 2- العقد الى عامله مع الشركة ينتهى. معتقدش ان حد حيعمل الأختيار الأول, لكن الأختيار التانى بيدل على ان عقود الأشتراك ليها تاريخ انتهاء, ساعتها الشركة مش حترضى تجدد العقد على نفس النظام و حيبقى اختيار المشترك الأفضل هو انه يشترك فى سرعة اعلى. كل الطرق تؤدى الى روما.
  12. السلام عليكم, انا عضو فى فريق الـ i18n او (Internationalization) فى Zend Framework , فهى دى اللى كنت مركز معاها و مكنش فى وقت انى اتابع مع بقية الـ components . الأصدار الحالى ( 1 ) بيحتوى على الـ i18n components التالية : Zend_Date Zend_Locale Zend_Measure Zend_Translate اعتقد انهم الأفضل حاليا وسط نظرائهم فى php . ZF بشكل عام تتميز - بالسرعة - انها مبنية كـ components منفصلة عن بعضها, فأنت ممكن تستخدم الى انت محتاجه فقط بدون البقية - تم اختبارها جيدا , حتلاقى اكواد الـ testing اكتر من اكواد الـ framework نفسها بكتير. - بعض الـ components او بالتحديد الخاصة بالـ web services كتبها ناس من الشركات الى بتقدم الـ web services دى نفسها , مثل ياهو و جوجل و امازون. - Zend_Search_Lucene الى بيديلك امكانية انك تعمل محرك بحث حقيقى لموقعك (lucene معروف لمبرمجى جافا). بالأضافة لأن الـ PHP IDE المعتمد على eclipse حيكون فيه دعم لـ ZF . فى frameworks تانية مميزة و انصح تلقى نظرة عليهم : Symfony Code Igniter : تتميز بـحجمها الصغير و البساطة . Cake PHP : مميزة للـ RAD او Rapid Application Development .
  13. press 2 key consecutivly function

    السلام عليكم, انا جربت اعمل حاجة كدة على FF و اشتغلت الحمد لله كالمتوقع بس انت جربها على IE, المتوقع حيبقى فى تعديل صغير فى جزئية الـ event . <html> <script> window.onload = function () { var noDot = document.getElementById("noDot"); noDot.onkeydown = function(event) { if(event.keyCode == 110) return false; } } </script> <body> <textarea id="noDot"></textarea> <textarea id="normal"></textarea> </body> </html> دلوقتى متقدرش تكتب "." داخل الـ textarea المسمى noDot , فى حين انك ممكن تكتبها عادى فى الـ textarea المسمى normal. إذا كنت عايز تمنع كتابة الحرف "." فى الصفحة كلها , يبقى غير مكان الـ onkeydown event و خليه ينتمى لـ window. window.onkeydown = function(event) { if(event.keyCode == 110) return false; } ---- ملحوظة: يفضل كتابة اﻷسئلة الجديدة فى موضوع منفصل لتسهيل الوصول اليها من قبل اﻷعضاء عند قيامهم بالبحث فى المنتدى :) شاكرين تعاونكم
  14. السلام عليكم, انا قرات اول لنك حطه اﻷخ ميشيل, اعتقد انت ممكن تعمل اللى انت عايزه من خلال تعديل صغير فى الكود. فى المثال كان بيعمل copy لمحتويات element فى الصفحة اسمه copytext , انت ممكن تغير الـ element دة و تخليه يعمل نسخ لمحتويات tags الـ HTML او الـ body . الكود فى المثال باين انه بيشتغل على IE فقط , و انا حاليا مش متوافر جهاز عليه ويندوز بالقرب منى عشان اجرب, فعلى FF ممكن توصل ﻷول element فى الصفحة من خلال document.childNodes[0] مش فاكر إذا كان IE بيعترض على حاجة زى دى ولا لا.
  15. press 2 key consecutivly function

    السلام عليكم, اعتقد ممكن : - تسجل وقت كل click على الزر "." فى array - تقارن وقت الـ click الجديدة مع السابقة لها - إذا كان الفرق بينهم فى حدود ثانية واحدة او ثانيتين او صفر ثانية --> يبقى المستخدم ضغط مرتين متتتاليتين فى وقت قصير --> نفذ الى عايز تعمله كرد للحدث دة --> قم بأفراغ محتوى الـ array - إذا كان الفرق بينهم اكبر من المسموح --> قم بتفريغ الـ array من القيم السابقة --> اضف وقت الضغطة الجديدة فى الـ array انا فضلت هنا استخدم array بسبب انها مرنة اكتر من استخدام متغير عادى يحفظ قيمة واحدة, لأن ممكن بعد كدة تحتاج تطبق حاجة تحتاج 3 ضغطات مثلا.