اذهب إلى المحتوى

E.Nourddine

الأعضاء
  • المساهمات

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

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    18

كل منشورات العضو E.Nourddine

  1. رابط 'إعادة تعيين كلمة السر' لا يظهر للوهلة الأولي على الموقع، حيث يتم إظهاره عند إدخال إحدى القيمتين بشكل غير صحيح، وأتحدث هنا عن اسم المستخدم -أو بريده الإلكتروني- أو كلمة السر أو هما معا. وفيما يخص سؤالك المتعلق بتغيير الرابط إلى أيقونة، الجواب هو لا طبعاً، وقد أُعتمِدَ الرابط على شكل نص لإظهار الخاصية بشكل واضح لا يدعو للريبة، وأيضا لعدم توفر أيقونة مُشتركة تمّ الاتفاق عليها بين مختلف المتخصصين في هذا المجال، لذا ولتفادي أي شكل من أشكال عدم الوضوح في مهام الأيقونات سواء على المواقع أو التطبيقات، من الجيد الاحتفاظ والسير على المنوال المُعتمد.
  2. في مثل هذه الحالات ومن وجهة نظر تجربة المُستخدم، يُنصح بإضافة عنوان يجمع ما بين الجزأين المُشتركين بين الحقلين، على أن يتم تخصيص كل منهما بكلمة تفصله عن الآخر، بهذا الشكل: والغرض من ذلك، تفادي تكرار الكلمات التي من الممكن دمجها وضمّها في عنصر واحد، لأنه وكما تعلم تكرار الكلمات والمصطلحات سواء على واجهات المواقع أو تطبيقات الهواتف الذكية من شأنه أن يُشعر المستخدم بشيء من الرتابة، وذلك غير مُحبذ.
  3. حتى نكون على توافق في المفاهيم، فـ Tremming يَصلح فقط لإزالة الفراغات أول وآخر المتغيّر أو القطعة النصيّة، ولفعل ذلك سنستعين بدالة ()strip. والتي نستخدمها بالشكل التالي: >>> ' Hello '.strip() 'Hello' >>> ' Hello'.strip() 'Hello' >>> 'Bob has a cat'.strip() 'Bob has a cat' >>> ' Hello '.strip() # في هذه الحالة سيتم إزالةجميع الفراغات 'Hello'في حال كنت تريد إزالة فراغ واحد فقط يمكنك فعل ذلك من خلال إنشاء وظيفة تقوم بالأمر، كما هو مبين في الكود التالي: def strip_one_space(s): if s.endswith(" "): s = s[:-1] if s.startswith(" "): s = s[1:] return s >>> strip_one_space(" Hello ") ' Hello'
  4. يمكنك الحصول على نص يُولد بشكل عشوائي عن طريق دمج دالتي توليد، الأولى لتوليد الأرقام والثانية للحروف وكلاهما ستولد القيم بشكل عشوائي، حيت يمكن كتابة الكود في سطر واحد: ''.join(random.SystemRandom().choice(string.ascii_uppercase + string.digits) for _ in range(N)) كما يمكن التوسّع أكثر وتخصيص سكربت للأمر، وذلك عن طريق تحديد عدد الأرقام والأحرف المُكوّنة للجملة المُحصل عليها، عن طريق تخصيص دالة لذلك، لتأخذ عدد القيم المُراد الحصول عليها: >>> import random >>> def id_generator(size=6, chars=string.ascii_uppercase + string.digits): ... return ''.join(random.choice(chars) for _ in range(size)) ... >>> id_generator() 'G5G74W' >>> id_generator(3, "6793YUIO") 'Y3U'Generate pseudo-random numbers
  5. يمكنك استعمال مكتبة glob والتي يتمحور دورها في البحث عن كلمة معينة - نعتبرها هنا امتداد الملف- في مسارات محددة تأخذها كقيم، ونستعملها بالطريقة التالية: import glob, os os.chdir("/mydir") for file in glob.glob("*.txt"): print(file)أو يمكنك استعمال مكتبة os.listdir ونستعملها بالشكل التالي: import os for file in os.listdir("/mydir"): if file.endswith(".txt"): print(file)أو مكتبة os.walk : import os for root, dirs, files in os.walk("/mydir"): for file in files: if file.endswith(".txt"): print(os.path.join(root, file))لاحظ أن جميع المكتبات المُستعملة في الأمثلة تأخذ المسار والقيمة المبحوث عنها، لتتم طباعة ما تم العثور عليه.
  6. Python من اللغات التي تهتم دائما بتسهيل الأمور على المُبرمج، حيث يمكن دمج مصفوفتين في مصفوفة ثالثة فقط عن جمع المصفوفتين بعلامة زائد '+'، بهذا الشكل البسيط : mergedlist = listone + listtwo كما يمكن استعمال الدالة numpy.concatenate التي لها نفس مهمة علامة الزائد، والتي تستخدم بالشكل التالي: لدينا المصفوفتين: a = np.array([[1,5,9],[2,6,10]]) b = np.array([[3,7,11],[4,8,12]])بعد دمجهما وطباعة المحتوى المحصّل عليه: print concatenate((a,b),axis=0) array([[ 1, 5, 9], [ 2, 6, 10], [ 3, 7, 11], [ 4, 8, 12]])
  7. توفّر Microsoft مكتبة System.io والتي تهتم بكل ما يتعلق بالنظام، وتمكن من نقل الملفات، ويمكننا عبر الاستعانة بها من خلال استخدام System.IO.File.Move بهذا الشكل الحصول على مانريد: System.IO.File.Move("oldfilename", "newfilename");حيث oldfilename هو الاسم الحالي للملف والذي نريد تغييره، وغالبا ما يحمل مسار الملف، أي مكان وجود الملف لأصلي.وnewfilename هو مسار الملف الجديد، مع تغيير الاسم.ملاحظة مهمة: خاصية Move تستعمل لغرضين أساسيين: نقل الملف من مكان إلى آخر أو تغيير اسمه، وذلك أن الوظيفة الثانية هي ضمينة في الأولى، لأن عملية تغير الاسم ماهي إلا تحريكه من مكانه الأصلي إلى نفس المكان فقط مع تغيير الاسم الأول إلى اسم جديد.
  8. على لغة Python توجد دالة hasattr والتي من شأنها التأكد من توفّر كائن على خاصية ما، أي هل تمّ تعريف الخاصية عند إنشاء الكلاس الأم ، وفي ما يلي شرح وإعطاء بعض الأمثلة لكيفية استخدامها: غالبا ما تستخدم هذه الدالة مع دالة التأكد if والتي يكون ناتجها من نوع boolean أي True أو False.if hasattr(a, 'property'): a.propertyفي المثال التالي، يتم إنشاء كائن من كلاس معينة ثم التأكد من وجود الخاصية بهذا الكائن، مع إبراز لقيمة boolean المحصّل عليها: >>> class A(object): ... foo = 1 ... >>> class B(A): ... pass ... >>> b = B() >>> hasattr(b, 'foo') True >>> 'foo' in b.__dict__ False
  9. نعم من الممكن تصميم صور متحركة تُعرف بالامتداد gif من خلال برنامج التصميم Photoshop، فقط قم باتباع الخطوات التالية: إجلب الصورة المُراد تطبيق عليها عملية التحريك إلى البرنامج.من خلال القائمة File>Window>Timeline وبعد الضغط عليها ستضاف نافدة الخط الزمني الذي سيمكنك من إدراج مختلف لقطات الحركة. عين خاصية create frame animation من خلال القائمة المُنسدلة المُوضحة في الصورة. يمكنك تعيين المدّة الفاصلة بين كل حركتين متتابعتين: في الأخير و بعد النهاية من إضافة جميع الصورة المكوِّنة لـ animation، ومن خلال القائمة file >save as يمكنك تصدير المشروع إلى صورة gif: الفيديو التالي يشرح جميع الخطوات التي تم ذكرها بالتفصيل:
  10. يُعتبر برنامج Sony Vegas من البرامج الاحترافية في إنشاء الفيديوهات المُحترفة وعالية الجودة، ولن أبالغ إن قلت أن بعض القنوات الوثائقية تستعمله كأداة أساسية في إعداد مادتها المعروضة، وهو منافس لـ Adobe Premier وَ Avid. البرنامج به مميزات عالية وإمكانات ليست بالسهلة، فقط كل ما ينقص هو التمكّن منه واحتراف التعامل معه، وهذا لا يتأتى بين ليلة وضحاها، بل بالعمل الجاد والدؤوب على البرنامج، وشخصيا أعرف محترفين في مجال المونتاج يشتغلون على Vegas وتكون ثمرة عملهم في قمة الروعة، مما يدل على أن البرنامج جد قوي ومتطور إلى درجة جعلت منه منافساً لكبرى الشركات الرائدة في هذا المجال. Sony Vegas Pro 10: Advanced Video Editor Adds 3DSONY VEGAS PRO 11 ADVANCED EDITING SOFTWARE REVIEW
  11. نعم يمكنك فعل ذلك، وذلك باتباع الخطوات التالية: انقل الصورة إلى خط الزمن -timeline- مع تحديد خاصية alpha في خصائص الصورة.اضغط على زر 'Track Motion' من خلال رأس Track.حدد النمط 3D Source Alpha.استعمل KeyFrames لإنشاء التحريك 'animation'.
  12. هذه الدالة بإمكانها إعادة رابط القالب الحالي المستعمل على نظام ووردبريس: get_bloginfo('template_directory'); في المقابل يمكن استخدام دالة bloginfo والتي تتيح عرض مسار القالب على المتصفح، وتستعمل بهذا الشكل: bloginfo('template_directory'); فيما يتعلق باستعمال رابط القالب من أجل الوصول إلى مسار ملف الصور المخزنة على النظام، يمكن الاستفادة من الدالة السابقة، وذلك بإدراجها في وسم <img> وإعطائها للخاصية src، لنتمكن في آخر المطاف من الوصول إلى المجلد 'images' بهذه الطريقة: <img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" /> لاحظ جيداً أنه تم الاستعانة بقطعة نصية 'image/headerimage.jpg/' لتكملة المسار الصحيح للصورة، وهذا يبرز جليا مرونة نطام ووردبريس وسهولة استعمال دواله بشكل مريح.
  13. ()is_front_page : تُعيد القيمة True إذا كان المستخدم يتصفح صفحة (page) أو صفحة عرض المنشورات، حيث يُمكننا تعيين خاصية front_page لصفحة ما من خلال لوحة التحكم أي من خلال: Settings->Reading->Front page displays بطريقة أخرى أن صفحة about us سترجع لنا القيمة true في حال كانت تتوفر على هذه الخاصية. ()is_home : تُعيد القيمة True في صفحة عرض المنشورات الأخيرة، كحالة عرض أخر المنشورات العشر. ويمكن أيضا تعيين خاصية is_home من نفس مكان الإعدادات المذكورة في خاصية is_front_page. من الأمثلة المستعملة لصفحات is_home: عرض آخر الأخبار (المنشورات) في صفحة باسم News.عرض المستخدمين الأكثر تفاعلا على الموقع active_users.
  14. للمعلومية فقط ووردبريس لا تُلزم أي أحد بكتابة الكود بهذه الطريقة، بل على العكس من ذلك فالمبرمج حر في طريقة كتابته للكود بالطريقة التي يراها مناسبة وسهلة، بل إن هذه الطريقة تعتبر غير احترافية بالنسبة للمطورين المحترفين، لكن يُعزى سبب الكتابة بها لتسهيل فهم الكود بالنسبة للمبتدئين، حيث يُقصد تقريبه من نمط كتابة أكواد html كي لا يُربك بكثرة الدوال الخاصة على هذا النظام. ومن بين السلبيات التي تُلاحظ على هذا النوع من الكود، أسلوب التعليقات التي تحتّم كتابة التعليق الخاص بكل سطر: <?php echo 'Important: '; // announcement ?> <?php echo ' enter the word '; /* start ?> <?php echo '<b>password</b>'; /* the end */ ?>كما سبقت الإشارة، هذا فقط أسلوب لتسهيل فهم الأكواد والتمرن عليها في بادئ الأمر، ولن نجد مثله عند المحترفين على ووردبريس، خصوصاً عند كتابة دوال ووظائف ذات أكواد كثيرة.
  15. يمكننا استعمال الموقع explainshell.com: ?$echo ls >> $File 2>&1خلاصة الأمر : echo: تستعمل لإظهار سطر نصي.ls : إظهار محتوى مسار بشكل يتيح للمستخدم رؤية جميع الملفات الموجودة داخله.
  16. يمكنك فعل ذلك من خلال نسخ ملف page.php الموجود على قالب الموقع وإعادة تسميته مثلاً user-profile.php، ثم أضف إليه الكود التالي أعلى الملف: <?php /** * Template Name: User Profile * * Allow users to update their profiles from Frontend. * */ /* Get user info. */ global $current_user, $wp_roles; //get_currentuserinfo(); //deprecated since 3.1 /* Load the registration file. */ //require_once( ABSPATH . WPINC . '/registration.php' ); //deprecated since 3.1 $error = array(); /* If profile was saved, update profile. */ if ( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && $_POST['action'] == 'update-user' ) { /* Update user password. */ if ( !empty($_POST['pass1'] ) && !empty( $_POST['pass2'] ) ) { if ( $_POST['pass1'] == $_POST['pass2'] ) wp_update_user( array( 'ID' => $current_user->ID, 'user_pass' => esc_attr( $_POST['pass1'] ) ) ); else $error[] = __('The passwords you entered do not match. Your password was not updated.', 'profile'); } /* Update user information. */ if ( !empty( $_POST['url'] ) ) wp_update_user( array( 'ID' => $current_user->ID, 'user_url' => esc_url( $_POST['url'] ) ) ); if ( !empty( $_POST['email'] ) ){ if (!is_email(esc_attr( $_POST['email'] ))) $error[] = __('The Email you entered is not valid. please try again.', 'profile'); elseif(email_exists(esc_attr( $_POST['email'] )) != $current_user->id ) $error[] = __('This email is already used by another user. try a different one.', 'profile'); else{ wp_update_user( array ('ID' => $current_user->ID, 'user_email' => esc_attr( $_POST['email'] ))); } } if ( !empty( $_POST['first-name'] ) ) update_user_meta( $current_user->ID, 'first_name', esc_attr( $_POST['first-name'] ) ); if ( !empty( $_POST['last-name'] ) ) update_user_meta($current_user->ID, 'last_name', esc_attr( $_POST['last-name'] ) ); if ( !empty( $_POST['description'] ) ) update_user_meta( $current_user->ID, 'description', esc_attr( $_POST['description'] ) ); /* Redirect so the page will show updated info.*/ /*I am not Author of this Code- i dont know why but it worked for me after changing below line to if ( count($error) == 0 ){ */ if ( count($error) == 0 ) { //action hook for plugins and extra fields saving do_action('edit_user_profile_update', $current_user->ID); wp_redirect( get_permalink() ); exit; } } ?>ثم غيّر حلقة التكرار loop المنسوخة من ملف page.php بهذه الجديدة: وذلك من أجل جلب البيانات المتعلقة بالمستخدمين وكل ما له علاقة بهم . <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <div id="post-<?php the_ID(); ?>"> <div class="entry-content entry"> <?php the_content(); ?> <?php if ( !is_user_logged_in() ) : ?> <p class="warning"> <?php _e('You must be logged in to edit your profile.', 'profile'); ?> </p><!-- .warning --> <?php else : ?> <?php if ( count($error) > 0 ) echo '<p class="error">' . implode("<br />", $error) . '</p>'; ?> <form method="post" id="adduser" action="<?php the_permalink(); ?>"> <p class="form-username"> <label for="first-name"><?php _e('First Name', 'profile'); ?></label> <input class="text-input" name="first-name" type="text" id="first-name" value="<?php the_author_meta( 'first_name', $current_user->ID ); ?>" /> </p><!-- .form-username --> <p class="form-username"> <label for="last-name"><?php _e('Last Name', 'profile'); ?></label> <input class="text-input" name="last-name" type="text" id="last-name" value="<?php the_author_meta( 'last_name', $current_user->ID ); ?>" /> </p><!-- .form-username --> <p class="form-email"> <label for="email"><?php _e('E-mail *', 'profile'); ?></label> <input class="text-input" name="email" type="text" id="email" value="<?php the_author_meta( 'user_email', $current_user->ID ); ?>" /> </p><!-- .form-email --> <p class="form-url"> <label for="url"><?php _e('Website', 'profile'); ?></label> <input class="text-input" name="url" type="text" id="url" value="<?php the_author_meta( 'user_url', $current_user->ID ); ?>" /> </p><!-- .form-url --> <p class="form-password"> <label for="pass1"><?php _e('Password *', 'profile'); ?> </label> <input class="text-input" name="pass1" type="password" id="pass1" /> </p><!-- .form-password --> <p class="form-password"> <label for="pass2"><?php _e('Repeat Password *', 'profile'); ?></label> <input class="text-input" name="pass2" type="password" id="pass2" /> </p><!-- .form-password --> <p class="form-textarea"> <label for="description"><?php _e('Biographical Information', 'profile') ?></label> <textarea name="description" id="description" rows="3" cols="50"><?php the_author_meta( 'description', $current_user->ID ); ?></textarea> </p><!-- .form-textarea --> <?php //action hook for plugin and extra fields do_action('edit_user_profile',$current_user); ?> <p class="form-submit"> <?php echo $referer; ?> <input name="updateuser" type="submit" id="updateuser" class="submit button" value="<?php _e('Update', 'profile'); ?>" /> <?php wp_nonce_field( 'update-user' ) ?> <input name="action" type="hidden" id="action" value="update-user" /> </p><!-- .form-submit --> </form><!-- #adduser --> <?php endif; ?> </div><!-- .entry-content --> </div><!-- .hentry .post --> <?php endwhile; ?> <?php else: ?> <p class="no-data"> <?php _e('Sorry, no page matched your criteria.', 'profile'); ?> </p><!-- .no-data --> <?php endif; ?>يمكنك التوسع أكثر في الأمر من خلال الروابط التالية: Theme My LoginFrontend Edit ProfileWP User Frontend
  17. من خلال ملف config/main.php : // application components 'components'=>array( // ... 'clientScript'=>array( 'packages'=>array( 'jquery'=>array( 'baseUrl'=>'//ajax.googleapis.com/ajax/libs/jquery/1/', 'js'=>array('jquery.min.js'), ) ), ), // ... ),كما يمكنك إضافته في ملف المتحكم: <?php $baseUrl = Yii::app()->baseUrl; $cs = Yii::app()->getClientScript(); $cs->registerScriptFile($baseUrl.'/js/yourscript.js'); $cs->registerCssFile($baseUrl.'/css/yourcss.css'); ?>وهذا مثال لإدراج ملفات javascript في جميع action على إطار العمل: public function beforeAction($action) { if( parent::beforeAction($action) ) { /* @var $cs CClientScript */ $cs = Yii::app()->clientScript; /* @var $theme CTheme */ $theme = Yii::app()->theme; $cs->registerPackage('jquery'); $cs->registerPackage('history'); $cs->registerScriptFile( $theme->getBaseUrl() . '/js/highlight.js' ); $cs->registerScriptFile( $theme->getBaseUrl() . '/js/jquery.ba-dotimeout.min.js' ); $cs->registerScriptFile( $theme->getBaseUrl() . '/js/jquery.scrollTo-1.4.3.1-min.js' ); //$cs->registerScriptFile( $theme->getBaseUrl() . '/js/jquery.scrollTo-min.js' ); $cs->registerScriptFile( $theme->getBaseUrl() . '/js/script.js' ); $cs->registerCssFile($theme->getBaseUrl() . '/css/reset.css'); $cs->registerCssFile($theme->getBaseUrl() . '/css/main.css'); return true; } return false; }
  18. بالنسبة لملفات pdf، وأقصد هنا الملفات التي تم إنشاءها على أحد البرامج المخصصة لذلك- مثل Indesign -، وليس صور ممسوحة بواسطة الماسح الضوئي، أي أنها ليست صور ضوئية، لأنها في هذا الحالة الأخيرة لا يمكن التعرف على نوع الخط بشكل أو بآخر، بينما في حالة ملف pdf، يمكن الوصول إلى نوع الخط المستعمَل في الملف من خلال قائمة برنامج Adobe Reader: File menu > Properties > Fonts لتظهر بعد ذلك لائحة بأنواع الخطوط المُستعملة في الملف. يمكنك أيضا جلب نوع الخط المستعمل في قطعة نصية معينة، وهذه الخاصية لا تتوفر على نسخ Adobe Reader المجانية فقط - Adobe Acrobat X Pro -، حيث بعد القيام بتحديد النص والضغط عليه بزر الفأرة الأيمن ستظهر لائحة اختيارات حدد Properties اختر الجزء الخاص بـ Text ليُظهر لك كل خصائص النص المُحَدد ومن بينها نوع الخط المُستعمل.
  19. غالبا في الوظائف وبشكل عام - ليس في التصميم فقط-، يختلف سعر المستقل من شخص لآخر، حسب الخبرة والاحترافية التي يتسم بها المستقل، وبما أنك بصدد العمل على وظيفة ستأخذ منك يومين من العمل، أقترح عليك تحديد سعر الساعة الواحدة لديك - ولنقل 10دولار للساعة، على اعتبار أنك ذو مستوى متوسط تتقن وظيفتك بشكل جيد-، سيبقى عليك تقدير عدد ساعات العمل التي سيأخذها منك العمل - الوظيفة- ليكون سعر الوظيفة كامل هو خارج ضرب سعر الساعة في عدد ساعات العمل على الوظيفة. وقد تحتاج إلى إضافة بعض الساعات كاحتياط، حيث من الممكن أن تحتاج إليها للقيام ببعض التعديلات المطلوبة من العميل، أو قد تحتاجها في حين استعصت عليك بعض الأمور التي قد تحتاج إلى البحث عنها مما سيأخذ منك بعض الوقت . عامة:سعر الوظيفة = سعر الساعة الواحدة * عدد ساعات العمل.
  20. التصميم المُتجاوب هو تجاوب التصميم مع مقاسات الشاشة العارضة للتصميم، مما يسمح للتصميم بالتأقلم مع الشاشة العَارضة له، ولا دخل لدقتها أو مميزاتها التقنية في هذه الحيثية، حيث نجد نفس التصميم في أنواع مختلفة من الهواتف الذكية -تختلف في معايير دقتها ..- ولها نفس المقاس -الطول*العرض-. ويعتمد المصممون في تصميماتهم المتجاوبة على إدراج أدق التفاصيل وخاصة في تصاميم الهواتف الذكية، حيث تتسم بضيق مساحة العرض، مما يُلزم المصمم إبراز أهم الخصائص في التصميم وإعطاءها الأولوية، عكس تصاميم الشاشات الكبيرة الموجودة على الحواسيب. كخلاصة: التصميم المُتجاوب يتعلق بالأساس بمقاسات شاشات العرض، وليس دقتها. المزيد
  21. استعمل : INSERT IGNORE INTO table والتي مهمتها إدخال القيم في الجدول بعد التأكد من عدم وجودها سلفاً، وفي حالة وجود قيم سابقة تُلغى عملية إدخال القيم الحالية ليتم الانتقال إلى القيم التالية. مثال: إنشاء الجدول:CREATE TABLE `transcripts` ( `ensembl_transcript_id` varchar(20) NOT NULL, `transcript_chrom_start` int(10) unsigned NOT NULL, `transcript_chrom_end` int(10) unsigned NOT NULL, PRIMARY KEY (`ensembl_transcript_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;استعمال Insert Ignore Into Table:INSERT IGNORE INTO `transcripts` SET `ensembl_transcript_id` = 'ENSORGT00000000001', `transcript_chrom_start` = 12345, `transcript_chrom_end` = 12678;أيضا يمكن استعمال INSERT … ON DUPLICATE KEY UPDATE والتي من شأنها تغيير القيم في حالة تواجد قيمة شبيهة بها، وهذا مثال تطبيقي:INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1; UPDATE table SET c=c+1 WHERE a=1;في حال كانت قيم الحقول a,b,c هي 1,2,3 موجودة مسبقا في الجدول، سيتم تغييرها بإضافة 1 إلى قيمة الحقل c، وهذا ما تعنيه : ON DUPLICATE KEY UPDATE c=c+1;
  22. على لغة php وفيما يتعلق بالمصفوفات سنجد الدالة ()reset والتي تحرك المؤشر pointer إلى العنصر الأول من المصفوفة ، أي يمكن من خلالها إرجاع القيمة الأولى من المصفوفة، وتُرجع القيمة false في حال كانت المصفوفة فارغة. أي يمكن استعمال هذه الدالة بالشكل التالي: $arr = array( 4 => 'apple', 7 => 'orange', 13 => 'plum' ) echo reset($arr); //echoes "apple": ستظهر لنا القيمةكما يمكننا استخراج قيمة المفتاح key باستعمال الدالة Key: echo Key($arr); //4 قيمة المفتاح الأول في المصفوفة دالة reset
  23. في حال كنت تريد محاذاة عنوان الصفحة فقط إلى الجهة اليسرى عليك استعمال خاصية left داخل قالب titlepage, نستعمل Boadilla في innerthemeعلى titlepage بالشكل التالي: \setbeamertemplate{title page}[default][colsep=-4bp, rounded=true, shadow=\beamer@themerounded@shadow]وفي حالة أردنا استعمال عنوان فارغ للصفحة :{thispagestyle{empty/ ليكون كود وثيقتنا بالشكل: \documentclass{beamer} \usetheme{Boadilla} \title{\textbf{Please help me}} \subtitle{I want this lines to be left aligned} \author{Thank you} \institute{Very Much!} \makeatletter \setbeamertemplate{title page}[default][left,colsep=-4bp,rounded=true,shadow=\beamer@themerounded@shadow] \makeatother \begin{document} \begin{frame}[plain] % \thispagestyle{empty} \titlepage \end{frame} \end{document}وهذا مثال بسيط لما يمكن الحصول عليه:
  24. أولا من الجيد استعمال الصيغة bitmap للصور الصغيرة على برنامج Inkscape وذلك بغرض تصديرها إلى صيغة pdf التي تلاءم أكثر برنامج LaTex: من القائمة Path>Trace Bitmap : عملية التلوين، لتغيير لون الأيقونة: ثم تصدير الصورة بصيغة Pdf من خلال القائمة save as: في حالتنا سنحصل على أيقونة برنامج Skype: الآن يمكنك اضافة الأيقونة بالطريقة التالية: \makeatletter \newcommand*{\skypesocialsymbol}{\includegraphics[height=.7\baselineskip]{skype_gray}} \collectionadd[skype]{socials}{ SK} \makeatotherرأس الصفحة بعد اضافة العديد من الأيقونات سيكون بالشكل التالي: باضافة الكود التالي: \documentclass[11pt,a4paper,sans]{moderncv} % possible options include font size ('10pt', '11pt' and '12pt'), paper size ('a4paper', 'letterpaper', 'a5paper', 'legalpaper', 'executivepaper' and 'landscape') and font family ('sans' and 'roman') % moderncv themes \moderncvstyle{casual} % style options are 'casual' (default), 'classic', 'banking', 'oldstyle' and 'fancy' \moderncvcolor{blue} % color options 'black', 'blue' (default), 'burgundy', 'green', 'grey', 'orange', 'purple' and 'red' %\renewcommand{\familydefault}{\sfdefault} % to set the default font; use '\sfdefault' for the default sans serif font, '\rmdefault' for the default roman one, or any tex font name %\nopagenumbers{} % uncomment to suppress automatic page numbering for CVs longer than one page \makeatletter \newcommand*{\skypesocialsymbol}{\includegraphics[height=.7\baselineskip]{skype_gray}} \collectionadd[skype]{socials}{ SK} \makeatother ...
  25. تحدد المعطيات التالية كيف تعرّف ORM maps قيم حقول blank & null على Django1.8 class Test(models.Model): charNull = models.CharField(max_length=10, null=True)// موجود charBlank = models.CharField(max_length=10, blank=True)// موجود charNullBlank = models.CharField(max_length=10, null=True, blank=True) intNull = models.IntegerField(null=True) intBlank = models.IntegerField(blank=True) intNullBlank = models.IntegerField(null=True, blank=True) dateNull = models.DateTimeField(null=True) dateBlank = models.DateTimeField(blank=True) dateNullBlank = models.DateTimeField(null=True, blank=True) قواعد البيانات PostgreSQL 9.4: CREATE TABLE Test ( id serial NOT NULL, "charNull" character varying(10),//موجود "charBlank" character varying(10) NOT NULL,// غير موجود "charNullBlank" character varying(10), "intNull" integer, "intBlank" integer NOT NULL,// غير موجود "intNullBlank" integer, "dateNull" timestamp with time zone, "dateBlank" timestamp with time zone NOT NULL, "dateNullBlank" timestamp with time zone, CONSTRAINT Test_pkey PRIMARY KEY (id) )ثم MySQL 5.6: CREATE TABLE Test ( `id` INT(11) NOT NULL AUTO_INCREMENT, `charNull` VARCHAR(10) NULL DEFAULT NULL, `charBlank` VARCHAR(10) NOT NULL, `charNullBlank` VARCHAR(10) NULL DEFAULT NULL, `intNull` INT(11) NULL DEFAULT NULL, `intBlank` INT(11) NOT NULL, `intNullBlank` INT(11) NULL DEFAULT NULL, `dateNull` DATETIME NULL DEFAULT NULL, `dateBlank` DATETIME NOT NULL, `dateNullBlank` DATETIME NULL DEFAULT NULL )بعبارة أخرى شاملة، blanck غير موجود على قواعد البيانات، بخلاف يُسمح بنوع Null عليها. Django tips: the difference between ‘blank’ and ‘null’
×
×
  • أضف...