E.Nourddine
الأعضاء-
المساهمات
1458 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
18
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو E.Nourddine
-
في ملف التنسيق css أو ملف Jquery لكي تتمكن من تحديد عنصر معرّف عن طريق اسمه name يكفي استعمال: $('td[name=tcol1]')حيث أن td هو وسم الخانة، وتم تعيينها بتحديد الاسم الخاص بها، في هذه الحالة 'tcol1'. لتحديد صف معين عن طريق الاسم : مثال لصف به اسم: <tr name="tr1"> <td>data1</td> <td name="tcol1" class="bold"> data2</td> </tr>كود التنسيق لتحديد الصف: $('tr[name=tr1]')وهذه هي طريقة المتالية المتفق عليها: $("[attribute~='value']")مثال تطبيقي: <!DOCTYPE html> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script> $(document).ready(function(){ $("input[name~='nation']").css("background-color", "yellow");}); </script> </head> <body> <input name="nationality" type="text" value="Chinese"> <input name="nation" type="text" value="English"> <input name="country" type="text" value="Germany"> <input name="anothernation" type="text" value="Norwegian"> <p>'nation' في هذا المثال سيتم تحديد العنصرصاحب الاسم.</p> </body> </html>
-
أهمية المشروع بالنسبة للمستخدم لست أنت من يحددها، وإن كان بمميزات كبيرة وخصائص جيدة- من وِجهة نظركَ أنت - فقد لا تكون ذات أهمية للمستخدم، وعلى العكس من ذلك قد يراها هو شيء عادي ومتواجد على مواقع أخرى. لذا، فأول خطوة يقوم بها صاحب المشروع هي إصدار تجريبي للموقع، مع أخذ أراء المستخدمين، وأخذها بالاعتبار، بل والتغيير من الموقع بناء عليها - طبعا في حال كانت منطقية-، هذا مع التركيز دائما على تطوير الموقع- وجعله في مرتبة متقدمة وينافس كبار المواقع المشابهة. كما يبدو من خلال وضعك للسؤال، أنك لم تقم بحملة تسويقية للموقع، مما يجعله غير مرئي ولا معروف بالنسبة للكثير من المستخدمين المحتملين، فكما تعلم أنت في سوق كبير، وفقط من يملك القدرة على الإقناع من يبقى فيه، سواء عن طريق المواقع الاجتماعية،مواقع الإعلانات، قائمة البريد الإلكتروني...أعلن عن موقعك، أوصله للمستخدم بشتى الطرق، وهذا لن يتأتى مجاناً، عليك بخصيص نصيب من الاهتمام، المال والجهد لذلك. كيف-تدرس-السوق-من-خلال-استطلاعات-الرأيكيف-أختار-الحملة-الإعلانية-الأنسب-لمُنتجي-أو-لشركتي-النّاشئة؟
-
الملل والتقاعس من أكثر العادات السيئة التي من الممكن أن تصيب الإنسان، وخاصة في مجال العمل الحر حيث لا مدير يراقب عملك بشكل دائم، أيضا الجانب النفسي يلعب دوراً كبيراً في ذلك. في العديد من التدوينات الخاصة بهذه الإشكالية، ستجد الكثير من الناس يركزون على تدوين قائمة مهام والالتزام بها، وشخصيا أراها من الطرق الناجعة شريطة أن نلتزم بها، ويُعدّ عامل الالتزام هو أساس المشكلة، فالشعور بالملل يؤدي إلى التقاعس وعدم الالتزام بالمهام المسطّرة في القائمة سلفا، بالإضافة إلى الانهماك في العمل لساعات طويلة تشعر بعدها بالتعب، وهذا يؤدي لا شعوريا إلى ربط العمل بالتعب. من الأشياء التي أفعلها شخصيا لفعل ما يتوجب عليّ فعله من عمل منوط بي: إلغاء المُلهيات، من مواقع اجتماعية ورسائل.., لأنها بصراحة قد تأخذ يومكَ كله وأنت لا تدري، من صفحة لأخرى، ومن منشور لآخر... حتى إذا ما انقضى اليوم تجد نفسك دون فائدة تٌرجى، بخلاصة ركز على عملك. خصص فترات راحة ترتاح فيها بعد تأديتك لمدة من العمل، كساعة مثلا ارتح 5 أو 10 دقائق، لكي تعود بنفس جديدة للعمل. جدول قائمة للمهام المُبرمجة لهذا اليوم، على أن تحاول جاهداً الالتزام بها. كافئ نفسك بقطعة شكولاطة بعد انتهاء اليوم وبعد تأديتك لجميع المهام المبرمجة. في وقت الراحة، اقرأ في سير- جمع سيرة- الناجحين وخذ منهم بعض الأفكار المُلهمة. دعك من البحث الكثير عن أساليب وخلطات سحرية للعمل، فقط ركز جيداً فيما تفعله.
-
فقط عليك العمل بـ Hashtags و خاصية href على الوسم <a>، بهذا الشكل: <div class="icon-nav"> <a class="link" href="#first"><img src="img1.png" class="blue-icons"></a> <a class="link" href="#second"><img src="img2.png" class="blue-icons"></a> <a class="link" href="#third"><img src="img3.png" class="blue-icons"></a> <a class="link" href="#fourth"><img src="img4.png" class="blue-icons"></a> </div>بينما كود الجافا سكريبت على هذا الشكل، حيث يُظهر Tab عند الضغط عليه ويخفيه عند الضغط على Tab آخر: //تحديد جميع العناصرالمخفية var tabs = $('.textWord_tab').hide(); var buttons = $('.link'); function showTab(key) { // الظاهرtab تحديد var tabToShow = tabs.filter('[data-link=' + key + ']'); // tab التأكد من عدم ظهور if(tabToShow.is(':hidden')) { buttons.removeClass('selected') .filter('[href=#' + key + ']').addClass('selected'); tabs.hide(); tabToShow.stop().fadeIn({ width: '200px' }, 300); return true; } } //الأول tab إظهار if(!window.location.hash || !showTab(window.location.hash)) { showTab(buttons.filter(':first').attr('href').substr(1)); } buttons.click(function () { showTab($(this).attr('href').substr(1)); });يمكنك رؤية تغير hashtag مع قيمة data-link-value عند الضغط على tab .
-
أولاً أنصحك بعدم استخدام دالة ()query_posts في مثل هذه الحالة، وتعويضها بالدالة WP_Query، والصورة التالية توضح طريقة عملية WP_Query: لتكون جملة الاستعلام في حالتك على الشكل التالي: $the_query = new WP_Query( array( 'post_type' => 'Adverts', 'tax_query' => array( 'taxonomy' => 'advert_tag', 'field' => 'slug', 'terms' => 'politics', ), ) ); while ( $the_query->have_posts() ) : $the_query->the_post(); // إظهار المنشورات endwhile; /* Restore original Post Data * NB: Because we are using new WP_Query we aren't stomping on the * original $wp_query and it does not need to be reset. */ wp_reset_postdata();
-
للتوضيح، فأزرار -C -Copy-، X-ِCut-، V-Past تأتي مجاورة لبعضها البعض على لوحة المفاتيح، بالإضافة إلى قربها من زر Ctrl -أو Command على Mac-، مما يعني أن المستخدم لو قام بنسخ أي شيء عن طريق Ctrl+C وأراد لصقه، سيكون من الشاق عليه استعمال Ctrl+P في حين ان Ctrl+V أقرب إلى الزر C وزر Ctrl أيضا. صورة لوحة المفاتيح: من الناحية المنطقية تعتبر P أفضل من استعمال V، لكن Human–computer interaction أقرت باستعمال زر V نطراً لسهولة استعمالها بالنسبة للأصابع، وأيضا بهدف ربطها بمثيلاتها -X و C- المجاورة على لوحة المفاتيح.
-
استعمال نمط 16bit رهين بما تود القيام به في التصميم من حيث الألوان بالتحديد، ولاستعماله إيجابيات و سلبيات. من إيجابياته: في حالة كنت ستستعمل الكثير من الألوان والتعديل على الصور بشكل كبير من خلال تقنية photo manipulation، فهذا النمط يعتبر الأمثل لفعل ذلك، بخلاف 8bit.في حالة العمل على صورة تعتمد في مواردها على أكثر من 8bit من حيث الألوان، آنذاك يعتبر استعمال 16bit ذو إيجابية.السلبيات: عند العمل على 16bit لا تتوفر لك إمكانية العمل على جميع الفلاتر المتوفرة على Photoshop.أثناء العمل بـ 16bit تُستغلّ ضعف الذاكرة مما قد ينتج عنه بطء في الجهاز - حسب خصائص الجهاز وحجم المشروع المستعمل-.في الأخير يجب العلم أن وضوح الصورة عند استعمال نمط 16bit لن يتغير بشكل كبير، خاصة بالنسبة للعميل، لذا إذا لم يكن لك حاجة ملحة في استعمال 16bit فالأفضل استعمال النمط العادي -8bit- وتبقى أوجه الاختلاف هي التي تم ذكرها مسبقاً.
-
يمكنك النظر وقراءة الكود الموجود في ملف theme.php حيث نجد الدالة get_stylesheet_directory_uri معرّفة هناك، كما يمكنك أيضاً التأكد من تضمنها للدالة str_replace وهي تعتبر من دوال php، والتي كما هو معروف تتطلب مجموعة من البيانات والمعلومات التي تحتاج بدورها إلى تخصيص جزء من مردودية النظام - موارد نظام ووردبريس -عند طلبها كل مرة. ليكون الحل لتفادي هذا المشكل هو استدعاءها مرة واحدة فقط. مما سبق يظهر أن الاستدعاء المتكرر للدالة get_stylesheet_directory_uri يستلزم استدعاء str_replace والذي يستهلك الكثير من موارد النظام، بالمقارنة مع استدعاء ثابث، كما أن استعمال وتعويض الدالة بثابث يضيع الفلتر المطبق من خلال get_stylesheet_directory_uri في حالة تغييرها وكتابة كود خاص بك . Function Reference/get stylesheet directory uriWhen to use get_template_directory_uri
-
بما أن المستخدم يُدخل البيانات على شكل 3-3، لنجعل عملية التخزين تتم على أساس الأعمدة وليس الصفوف، أي على هذا الشكل : Scanner scan = new Scanner(System.in); int[] col1 = new int[3]; int[] col2 = new int[3]; int[] col3 = new int[3]; for (int i=0; i<3; i++){ //الترتيب بالإعتماد على الأعمدة لا الصفوف col1[i] = scan.nextInt(); col2[i] = scan.nextInt(); col3[i] = scan.nextInt(); } int[][] matrix = new int[3][3]; matrix[0] = col1; matrix[1] = col2; matrix[2] = col3; for (int i=0; i<3; i++){ // columnsترتيب الأعمدة Arrays.sort(matrix[i]); } //طباعة المحتوى بالإعتماد على الصفوف for (int i=0; i<3; i++){ for (int j=0; j<3; j++){ System.out.print(matrix[j][i]+" "); } System.out.println(); }بعد عملية الفرز اعتمادا على الأعمدة، يمكن تغيير المصفوفة إلى التخزين حسب الصفوف. كما يمكن للمستخدم تعيين حجم المصفوفة، أي بطريقة أخرى يكون حجم المصفوفة ديناميكي، ومُتَحكّم به من طرف المستخدم، بهذا الشكل: Scanner scan = new Scanner(System.in); int N = 3; //حجم المصفوف، والذي يتحكم فيه المستخدم int[][] matrix = new int[N][N]; for (int n=0; n<N; n++){ //بداية الأعمدة for (int column=0; column<N; column++){ matrix[column][n] = scan.nextInt(); //Store based on column } } for (int i=0; i<N; i++){ //ترتيب الأعمدة Arrays.sort(matrix[i]); } for (int i=0; i<N; i++){ for (int j=0; j<N; j++){ System.out.print(matrix[j][i]+" "); } System.out.println(); }
-
الأمر لا علاقة له باختلاف البرنامج في هذه الحالة، نعم تتحكم البرامج - تحرير النصوص والصور- من حيث الدقة، لكن بشكل عام اختلاف وضوح النص بين برنامج وآخر يتدخل فيه عامل مهم وهو عامل الدقة DPI. فعند العمل على ملف word يكون بدقة 300dpi محددة مسبقا في إعدادات البرنامج، مما يتيح للنص ظهورا واضحا ومتناسقا رغم تغيير نوع الخط المُستعمل. بالنسبة لبرنامج Gimp وبرامج التصميم كـ Photoshop، يتعيّن على المصمم التدخّل لتغيير إعدادات المشروع وإعطاءه دقة تساوي لـ 300dpi حتى يحصل على دقة واضحة أكثر. ولكي نتأكد من الأمر، أنشىء مشروع على Gimp بـ 2550px- 3300px مع دقة بقيمة 300dpi، وأضف نصاً لترى دقة الخط بشكل واضح: في حين عند كتابتنا لنص على مشروع بـ 400px و72dpi مع تكبير بـ%500 نحصل على الصورة:
-
المشكل في الكود المُدرج في سؤالك، هو كيفية دمج المتغيرين، وكتصحيح للخطأ إليك الطريقة الصحيحة: @url: "@{root}@{file}"; ليكون الكود كاملا بالطريقة التالية: @root: "../img/"; @file: "test.css"; @url: "@{root}@{file}"; .px{ background-image: url(@url); } مثال آخر للتوضيح أكثر: // Variables @my-selector: banner; // Usage .@{my-selector} { font-weight: bold; line-height: 40px; margin: 0 auto; }لينتج بعد عملية Compilation الكود التالي: .banner { font-weight: bold; line-height: 40px; margin: 0 auto; }Less Variable Interpolation
-
إليك الطريقة لتحصل على تصميم أشبه بالحقيقي وأقرب ما يمكن إلى الشكل المُدرج في الصورة من خلال سؤالك. من خلال الاختصار Alt+B بغرض الحصول على عرض للمشروع بهذه الطريقة: وللعلم فقط فالقطعة في الشكل ليس صلبة، فقط علينا إدخال القيم المبينة بشكل جيد، حتى نحصل على تأثير الإضاءة المبينة في الصورة: لنحصل على الشكل المشابه والمماثل إلى درجة كبيرة بالشكل الحقيقي لأداة Sonic screwdriver. يمكنك تحميل المشروع من خلال: doctorwholight_realistic.blend
-
بما أنك تريد دوران الخلفية على برنامج Blender، من قائمة البرنامج ومن خانة Node Editor اضغط على أيقونة الكرة الأرضية -Globe- المُعلّمة بالإطار الأحمر في الصورة: تأكد من تفعيلك للخاصية Use Nodes . من قائمة :add an Input > Texture Coordinate and a Vector > Mapping node لتظهر لك النافذة التالية: كما تلاحظ هناك قسم بـ Rotation مخصص لدوران الخلفية، وكما يظهر لك فالدوران يقبل ثلاث محاور x,yوz كمحاور للدوران.
-
من خلال الشرح الذي قدَّمته في سؤالك، سنستعمل تقنية SubQuery - جملة استعلام داخل جملة استعلام-، على الشكل التالي: select yourcolumn from yourtable where id=(select max(id) from yourtable ) حيث تحدد جملة الاستعلام الثاني أعلى قيمة لـ ID:select max(id) from yourtableوجملة الاستعلام الأساسية تحدد الحقل أو الحقول المُراد جلبها مع شرط أن يكون ID مساوي لأعلى قيمة - التي حصلنا عليها من خلال الجملة الثانية-:select yourcolumn from yourtable where id= مثال آخر: SELECT * FROM tutorial.sf_crime_incidents_2014_01 WHERE Date = (SELECT MIN(date) FROM tutorial.sf_crime_incidents_2014_01 )نجلب هنا جميع القيم بشرط أن يكون حقل date مساوِ لأصغر date موجود على الجدول. understanding sql subqueriesAdvanced subqueriessql sub queries
-
يتعيّن عليك استعمال الدالة String.Format والتي تُدمج مجموعة من القيم بالشكل الذي تختاره أنت، ثم تُعطي قيمتها إلى العمود الجديد الحاوي على قيم باقي الأعمدة، بهذا الشكل: DataColumn newColumn; newColumn = new DataColumn("col4"); //String.Formatدمج باقي قيم الأعمدة في عمود جديد باستخدام newColumn.Expression = string.Format("Col1\-{0};Col2\-{1};Col3\-{2}", col1, col2, col3); scaleResponseData.Columns.Add(newColumn);مع الملاحظ أنه تمت إضافة عمود جديد للجدول، بعد ملئه بقيم باقي الأعمدة. #String Format in C
-
حقيقة الأمر أن هناك خاصية Name واحدة و x:Name ماهو إلا تمثيل لـ XAML:Name، حيث يمثل الحرف x تعويضا لـ XAML على بيئة WPF، وجاءت التسمية بهذا الشكل، نظرا لأن الخصائص والقيم للحقول على هذه البيئة أصبحت تكتب بهذا الشكل، لذا دعنا نتمعن في الكود التالي: <TextBox x:Name="textBox"/> <Label Content="{Binding Text, ElementName=textBox}"/>نلاحظ وجود حقل نصي باسم "textBox" مع ملصق 'label'، كما أن اسم الحقل عُيّن بالخاصية x:Name . وتجدر الاشارة إلى أن استعمال x:Name نجده في الإصدارات الجديد من wpf حيث اقتصرت في الماضي على استعمال name، مما يؤكد أن البيئة ستركز وبشكل كبير على استعمال هذه الصيغة مستقبلا. وللعلم فإن تقنية wpf باستعمالها لـ XAML تتيح للمبرمج العمل بشكل محترف أكثر، فملفات XAML مشابهة إلى حد كبير لملفات xml والتي من خصائصها تراتبية الوسوم ومميزات أخرى كثيرة. https://msdn.microsoft.com/en-us/library/cc295302.aspx
-
يمكن استدعاء مكتبة System.Windows.Media التي تتيح لك الوصول إلى العديد من الإمكانيات من بينها استعمال صيغة اللون Hexadecimal، بهذه الطريقة: using System.Windows.Media; Color color = (Color)ColorConverter.ConvertFromString("#FFDFD991");وتوجد طريقة ثانية أيضا: string hex = "#FFFFFF"; Color _color = System.Drawing.ColorTranslator.FromHtml(hex);وهذه قائمة بالألوان مع أكوادها Hexadecimal وRGB: Name Hex Code RGB Code aliceblue #F0F8FF 240, 248, 255 antiquewhite #FAEBD7 250, 235, 215 aqua #00FFFF 0, 255, 255 aquamarine #7FFFD4 127, 255, 212 azure #F0FFFF 240, 255, 255 beige #F5F5DC 245, 245, 220 bisque #FFE4C4 255, 228, 196 black #000000 0, 0, 0 blue #0000FF 0, 0, 255 blueviolet #8A2BE2 138, 43, 226 brown #A52A2A 165, 42, 42 burlywood #DEB887 222, 184, 135 cadetblue #5F9EA0 95, 158, 160 chartreuse #7FFF00 127, 255, 0 chocolate #D2691E 210, 105, 30 coral #FF7F50 255, 127, 80 cornsilk #FFF8DC 255, 248, 220 crimson #DC143C 220, 20, 60 cyan #00FFFF 0, 255, 255 darkblue #00008B 0, 0, 139 darkcyan #008B8B 0, 139, 139 darkgoldenrod #B8860B 184, 134, 11 darkgray #A9A9A9 169, 169, 169 darkgreen #006400 0, 100, 0 darkkhaki #BDB76B 189, 183, 107 darkmagenta #8B008B 139, 0, 139 darkolivegreen #556B2F 85, 107, 47 باقي الألوان عبر هذا الرابط
-
لاستعمال بيئة restatable في بيئة جديدة، عليك القيام بذلك على الشكل: \NewEnviron{restat}{% \begin{restatable}{theorem}{A} \BODY \end{restatable}%حيث تمثل NewEnvirron\ بداية البيئة لتأتي تتمة المستند بالشكل العادي، فيكون كود المستند كامل بالشكل: \documentclass{article} \usepackage{amsmath,environ} \usepackage{thmtools,thm-restate} \NewEnviron{restat}{% \begin{restatable}{theorem}{A} \BODY \end{restatable}% } \begin{document} \begin{restat} something \end{restat} \end{document}ويمكن أيضا إنشاء Environment جديد عن طريق: \begin{proof}[Title of this proof] <the proof> \end{proof}Defining LATEX commands and environments
-
بالنسبة للمثال الأول لا أرجحه، لأن إظهار الجزء الاخير من اسم المقطع لا معنى لذلك. الصورة الثانية أي حالة أن الاسم يظهر كاملا مع نقط الحذف، هو مبدئيا جيد، لكن لدي بعض الملاحظات من شأنها أن تجعله أفضل: أزل نقط الحذف في آخر الاسم، لأننا لن نكون في حاجة إليها بعد الآن.أضف إلى اسم النص خاصية التحريك، حيث يوجد وسم على html يدعى بـ marquee، يمكن تطبيق نفس التأثر على اسم المقطع، بحيث يظهر متحركا من اليمين إلى اليسار مما يتيح للمستخدم قراءة الاسم كاملاً.هذه التغيرات كان الهدف منها التحسين من ظهور قارئ المقاطع الصوتية، وإعطاء المستخدم أقصى ما يمكن، ولأنه تطبيق موبايل سيكون بعض الشيء ضيق في مكان العرض، لكن القارئ عموما جيد.
-
بالنسبة للدوال -functions- على لغة php لا يمكن تعريف متغير ثم استعماله داخل الدالة، وهذا من أساسيات اللغة. لذا من السهولة تمرير قيم أثناء إنشاء الدالة أو مايصطلح عليه بـ parameters، حيث تلقبل الدالة هذه القيم أثناء استعمالها، بحيث تستعمل هذه القيم داخلها بالشكل الذي يعطي في آخر الأمر نتيجة . هذا مثال عن دالة مع parameters: <?php function add_some_extra(&$string) { $string .= ', et un peu plus.'; } $str = 'Ceci est une chaîne'; add_some_extra($str); echo $str; // 'Ceci est une chaîne, et un peu plus.' تُظهر <= ?>ولحل المشكل المتعلق بك على ووردبريس استعمل دالة معرفة بشكل مًجمل global بهذا الشكل : funtion get_global_array() { // 1, 2 , 3 ارجاع القيم return [1, 2, 3]; }عن طريق: get_global_array()يمكن استعمال الدالة في أي مكان من الصفحة.
-
الطريقة المثلى التي يتبعها محترفو ووردبريس، هي إنشاء مصفوفة وملئها بمعايير جملة الإستعلام التي نريد، ثم جلب البيانات حسب جملة الاستعلام المركبة بالشكل الذي نرغب به، هذا مثال على المصفوفة: $args = [ 'category_name' => get_queried_object()->post_name, 'order' => 'ASC',// لجعل الترتيب تصاعدي من أ إلى ي 'orderby' => 'title' // 'name'يمكنك استعمال // اضافة القيمة إلى المصفوفة ]; وهي واضحة كما تبين التعليقات المدمجة مع الكود، ليصبح الكود الإجمالي لجلب المنشورات مرتبة أبجديا، على الشكل: $args = [ 'category_name' => get_queried_object()->post_name, 'order' => 'ASC',// لجعل الترتيب تصاعدي من أ إلى ي 'orderby' => 'title' // 'name'يمكنك استعمال https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters // اضافة القيمة إلى المصفوفة ]; $q = new WP_Query( $args ); // loop حلقات if ( $q->have_posts() ) { while ( $q->have_posts() ) { $q->the_post(); // title, content إظهار ما تريده كمحتوى أو عنوان } wp_reset_postdata(); }في حال كان المحتوى بلغة لاتينية، سيظهر مرتباً من A إلى Z.
-
إذا كان التطبيق يقوم بنفس مهام الموقع، وبشكل تجاوبي مع أغلب الهواتف الذكية، فما هي وظيفة التطبيق إذن؟ من الأشياء التي لا أجد لها تفسيراً هي اتجاه أصحاب المواقع إلى إضافة زر تحميل التطبيق الخاص بموقعهم، مع العلم أن التطبيق يتضمن نفس مميزات الموقع، لا أدري هل هي موجة تطبيقات الهواتف الذكية أم ماذا، وأنا كمستخدم يُدرك أن التطبيق على الهاتف لن يأتي بشيء جديد خارج الخدمات الممنوحة على الموقع، لا أحمّل التطبيق -صراحةً-، وقد يكون السبب في ذلك محاولة تسويق الموقع بشكل أو بآخر، مما يعطي صورة عكسية عن الموقع. بالنسبة للتصميم، لسي بالضرورة أن يكون مشابها للموقع، كما أن التطبيق يجب أن يأتي بجديد ليس موجودا على الموقع، لأن غالبة المواقع الآن متجاوبة مع الشاشات الصغيرة، وبصفة عامة كل ما يتعلق بالموقع من تطبيقات و تصميمات... يجب أن يتم بنوع من التناسق من حيث الألوان المختارة، الشعار، على أن يكون مبتكراً وبه لمسة إبداع، خارج عن المألوف وما تعودت عليه عين المستخدم بصورة فنية جميلة. 40 Beautifully Designed Mobile Apps With Excellent UI Experience in Mind
- 1 جواب
-
- 1
-
-
باستعمالك لإطار العمل Bootstrap أو أي نظام شبكي آخر 'system of grid'. جرّب الكود التالي لضبط محاذاة الوسوم div: .span6 { width: 49%; display: inline-block; }حيث أعطينا لـ width قيمة %49 بالنسبة المئوية حتى تُحسب بشكل أوتوماتيكي ومتناسب مع عرض الصف المحتوي للوسم div. الخاصية display :inline-block لإظهار عناصر div على شكل خطي . مثال: .floating-box { display: inline-block; width: 150px; height: 75px; margin: 10px; border: 3px solid #73AD21; }CSS Layout - inline-block
-
في الكود المتعلق بجملة الاستعلام Insert قمتَ بفتح قوس ونسيت إغلاقه عند نهاية الجملة أي عند الجزئية "(first: وهذا ما سيُحدث خطأ في الكود، باعتبار أن جملة الاستعلام خاطئة وغير كاملة من حيث طريقة الكتابة، ليكون الكود الصحيح هو : $con->prepare("INSERT INTO `myComputers` (`hwid`, `ip`, `pcname`, `username`, `os`, `country`, `first`) VALUES (:hwid, :ip, :pcname, :username, :os, :country, :first)")->execute( array( ':hwid' => $data_array['hwid'], ':ip' => $data_array['ip'], ':pcname' => $data_array['pcname'], ':username' => $data_array['username'], ':os' => $data_array['os'], ':country' => $data_array['country'], ':first' => $data_array['first'] ) );PHP Prepared StatementsIntroduction to PHP PDO
-
في الكود الخاص بـ Jquery وَجب عليك استعمال الحدث click عِوضَ : $(this).on('click', function() {}كما أن استعمال this هنا لا أجد له دلالة، لعدم ضرورة ذلك، فمن الأفضل استعمال ".account-img" مباشرة، إليك الطريقة الصحيحة لكتابة كود Jquery الخاصة بالضغط على الصورة: $('.account-img').click(function(){ alert($(this).attr("id")); });- في المثال التالي، نبرز كيفية عمل حدث الضغط فوق عنصر عن طريق Jquery: $("p").click(function(){ alert("أكاديمية حسوب ترحب بكم"); });=> بعد الضغط على قطعة النص p سيظهر التنبيه " أكاديمية حسوب ترحب بكم ". وتعتمد هذه التقنية على : $(selector).click() Selector هو id الوسم أو class التي تمكننا من الوصول إلى الوسم المعني.
- 1 جواب
-
- 1
-
