-
المساهمات
6975 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
218
إجابات الأسئلة
-
إجابة Wael Aljamal سؤال في شرح كود مكتبة request كانت الإجابة المقبولة
مرحبا،
#! /usr/bin/env python3 import os # تضمين مكتبة النظام التي تؤمن مساعدة في التعامل مع الملفات في مثالنا import requests # HTTP requests تضمين مكتبة للتعامل مع الاتصال بالانترنت dir="/data/feedback/" # مسار ملف البيانات url= "http://1.1.1.1/feedback/" # مسار توجيه البيانات for file in os.listdir(dir): # قراءة قائمة الملفات في المسار المحدد # تعريف مصفوفات types = ["title","name","date","feedback"] dates = {} lines = [] # طباعة ملف print(file) with open(dir+"/"+file,"r") as txtfile: # txtfile حشو محتويات الملف في متحول x = 0 for line in txtfile: # طباعة الملف سطر سطر dates[types[x]] = line.rstrip('\n') # نخزن السطر من الملف في المصفوفة x += 1 print(dates) # طباعة مصفوفة التواريخ response = requests.post(url,json=dates) # JSON رد جواب للطلبية بصيغة بيانات
أظن أنه يوجد خطأ في تعليمة
tipos # خطأ dates[types[x]] = line.rstrip('\n') - قراءة ملف و إعادة توجيه البيانات منه لرابط محدد (تحقيق استجابة للطلبية)
- إن المتحول X يمر على المصفوفة types ، ويخزن في dates حسب دليل معين (موقع X في types) أي [types[x
بالتوفيق
-
إجابة Wael Aljamal سؤال في كيف أضع ال respone فى FlatList فى React Native كانت الإجابة المقبولة
مرحبا،
تحتاج لتخزين البيانت التي ترجعها من ال api في state يمكنك استخدام usestate من react hook مثلا state اسمها data بحيث تكتب ضمن
axios .then(res=>setData(res)) وضمن ال flatlist في data تكتب
data={data} بحيث الداتا ضمن القوسين هي ال state ,و الأخرى خاصة بالقائمة.
عند تنفيذ الكود بالبداية تكون قيمة ال state empty وبعد التنفيذ يتم اسناد ناتج axios لل state اي تقوم رياكت بملاحظة التغيير في قيمة ال state وتغير قيمتها في كل مكان استخدمتها فيه.
رياكت تعتمد على virtual dom بتلاحظ التغيير بجزء وبتعمل re-render لكل العناصر التي تم تعديلها.
بالتوفيق
-
إجابة Wael Aljamal سؤال في هل أقوم بتعريف جميع الواجهات في ملف AndroidManifest.xml في الاندرويد كانت الإجابة المقبولة
مرحبا،
نعم يجب تضمين جميع الـ Activities في Android Manifest
نضع لكل واحدة Activity منفصلة و جميعهم نضعهم في Application بالشكل العام:
<manifest ... > <application ... > <activity android:name=".ExampleActivity" /> ... </application ... > ... </manifest > مع بعض التفاصيل كالتالي:
<application // activity 1 <activity android:name=".mainActivity"> android:label="@string/app_name1" /> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> // activity 2 <activity android:name=".loginActivity"> android:label="@string/app_name2" /> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> AndroidManifest.xml يحتوي على معلومات عن الحزمة الخاصة بك ، بما في ذلك مكونات التطبيق مثل الأنشطة والخدمات وأجهزة استقبال البث وموفري المحتوى و مفتاح الخرائط وما إلى ذلك.
وأهم شيئ هو الصلاحيات مثل الوصول للإنترنت و مساحة التخزين ..
الخطأ الذي يظهر عند استخدام Activity بدون تعريفها هو runtime error
بالتوفيق
-
إجابة Wael Aljamal سؤال في الفرق بين Content as a Service و Compliance as a service كانت الإجابة المقبولة
مرحبا فايز،
المحتوى كخدمة أو محتوى مُدار كخدمة هو نموذج موجه نحو الخدمة ، حيث يقوم مزود الخدمة بتسليم المحتوى عند الطلب إلى مستهلك الخدمة عبر خدمات الويب المرخصة بموجب الاشتراك.
الامتثال كخدمة (CaaS) عبارة عن اتفاقية مستوى الخدمة السحابية (SLA) أي service level agreement التي تحدد كيف سيساعد مزود الخدمة المُدارة (MSP) أي managed service provider المؤسسة على تلبية متطلبات الامتثال التنظيمي الخاصة بها.
وهو إطار عمل يمكّن الشركات من الاستعانة بمصادر خارجية للأدوار والأرقام والمهارات اللازمة لتنفيذ الامتثال والحفاظ عليه ، لتسهيل وتبسيط الالتزام بالمتطلبات التنظيمية.
وهي قيام الشركة بالالتزامم بالاتفاقيات القانونية و المالية.
يؤثر هذا على كيفية عمل أنظمة الأمن الفرعية وكيفية تتبع المعلومات حول تفسير الحكومة أو الولايات القانونية
يمكن للمزود تقديم نوع من التشفير الذي أصبح الآن تفويضًا حكوميًا أو معاملات سجل بطرق محددة للوفاء بنص القانون
بالتوفيق
-
إجابة Wael Aljamal سؤال في ما هو API وكيف يستخدم وما فائدته كانت الإجابة المقبولة
مرحبا،
نقوم بإنشاء API لتطبيقنا، بحيث نوفر طرق خاصة بالاستعلام عن البيانات و إضافتها إنما باستخدام شيفرات برمجية بلغة مثل PHP لإدارة الطلبيات و معاجلة البيانات قبل إعادة إرسالها للعميل.
بما أنه لديك خبرة في برمجة الويب، إن أي شيفرة برمجية كنت قد كتبتها فهي لا تقتصر على البيانات الخام إنما تحوي على خليط من عدة لغات برمجة سوية و تحوي على التصميم مضمن معهم. أي PHP + HTML + CSS.
لكننا سنعاني من مشاكل عند محاولة ربط تطبيق الويب الخاص بنا مع أي طرفية أخرى (خدمة - موقع - تطبيق هاتف)
حيث عند طلب أي ملف، سوف يرسل المخدم صفحة ويب كاملة وهذا يمثل مشكلة من حيث كيف لنا أن نفصل البيانات و نستخلصها و من ثم نعود لعرضها في جزء العرض الجديد المخصص لها.
إن عمل API تقوم بفصل التصميم عن البيانات، بحيث نستطيع عرض نفس البيانات في أماكن مختلفة بتصاميم مختلفة (شكل العرض) ما يعطي سهولة في التعامل معها.
ويمكننا حتى في نفس التطبيق فصل التصميم عن البيانات بعمل ملف (سكربت خاص بالاستعلام عن بيانات محددة) ونتصل به من ملف التصميم HTML.
تسمح API بتوسيع التطبيق و تعديله بسهولة أكبر نسبيا من وجود جميع الشيفرات البرمجية في نفس الملف (الحشو)
حيث كانت الصفحة الواحدة تحوي على خليط من عدة لغات برمجة، من استعلام قواعد البيانات إلى حشوها في عناصر HTML.. ما يعطي شيفرة برمجية غير منسقة و صعبة الفهم و التعديل و التطوير، وهذا يخالف مفاهيم و مبادئ تطوير البرمجيات.
إن تعلمك لمفهوم MVC هو إضافة ممتازة أيضا يمكنك قراءة تعليقي من هنا
طبعا لاتقتصر على شرح واحد يوجد العديد من التفاصيل.
بالتوفيق
-
إجابة Wael Aljamal سؤال في استخدام السجلات في ++c و المتوسط الحسابي كانت الإجابة المقبولة
مرحبا،
أنت تضيف الكلمة المفتاحية struct في كل مكان و هذا خاطئ.
نستخدمها فقط عند تعريف سجل جديد ثم نستخدم اسم هذا السجل مكان تعريف المتحولات التي من نوعه.
استخدمت التمرير بالعنوان & لا أعرف إذاكنت قد درسته وتعرفه من قبل.
عند تعريف المصفوفة mark قمت بإسناد قيمة إبتدائية لها بالقيمة 0 لجميع العناصر.
بما أنك تقوم بتعريف ترويسة للتوابع نكتبهم أسفل الدالة main وإلا اكتب جسم التابع كاملا قبل main.
في التابع CalcAvrg يمكنك استخدام حلقة مثل التي استخدمتها لإدخال العلامات أفضل من هذا الشكل الذي كتبت به.
#include<stdio.h> #include<stdlib.h> struct Student { int mark[5][5] = {{0}}; }; void MStudent( Student& myStruct); void CalcAvrg( Student& myStruct); int main() { struct Student dene; MStudent(dene); CalcAvrg(dene); return 0; } void MStudent( Student& myStruct) { int i,j; for(i=0; i<5; i++) { for(j=0; j<5; j++) { printf("%d. Student's mark for %d. exam :\n", i+1,j+1); scanf("%d", &myStruct.mark[i][j]); } } } void CalcAvrg( Student& myStruct) { int i; for(i=0; i<5; i++) { printf("%d. Exam's average is: %d\n", i+1, (myStruct.mark[0][i] + myStruct.mark[1][i] + myStruct.mark[2][i] + myStruct.mark[3][i] + myStruct.mark[4][i])/5); } } في حال لا تريد التمرير بالعنوان علينا إعادة إسناد القيمة المعادة من كل دالة إلى المتحول في الدالة main.
حتى نحتفظ بآخر نسخة من قيم السجل فيها.
بالتوفيق
-
إجابة Wael Aljamal سؤال في مسار برمجة مواقع الويب كانت الإجابة المقبولة
مرحبا،
تنقسم برمجة مواقع الويب إلى قسمين رئيسيين هما:
تصميم الموقع Front-end أي ما يظهر للمستخدم برمجة الموقع Back-end أي عملية إدارة قواعد البيانات ومعالجة البيانات (قسم المخدم) تصميم المواقع يعتمد على التقنيات التالية:
HTML: تستخدم لتحديد بنية صفحات الموقع و أقسامه بالشكل الأساسي CSS: تستخدم لعمل التنسيقات و ترتبط مع HTML JavaScript: هي لغة البرمجة التي تعمل على المتصفح و تستخدم بإدارة الواجهة (معالجة بيانات و تحريك العناصر) مكتبات وإطارات عمل مهمة لتصميم المواقع (مستوى متقدم):
jQuery: مكتبة في لغة البرمجة JavaScript تسهل العمل. Bootstrap: إطار عمل CSS يسهل عمل التنسيقات. برمجة المواقع يعتمد على التقنيات التالية:
أولا: قواعد البيانات ومنها: عليك تعلم SQL
MySQL PostgreSQL MongoDB .. وغيرهم ثانيا: لغات البرمجة لمواقع الويب:
PHP: ونستخدم معها إطار العمل Laravel JavaScript: ونستخدم معها إطار العمل Node.JS Python: ونستخدم معها إطار العمل Django مسار التعلم:
الأساسيات: HTML - CSS - JavaScript
ثم تختار نوع قاعدة بيانات مع لغة برمجة مثل MySQL + PHP
تعلم أولا الأساسيات وبعد تمكنك منهم يمكنك الانتقال لباقي التفاصيل و يسهل عليك الاختيار
سترى الطريق طويل لكن علينا التقدم خطوة بخطوة.
بالتوفيق
-
إجابة Wael Aljamal سؤال في اضافه فيديو في بدايه الموقع كانت الإجابة المقبولة
مرحبا نور الدين،
يوجد خاصية في HTML + JS تقوم بتشغيل الفيديو بوضع Full Screen وهي تتوفر بعدة أسماء حسب المتصفح:
/* Function to open fullscreen mode */ function openFullscreen() { if (elem.requestFullscreen) { elem.requestFullscreen(); } else if (elem.webkitRequestFullscreen) { /* Safari */ elem.webkitRequestFullscreen(); } else if (elem.msRequestFullscreen) { /* IE11 */ elem.msRequestFullscreen(); } } حيث في هذا المثال نستدعي openFullScreen وهو function لتفعيل هذه الخاصية ويمكنك وضعها مباشرة(او استدعاء التابع) في الشيفرة لديك بعد تحميل الصفحة لتفيل وضع ملئ الشاشة.
توثيق مفيد من موسوعة حسوب رابط1 - رابط2
يوجد مثال من هنا ويمكنك فتح التوثيق requestfullscreen
كما يوجد الخاصية webkitEnterFullscreen ويمكنك تشغيلها حسب المثال التالي:
<!DOCTYPE html> <html> <head> <title>HTML5 Video Full Screen Mode Example</title> <script> var myVideo; window.onload = function() { myVideo= document.getElementById("myVideoFile"); btnfullMode.addEventListener("click", setFullScreenMode, false); video.addEventListener("loadedmetadata", makeFullModeVisible, false); } function makeFullModeVisible() { if (video.webkitSupportsFullscreen) { document.getElementById("btnfullMode").style.visibility="visible"; } } function setFullScreenMode() { video.webkitEnterFullscreen(); } </script> </head> <body> <div id="video_container"> <video width="320" height="176" src="myVideoFile.mp4" id="myVideoFile" autoplay /> </div> <br/> <button type="button" id="btnfullMode" > Open Video in Full Screen mode </button> </body> </html> بالتوفيق
-
إجابة Wael Aljamal سؤال في مسح بيانات التخزين المؤقت في منصة opencart - clear cache كانت الإجابة المقبولة
كانت مشكلة أذونات وتم حل المشكلة.
-
إجابة Wael Aljamal سؤال في ما هو مجموع المساحات من مثلث و دائرة MATLAB كانت الإجابة المقبولة
مرحبا،
السؤال غير واضح، أرجو توضيحه.
ما هو مجموع المساحات من مثلث و دائرة؟
لقد سبق و أجت على سؤال مشابه رابط الإجابة السابقة وهو يوضح قوانين حساب مساحة مثلث و دائرة.
هل تستطيع تقديم توضيح للمشكلة التي لديك إذا كانت مختلفة, شكرا لك
-
إجابة Wael Aljamal سؤال في حل مشكلة تنصيب مكتبه كانت الإجابة المقبولة
مرحبا محمد،
إقرأ رسالة الخطأ السطر رقم 4 من الأسفل.
يخبرك أنه عليك تثبيت نسخة Microsoft Visual c++ 14.0، فهي مطلوبة بالإضافة لـ Build Tools ويقترح عليك تحميلهم من الرابط المرفق
visualstudio.microsoft.com/downloads
بالتوفيق
-
إجابة Wael Aljamal سؤال في هل يمكن التعديل علي اضافات الوردبريس لجعلها تعمل علي مواقع php كانت الإجابة المقبولة
مرحبا،
يمكنك وضع شيفرة جافاسكربت تقوم بحذف محتوى ذاكرة النسخ clipBoard بالطرية التالية
<script language="javascript"> function clearData(){ window.clipboardData.setData('text','') } function cldata(){ if(clipboardData){ clipboardData.clearData(); } } setInterval("cldata();", 1000); </script> <body ondragstart="return false;" onselectstart="return false;" oncontextmenu="return false;" onload="clearData();" onblur="clearData();"> حل آخر:
ضع الشيفرة قبل نهاية العنصر head
<script> function killCopy(e){ return false; } function reEnable(){ return true; } document.onselectstart=new Function ("return false"); if (window.sidebar){ document.onmousedown=killCopy; document.onclick=reEnable; } </script> كما يمكنك إضافة هذه الطريقة:
<div oncopy="return false;">Here you have protected text</div> استخدام CSS لجميع العناصر :
-moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; -o-user-select: none; user-select: none; يوجد العديد من الحلول
يمكنك البحث عن PREVENT COPY CONTEXT
بالتوفيق
-
إجابة Wael Aljamal سؤال في شيفرة MATLAB لحساب مجموع مساحة دائرة و مثلث كانت الإجابة المقبولة
مرحبا،
إذا كنت تقصد الدائرة المثلثية التي نصف قطرها يساوي 1.
في ماتلاب يمكننا الحصول على قيمة π = 3.1415926535897 عن طريق ذكر المتحول pi.
function area = triCircl() radius = 1; // من شرط المسألة area = pi * radius^2; end اسم الدالة triCirclنحفظها في ملف باسم triCircl.m
في ماتلاب يمكننا حساب القوة لأي متحول باستخدام الاشارة الرياضية ^ بشكل مباشر بدون استخدام الدالة power
نعيد النتيجة مخزنة في المتحول area
لحساب مساحدة دائرة بشكل عام:
function [area] = CircleArea(radius) area = pi * radius^2; end مساحة مثلث نعرف طولي القاعدة و الارتفاع:
function area = triArea(height,base) area = 0.5*height*base; end بالتوفيق
-
إجابة Wael Aljamal سؤال في شيفرة MATLAB لحساب العاملي لعدد ما Factorial كانت الإجابة المقبولة
مرحبا،
إن حساب العاملي لعدد ما هو ناتج الجداء المتراكم للأعداد من 1 حتى العدد نفسه لنفرض أنه n
يمكننا حسابها بالستخدام حلقة واحد مع متغير نخزن فيه الجداء التراكمي..
function result = Factorial(n) factorial=1; // قيمة بدائية للناتج for i=1:1:n // حلقة factorial=factorial*i; // جداء تراكمي حيث أن القيمة المحسوبة هي القدية ضرب العدد الحالي و نخزن الناتج الجديد مكان القيدم end اسم الدالة Factorial نحفظها في ملف باسم Factorial.m
نعيد النتيجة مخزنة في المتحول factorial
بالتوفيق
-
إجابة Wael Aljamal سؤال في شيفرة MATLAB و التعامل مع الدوال الرياضية و تعريفها كانت الإجابة المقبولة
مرحبا،
function result = calc(x) result = power(x,3) + 3 * power(x,2) - 5; end اسم الدالة calc نحفظها في ملف باسم calc.m
نعيد النتيجة مخزنة في المتحول result
التابع power يحسب القوة (مضاعفات عدد) حيث استخدمنا المضاعف الثاني و الثالث للمتحول X
بنفس النمط نعرف الدالة الثانية:
function result = calc(y) result = 4 * power(y,2) - 6 * y + 10; end يمكننا دمع العمليتين سويا كالتالي:
function [f,g] = calc(x,y) f = power(x,3) + 3 * power(x,2) - 5; g = 4 * power(y,2) - 6 * y + 10; end حيث ستعيد لنا الدالة calc ناتج الحسابين سويا في متحولين مختلفين هما f,g بعد تمرير الوسيطين x,y لها
بالتوفيق
-
إجابة Wael Aljamal سؤال في التعامل مع المؤشرات و السجلات pointer , struct بلغة ++c كانت الإجابة المقبولة
مرحبا أسماء،
لدينا سجلين a,b نريد أن نجمع قيمتهما في دالة func و نخزن النتيجة في result مع استخدام مؤشر وسيط هو c.
الخطأ هو أن الدالة func تستقبل الوسيط الثالث من النوع pointer مؤشر على سجل s* ولدينا فعليا المتحول c هو من هذا النوع، فنقوم بتمريره بدون وضع & (التمرير بالعنوان) لكي يحدث توافق بين نوعي المتحولات و الوسيط للتابع.
كما يوجد تعليمات لافائدة (إدخال قيم للمتحول c ..)منها سوف اكتب الشيفرة بالطريقة المناسبة:
#include<iostream> using namespace std; typedef struct s1 { float r; float m; } s; s *func(s a,s b,s *c) { //cout<<"\npointer\t : "<< c <<"\n*pointer\t : "<< (&c); //<<"\n&pointer\t : "<<*c<<endl; c->r=a.r+b.r; c->m=a.m+b.m; return c; } int main() { s a,b,*c,*result; cout<<"\n####################The First Struct###################\n"; cout<<"number one\n"; cin>>a.r; cout<<"number Two\n"; cin>>a.m; cout<<"\n####################The Second Struct###################\n"; cout<<"number one\n"; cin>>b.r; cout<<"number Two\n"; cin>>b.m; cout<<"\n####################The pointer Struct###################\n"; result=func(a,b,c); cout <<"result=\t r: " << result->r <<"\tm: " << result->m << endl; } أي نمرر c كما هو، حيث من الواضح أنه فقط وسيط للجمع و سنخزن النتيجة في result.
بالتوفيق
-
إجابة Wael Aljamal سؤال في Driven class في مخططات UML كانت الإجابة المقبولة
مرحبا نيلاي،
إن تعريف driven class هو الصف المساق من صف آخر بمعنى أنه يشتق منه أو يرث منه (مفهمو الوراثة في البرمجة inheritance)
لماذا نقوم بالوراثة؟
لإضافة وظائف إلى تلك المعرفة بواسطة فئة موجودة. لتوسيع وتخصيص إجراءات وظيفة محددة في فئة موجودة. لإخفاء وظيفة في فئة موجودة ومنع المزيد من الوصول إليها. لإنشاء واجهة مختلفة لفصل موجود. لإضافة أعضاء البيانات إلى تلك المدرجة في فئة موجودة. لتقييد مستوى حماية أعضاء البيانات الذين ينتمون إلى فئة موجودة. ** عليك المحاولة باستنتاج ما هم driven class **
الحل:
جميع الصفوف التي ترث من الصف Payment وهم: credit - cash - check - write transfer
بعض الأمثلة:
بالتوفيق
-
إجابة Wael Aljamal سؤال في كيفية تحويل الرسائل النصية تلقائيا من رقم قديم إلى جديد كانت الإجابة المقبولة
مرحبا مختار،
أظن هذه الخدمة يجب أن تكون مقدمة من قبل شركة الاتصالات.
لايوجد أي برنامج يستطيع تحويل الرسائل النصية المستقبلة من رقم هاتف إلى رقم آخر. (طالما الsim خارج الهاتف لايوجد طريقة لنقل البيانات منه)
حاول التواصل مع الدعم الفني لشركة الاتصالات لديك
بالتوفيق
-
إجابة Wael Aljamal سؤال في حل مشكلة فلاتر flutter' is not recognized as an internal or external command كانت الإجابة المقبولة
مرحبا مصطفى،
عليك مراجعة تعليمات التثبيت فيوجد متطلبات إضافية عليك تثبيتها تجدها في التوثيق كما في الصورة المرفقة.
و عند إضافة flutter ل path variables هل قمت بوضع فاصلة منقوطة قبل إضافة مسار flutter التي هي بالشكل التالي ;
حيث أن نظام ويندوز يستخدمها للفصل بين مسارات البرامج المختلفة
بالتوفيق
-
إجابة Wael Aljamal سؤال في الحلقات المتداخلة في ++c كانت الإجابة المقبولة
مرحبا،
يتطلب الحل حلقتين الأولى مسؤولة عن الأسطر و الثانية عن الأعمدة. لكل سطر من الأسطر الخمسة يوجد 5 عناصر تنتمي له.
نطبع النجمة في حال كان العنصر ينتمي للقطر الرئيسي أي i == j
أطلب منك المحاولة في الحل قبل الاطلاع على الحل الذي قدمته
يكون البرنامج بالشكل التالي:
#include <iostream> using namespace std; int main() { // الحلقة الأولى للأسطر for (int i=1;i<=5;i++){ // i الحلقة الثانية تعمل في السطر رقم for (int j=1;j<=5;j++){ // العنصر ينتمي للقطر الرئيسي if (i == j) cout <<"*"; // عنصر في موقعه الادي else cout << j; } // سطر جديد عند الانهاء من السطر الحالي cout << "\n"; } return 0; } يكون الخرج بالشكل التالي:
*2345 1*345 12*45 123*5 1234* بالتوفيق
-
إجابة Wael Aljamal سؤال في تعلم بناء واجهة برمجية API من اكاديمية حسوب كانت الإجابة المقبولة
مرحبا منصور،
يتم تطوير الخدمات Back end كـ API لجعل التطبيق يدعم عددا كبير من طرق العرض على مختلف أنظمة التشغيل و مختلف المنصات بالإضافة لمشاركة بياناته بسهولة مع مواقع و تطبيقات أخرى.
إن تطبيق مفهوم API (واجهة التطبيقات البرمجية) هي لعزل البيانات الخام التي هي أساس أي صفحة ويب أو تطبيق هاتف محمول عن طريقة تمثيلها كصفحات HTML مثلا
فأنت إذا لم توفر API وطلب موقع أو تطبيق خدمة يوفرها موقعك أو أنت شخصيا أردت توسيع مشروعك بدعم الهواتف المحمولة، فهل سترسل لهم البيانات على شكل صفحات ويب HTML ؟
إن التوجه الحديث هو بناء API أولا، مثلا بناء سكربتات PHP تستعلم أجزاء محددة من البيانات من قاعدة البيانات و طلب هذه السكربتات بمواقع مختلفة إذا كانت صفحة ويب أو تطبيق للأجهزة المحمولة
ومن ثم يتم تنسيق هذه البيانات بطرق عرض متناسبة مع المنصة التي عرضت عليها.
تشبه مفهوم MVC الذي استعملته في لارافيل بعض الشيئ. أي فصل المتحكم المسؤول عن جلب البيانات (controller) عن طرق عرض البيانات (view). و إتاحة استخدام نفس المتحكم في أكثر من مكان ضمن المشروع و في أكثر من صفحة.
بالنسبة لشعورك بالملل، أقترح عليك أن تصنع API خاص بالمشروع الذي أنجزته و استخدامه كمشروع منفصل و جلب البيانات منه و عرضها بطريقة مختلفة
و تدريب نفسك على هذه المهارات.
هنا باستخدام API لايوجد تصميم لصفحات ويب أو واجهات مستخدم لكنها أهم بالنسبة لعمل المبرمج.
جلب البيانات الصحيحة هو أهم جزء من عمل المشروع.
بالطبع لا أنقص أهمية التصميم حيث يجب أن يلبي الذوق العام و يحقق معايير تجربة المستخدم
بالتوفيق
-
إجابة Wael Aljamal سؤال في لدي مشكلة مع wordpress. كانت الإجابة المقبولة
مرحبا تقى،
أرجو التأكد من تشغيل MYSQL في السيرفر المحلي Xampp or Wampp
و من ثم التأكد من بيانات الاتصال في ملف الإعدادات wp-config.php
وأيضا احتمال الخطأ في اسم المستخدم و كلمة المرور
ستكون الإعدادات بهذا الشكل define(‘DB_NAME’, ‘database-name’); define(‘DB_USER’, ‘database-username’); define(‘DB_PASSWORD’, ‘database-password’); define(‘DB_HOST’, ‘localhost’); أرجو التأكد منها بالتوفيق
-
إجابة Wael Aljamal سؤال في فوتشوب كانت الإجابة المقبولة
مرحبا،
أقترح عليك مشاهدة شروحات لتعليم الفوتوشوب عن طريق يوتيوب و أقترح dr.nour homsi نور حمصي حيث يقوم هو بشرح عن التصميم و تعديل الصور و الغرافيك ديزاين ..
لكن إن لم تكن تستطيع شراء نسخة برنامج فوتوشوب (لأن النسخة التجريبية مدتها أسبوع) يمكنك تحميل البرامج المجانية البديلة :
Luminar. Apple Photos. Microsoft Windows 10 Photos. GIMP. Photo Pos Pro. RawTherapee. Pixlr. Paint.NET و أن تبحث عن شروحات لها.
أما بالنسبة للفيديو فأيضا برامج شركة أدوبي هي المتفوقة Adobe Premiere هو الأفضل في تعديل الفيديو
بدائل مجانية:
HitFilm Express DaVinci Resolve 16 بالتوفيق
-
إجابة Wael Aljamal سؤال في مونتاج 2 كانت الإجابة المقبولة
مرحبا لميس،
اولا يجب ان يملك المقطعان نفس القياسات (resolution).. حتى لا يحصل تأثير المفاجأة للعين..
في حالة كان المقطعان مختلفين من ناحية الاعدادات نضيف عليهما نوعا من التعديلات، نعدل الاعدادات كتغيير طفيف بالاضاءة او الالوان او التباين، نضيف تأثيرات (effects)، ونأخذ مساحة حرية للابداع ومحاولة جعل المقطعين كأنهما نفس المقطع..
النقطة الأخيرة وهي اختيار الانتقال المناسب (transition) للربط بين المقطعين وهو غالبا ما يكون التلاشي (Crossfade) بطريقة تشعر المشاهد أن المقطعين هما مقطع واحد.
.
لا يجب نسيان معالجة الصوت خلال المقطعين، يجب أن يكونا نفس مستوى الصوت المسموع، أي إن كان أحدهما منخفضا نرفعه بحيث يوازي درجته المسموعة بالأذن، معالجة وجود اختلافات بين مقطع والثاني مثل الضجيج أو أصوات مخالفة.
يمكن كذلك الاستعانة بموسيقى تصويرية خفيفة بالخلفية للتغطية على بعض العيوب الصوتية بالمقطعين، وطبعا إن لم نكن بحاجة للصوت أصلا في المقطع يمكننا إزالته ووضع موسيقى نختارها تكون مناسبة.
طبعا الاختيار الانتقالي: التلاشي (Crossfade) يشمل الصوت كذلك ولا يشمل الصورة فقط.
بالتوفيق
-
إجابة Wael Aljamal سؤال في أريد تصميم إضافة في ووردبريس عباره عن نموذج تسجيل معدّل كانت الإجابة المقبولة
مرحبا،
أنصحك بالتوجه لموقع مستقل و إنشاء مشروع ومن ثم توظيف أحد المبرمجين للعمل على مشروعك،
بالتوفيق