لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 06/23/20 في كل الموقع
-
مرحباً .. لا يمكننا طرح هذا السؤال فهذا يعتمد على الطالب أو المتلقي فيمكن لشخص ما أن يفهم من كورس محدد, نفس هذا الكورس يمكن شخص آخر لا يفهم منه و لا يستوعبه يمكننا طرح السؤال التالي : هل بإمكانكم ترشيح كورسات أو مساقات أو دورات شاملة في لغة c # ؟ و بعدها يمكنك إتخاذ قرار إن كانت الدورة أفضل بالنسبة لك أم لا سأرشح لك مصدرين و هما بالمجان: قناة خالد السعداني و هذا الشخص يقدم دورات و دروس في العديد من تقنيات .net و يُعتبر MVP .net يُمكنك الإطلاع عليه من خلال هذا الرابط قناة حسونة أكاديمي وهذا الشخص يُقدم دورة شاملة من الألف إلى الياء عن c# و الدورة تضم أكثر من 1000 درس ورابط الدورة: إضغط هنا بالتوفيق3 نقاط
-
الحماس و الشغف في البرمجة بالتحديد شيئ ضروري و أساسي للإستمرارية في التعلم و العمل، الك خلطة سحرية تجعلك على حماس شبه دائم في مواكبة العمل و التعلم في مجال البرمجة. الحب المتبادل، لن تستطيع إنجاز مهامك البرمجية و أنت بالأساس لا تحب البرمجة و تبغضها، لذلك إن كنت لا تحب البرمجة فعليك أن تبحث عن مجال آخر من البداية. أنظر لنتائج أعمالك، من حين لآخر تصفح ماذا أنجزت، أنظر الى تصاميمك بفخر، و أنظر الى الدورات و المساقات التي أنجزتها بفخر. لا تدرس أو تعمل أكثر من 6 ساعات يوميا، دراسة البرمجة أو العمل بها يستهلك قدر كبير من التركيز و التفكير و التدقيق و هذا كله يشكل جهد كبير على الدماغ، التزم بوقت دراسة محدد يتخلله أوقات فراغ لتريح عقلك استراحة محارب، من حين لآخر و بعد أن تنهي دورة ما في مجال البرمجة ، اغلق الحاسوب و أنطلق مع أصدقائك، قم بالتنزه أو عمل رحلة صغيرة، و أقضي وقتا ممتعا بعيدا عن الحاسوب و البرمجة لمدة اسبوع على الأقل.2 نقاط
-
السلام عليكم من الطبيعي جداً مرور المبرمج بفترات من الخمول, وسرعان ما يتجاوزها من خلال وضع الأهداف الخاصة به. والعمل على حب البرمجة.2 نقاط
-
1 نقطة
-
1 نقطة
-
و لكن هل هده المواضيع التي توجد في اكادمية حاسوب هل ستعلمني كل اساسيات c# و xamarin1 نقطة
-
أتفق وبشدة مع فكرة الأخ عبود سمير، لا توجد أفضل دورة لتعلم أي تقنية أو شيء ما، لكل شخص تفضيلاته، والطريقة التي يحب أن يتعلم عن طريقها. وأضيف أنا الترشيحات التالية: تعلم أساسيات البرمجة ب سي شارب: دورة مقدمة من صاحب قناة بغداد الجديدة، أحببت طريقة شرحه وتبسيطه للمفاهيم، كما أن قناته تحتوي على شروحات أخرى، كشرح xamarin أو دورات تعلم برمجة الألعاب عن طريقة Unity. Tutorialspoint: وهو موقع باللغة الإنجليزية يحتوي على العديد من الشروحات لمختلف اللغات البرمجية وإيطارات العمل والمكتبات، ومن بينها شرح للغة C#، أستخدمه عادة في تعرف على اللغات البرمجية او التقنيات. أكادمية حسوب: ستجد في الرابط التالي، سلسلة لشرح C#، كما أن الأكادمية تقدم شروحات لتعلم Xamarin و Unity3D. C# Tutorial - Full Course for Beginners: يشرح هذا الفيديو مجموعة من مفاهيم C#، يبدأ بالمقدمة وتحميل الأدوات وصولًا لمفاهيم الصفات والكائنات. يمكنك تجربة بعض الدورات وستجد بعد ذلك الدورة الأفضل بالنسبة لك.1 نقطة
-
هل الكراش بعد شاشة ادخال الرقم؟ هل يصل الى شاشة التحقيق او البروفايل؟1 نقطة
-
بالطبع لا، ال xamarin. هو إطار عمل لتطبيقات الهواتف الذكية يعتمد على السي شارب ولكن يختلف عن ال. Asp1 نقطة
-
السلام عليكم -لغة الجافا و البرمجه كائنيه التوجه -برمجه الواجهات بال FXML و التعامل مع برنامج scenebuilder -تحليل الانظمه و تصميم نموذج الكينونه علاقه وتطبيع الجداول ,,, و حالات الاستخدام ,,, -برمجه قواعد البيانات بال mysql -التعامل مع بعض المكتبات Apache POI ... -مفهوم الطبقات في تصميم البرمجيات و بعض انواع design pattern1 نقطة
-
1 نقطة
-
1 نقطة
-
برنامج Git هو أحد التطبيقات النادرة التي تمكنت من جمع العديد من تقنيات الحوسبة في برنامج واحد انتهى به المطاف ليصبح بنية تحتية تخدم عدَّة تطبيقات أخرى. على الرغم من أنّ التطبيق اشتهر بتتبع التعديلات على الشفرة المصدرية خلال مراحل التطوير، إلّا أنّ لديه استخدامات أخرى لجعل طريقة عملك كمطور أسهل وأكثر تنظيما. سنستعرض في ما يلي استخدامًا إضافيًّا لتطبيق Git. كان إنشاء مواقع الويب، إلى عهد قريب، بسيطًا للغاية وسحريًا في آن واحد. في الأزمان الغابرة للإصدار الأول من الويب Web 1.0 (هذا المصطلح لم يكن مستخدمًا حينها) كان بإمكانك زيارة أي موقع ويب، واستعراض شفرته المصدرية ثم برمجة ملفات HTML عكسيًّا (Reverse engineering)، بتنسيقاته السطرية وتصميمه المعتمد على الجداول، وتعدُّ نفسك مبرمجًا خلال يوم أو اثنين. لكن لا يزال عليك وضع الموقع الذي أنشأته على الويب، بمعنى أنك ستتعامل مع الخوادم وبروتوكولات نقل الملفات وصلاحيات مجلدات الجذر على الخادم. رغم أن المواقع الحالية أكثر تعقيدًا موازنةً بذلك الوقت إلا أن نشر موقعك بنفسك صار أسهل، وسيزداد سهولة عند استعمالك Git. أنشئ موقعًا باستعمال Hugo Hugo هو مولّد مواقع ساكنة (Static site generator) مفتوح المصدر. المواقع الساكنة هي ما كونت الإنترنت سابقًا (إذا عدنا بالزمن بعيدًا بما فيه الكفاية، لم يكن على الويب غيرها). هنالك عدة نقاط قوة لهذه المواقع الساكنة: من السهل إنشاؤها، فليس عليك كتابة نصوص برمجية. آمنة نسبيًا، إذ لا توجد شفرة برمجية لتنفيذها على الخادم. أيضًا هي سريعة على نحو عام لعدم الحاجة لعمليات حوسبة، فقط نقل محتوى الصفحة. Hugo ليس المولدّ الوحيد للمواقع الساكنة، يقدِّم Grav، وPico، وJekyll، وPodwrite وبرامج أخرى طرقًا سهلة لإنشاء مواقع إنترنت مكتملة الوظائف وبالكاد تتطلب أعمال صيانة. لكن Hugo لديه تكامل مع خدمات GitLab بشكل مدمج، أي يمكنك إنشاء واستضافة موقعك باستعمال حساب GitLab مجاني. أضف إلى ذلك امتلاك Hugo قاعدته الجماهيرية الخاصة، مثلا إنْ سبق واستعملت موقع Let's Encrypt فأنت بالفعل قد جربت موقعًا مبنيًا باستعمال Hugo. تثبيت Hugo يمكنك إيجاد إرشادات لتثبيت Hugo على أجهزة ماك، وويندوز، ولينكس وتوزيعات BSD، إذ يعدُّ عابرًا للمنصات. في حال استعمالك لإحدى توزيعات لينكس أو BSD، فالأسهل تثبيته من مستودع برمجيات أو شجرة منافذ. يختلف أمر التثبيت حسب ما توفّره توزيعتك. مثلاً على فيدورا يُكتب الأمر كالتالي: $ sudo dnf install hugo تأكد من أنك ثبته بطريقة صحيحة بتنفيذ الأمر التالي في سطر الأوامر: $ hugo help سيسرد لك هذا الأمر كل الخيارات المتاحة للأمر Hugo، وإذا لم يحدث ذلك فهذا يعني أنك ثبّته بطريقة خاطئة أو أنك بحاجة إلى إضافة الأمر إلى المتغير PATH. ابدأ بإنشاء موقعك لبناء موقع باستعمال Hugo، لابد من إنشاء بنية مجلدات بهيكلة خاصة، وهو ما يقوم به Hugo نيابة عنك عند تنفيذ الأمر التالي: $ hugo new site mysite هكذا أنشأت مجلّدًا باسم mysite يحوي جميع المجلدات الافتراضية اللازمة لبناء موقعك. ستستعمل Git كخادم لموقعك على الويب، لذلك انتقل إلى مجلد موقعك، الذي هو mysite في مثالنا، وقم بإعداده كمستودع Git مستعملًا الأوامر التالية: $ cd mysite $ git init كما أوضحنا سابقًا، Hugo متكامل مع خدمة Git، لذا يمكنك استعمال Git لتثبيت سمات لموقعك. إنْ لم تكن تخطّط لتطوير تصميم الموقع بنفسك، فيمكنك استعمال الخيار (depth--) لنسخ آخر إصدار من مصدر التصميم المختار كالتالي: $ git clone --depth 1 \ https://github.com/darshanbaral/mero.git\ theme/mero والآن لنُضف بعض المحتوى لموقعك: $ hugo new posts/hello.md استخدم محررك النصي المفضل لتعديل ملف hello.md على مسار content/posts. يقبل Hugo الملفات المرمزة بمارك داون ويحولها إلى منشورات بترميز HTML لذلك يفضل كتابة وتنسيق المحتوى بترميز markdown. إذا رغبت بإضافة الصور إلى منشوراتك، أنشئ مجلدًا باسم images في المسار الافتراضي. ضع جميع الصور بداخل هذا المجلد وقم بالإشارة إليها من ملف ماركداون مستعملًا المسار المطلق (Absolute path) أي بادئًا بمسار مجلد الصور (images/) كمثال: ![صورة لشيء](/images/thing.jpeg) اختر تصميمك يمكنك العثور على المزيد من القوالب في themes.gohugo.io، لكن يفضل استعمال التصميم الافتراضي أثناء فترة الاختبار. التصميم الأساسي لدى Hugo يسمى Ananke. بعض التصاميم لديها متطلبات معقدة وأخرى لا تقوم بتنسيق الصفحات بالشكل المتوقع بدون الدخول في ترتيبات متقدمة. تصميم Mero الذي سنستخدمه في المثال التالي يأتي ملحقًا بملف ضبط متخصص (config.toml)، ولكن بهدف التبسيط سنقتصر على ذكر الأساسيات فقط. افتح باستخدام محرر نصوص الملف config.toml وأضف خيارات الضبط التالية: languageCode = "en-us" title = "My website on the web" theme = "mero" [params] author = "Seth Kenlon" description = "My hugo demo" تحدّد الإعدادات أعلاه ترميز لغة الموقع (الإنكليزية الأمريكية en-us)، وعنوانه، والسمة المستخدمة، إضافة إلى اسم صاحب الموقع ووصفه. معاينة موقعك ليس عليك وضع أي شئ على الويب إلى أن تصبح جاهزًا لنشره. أثناء العمل يمكنك معاينة نسخة محلية من موقعك على خادم مدمج مع Hugo بتنفيذ الأمر التالي: $ hugo server --buildDrafts --disableFastRender أدخل العنوان http://localhost:1313 في متصفحك لتستعرض عملك الحالي. النشر على GitLab باستخدام Git لنشر واستضافة موقعك لدى GitLab، أنشئ مستودعًا لمحتوى موقعك. لإنشاء ذلك المستودع أضغط على زر إنشاء مشروع جديد (New Project) الموجود على صفحة مشاريع GitLab الخاصة بك، أنشئ مستودعًا فارغًا باسم (yourGitLabUsername.gitlab.io) مع إبدال yourGitLabUsername باسم المستخدم الخاص بحسابك على GitLab. من المهم استخدام هذا الاسم كاسم لمشروعك أيضًا ويمكنك لاحقًا تخصيص اسم نطاق لموقعك. لا تُضِف ترخيصًا أو ملف "اقرأني" (README). في البداية، تعقّد إضافة الملف إلى المستودعات المنشأة محليَّا من مهمة إرسال البيانات إلى GitLab. يمكنك إضافة تلك الملفات لاحقا. اضبط المستودع الفارغ على GitLab - بعد إنشائه - إلى إعدادات المجلّد الخاص بموقعك، وهو المجلّد الذي أعددناه سابقًا ليكون مستودع Git: $ git remote add origin git@gitlab.com:skenlon/mysite.git أنشئ ملفًا باسم gitlab-ci.yml لضبط إعدادات GitLab، وأدرج به الخيارات التالية: image: monachus/hugo variables: GIT_SUBMODULE_STRATEGY: recursive pages: script: - hugo artifacts: paths: - public only: - master يُعرِّف المعامل image حاوية الصور المستخدمة في موقعك. التعليمات الأخرى تمثّل في مجملها إرشادات لتهيئة خوادم GitLab للاستجابة بفعالية عندما ترسل شفرة مصدرية إلى مستودعك البعيد. اقرأ االتوثيق في القسم المختص على GitLab لمزيد من التفاصيل عن النشر والتكامل المستمرّيْن (CI/CD). تحديد الاستثناءات بوصولك لهذه النقطة تكون قد أعددت مستودع Git الخاص بموقعك والتعليمات البرمجية الخاصة بإنشاء موقعك على خادم GitLab، وموقعك أصبح جاهزًا للنشر. الآن قبل تنفيذ أي أمر من أوامر Git، تحتاج لتنفيذ بعض الإجراءات الاحترازية حتى لا يتحكّم Git في إصدارات ملفات لا ترغب في أن يتحكّم فيها. أولًا، أضف مسار (public/) الذي أنشأه Hugo مسبقًا عند إنشائه مشروع الموقع، أضفه إلى ملف (gitignore.). لست بحاجة لإدارة موقعك في شكله النهائي على Git، ما ستحتاجه هو تتبع التغييرات على الملفات المصدرية لمشروع Hugo. $ echo "/public" >> .gitignore أمر آخر، لا يمكن الحفاظ على مستودع Git داخل مستودع Git آخر إلّا باستخدام وحدة فرعية (Submodules). لتسهيل الأمور انقل المجلد git. من مجلّد السمات (themes) إلى مجلّد آخر ليبقى مجلد السمات خاصًّا بالتصميم فقط. $ mv themes/mero/.git ~/.local/share/Trash/files/ يمكنك استعمال سلة مهملات مثل Trashy بديلًا عن الأمر السابق: $ trash themes/mero/.git الجدير بالذكر أن عليك إضافة الملفات الخاصة بالتصميم الى مستودع Git حتى يتمكن GitLab من الوصول إلى تصاميمك، بدون ذلك لن تستطيع بناء الموقع بنجاح. هنا يمكنك إضافة جميع محتويات مشروعك من على مجلد جهازك ورفعها على GitLab: $ git add . $ git commit -m 'hugo init' $ git push -u origin HEAD انشر موقعك على الويب بعد أن رفعت جميع ملفات مشروعك إلى GitLab، انظر إلى الصفحة الخاصة بمشروعك. ستظهر أيقونة تشير أن GitLab يراجع ملفاتك، ربما يستغرق ذلك بضع دقائق لمعالجة ملفات مشروعك للمرة الأولى لذا تحلّ بالصبر. لكن لا تنتظر مدة طويلة جدًّا، فتحديث تلك الأيقونة لنفسها لا يُعتمد عليه. بينما تنتظر GitLab ليقوم بتجميع موقعك، اذهب لصفحة الضبط واعثر على لوحة التحكم بالصفحات (Pages). عندما يجهز موقعك ستُزوَّد برابط URL الخاص به. وكما أسلفنا سيكون العنوان مشابهًا للتالي (yourGitLabUsername.gitlab.io/yourProjectName). تصفح ذلك العنوان لترى ثمرة أعمالك. إذا حدث خطأ ما في تجميع الموقع، سيزودك GitLab بسجلات موقعك على قسم CI/CD. تصفح رسائل الخطأ لتحديد سبب المشكلة. Git والويب Hugo (أو Jekyll وغيره من الأدوات المشابهة لايتعدى كونه إحدى الطرق لاستعمال Git أدةً لنشر موقعك على الويب. يمكنك باستعمال خطافات Git على مستوى الخادم تصميم مسار لربط لمشروعك بالويب بأقل تدخل برمجي ممكن. يمكنك باستخدام النسخة المجتمعية (المجانية) من GitLab استضافة مشاريع GitLab على خادمك. كما يمكنك استخدام بدائل أخرى مثل Gitolite أو Gitea، واستعمال هذا المقال مصدرًا للإلهام بهدف إنشاء حلول خاصة بك. ترجمة -وبتصرف- للمقال Build and host a website with Git لصاحبه Seth Kenlon.1 نقطة
-
صممت برنامج بالفيجوال بيسك وصممت التقرير بالكريستال ريبورت وربطه بالأكسس لكن نسخة قديمة أعتقد office 2000 ولكن بعد ما استخدمت office اصدار حديث فان الكريستال ريبورت لا يعمل مع الأكسس1 نقطة
-
وعليكم السلام أخي @صالح السوفي إن كنت تٌجيد النقاط المذكورة في سؤالك أتوقع أنه يمكنك البدء في برمجة نظام المبيعات بدون مشاكل1 نقطة
-
1 نقطة
-
تعديل بصيط ايضا Declare this on top in MainActicitytt.java private PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallbacks;1 نقطة
-
اسف، خطا صغير في اجابة الاولة جرب هاذا. اذا تريد ان يقرا الكود من الsms اوتوماتك، عدل زيادا. الحين يجب ان تدخل الكود من الsms بالكيبورد. MainActivitytt.java public class MainActivitytt extends AppCompatActivity { private Spinner spinner; private EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); spinner = findViewById(R.id.spinnerCountries); spinner.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, CountryData.countryNames)); editText = findViewById(R.id.editTextPhone); findViewById(R.id.buttonContinue).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String code = CountryData.countryAreaCodes[spinner.getSelectedItemPosition()]; String number = editText.getText().toString().trim(); if (number.isEmpty() || number.length() < 6) { editText.setError("Valid number is required"); editText.requestFocus(); return; } String phoneNumber = "+" + code + number; PhoneAuthProvider.getInstance().verifyPhoneNumber( phoneNumber, 60, TimeUnit.SECONDS, TaskExecutors.MAIN_THREAD, mCallBack ); } }); mCallBack = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { @Override public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) { super.onCodeSent(s, forceResendingToken); new android.os.Handler().postDelayed( new Runnable(){ public void run(){ } }, 10000); Intent intent = new Intent(MainActivitytt.this, VerifyPhoneActivity.class); intent.putExtra("AuthCredentials", s); startActivity(intent); finish(); } @Override public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) { signInWithCredential(phoneAuthCredential); } @Override public void onVerificationFailed(FirebaseException e) { Toast.makeText(VerifyPhoneActivity.this, e.getMessage(), Toast.LENGTH_LONG).show(); } }; } private void signInWithCredential(PhoneAuthCredential credential) { mAuth.signInWithCredential(credential) .addOnCompleteListener(new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { Intent intent = new Intent(MainActivitytt.this, ProfileActivitytt.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); } else { Toast.makeText(VerifyPhoneActivity.this, task.getException().getMessage(), Toast.LENGTH_LONG).show(); } } }); } @Override protected void onStart() { super.onStart(); if (FirebaseAuth.getInstance().getCurrentUser() != null) { Intent intent = new Intent(this, ProfileActivitytt.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); } } } VerifyPhoneActivity.java public class VerifyPhoneActivity extends AppCompatActivity { private String verificationId; private FirebaseAuth mAuth; private ProgressBar progressBar; private EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_verify_phone); mAuth = FirebaseAuth.getInstance(); progressBar = findViewById(R.id.progressbar); editText = findViewById(R.id.editTextCode); verificationId = getIntent().getStringExtra("AuthCredentials"); findViewById(R.id.buttonSignIn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String code = editText.getText().toString().trim(); if (code.isEmpty() || code.length() < 6) { editText.setError("Enter code..."); editText.requestFocus(); return; } verifyCode(code); } }); } private void verifyCode(String code) { PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code); signInWithCredential(credential); } private void signInWithCredential(PhoneAuthCredential credential){ mAuth.signInWithCredential(credential) .addOnCompleteListener(VerifyPhoneActivity.this, new OnCompleteListener<AuthResult>(){ public void onComplete(@NonNull Task<AuthResult> task){ if(task.isSuccessful()){ } else { if(task.getException() instanceof FirebaseAuthInvalidCredentialsException){ } } } }); } }1 نقطة
-
عدلت الكود. جرب هاذا. اذا تريد ان يقرا الكود من الsms اوتوماتك، عدل زيادا. الحين يجب ان تدخل الكود من الsms بالكيبورد. MainActivitytt.java public class MainActivitytt extends AppCompatActivity { private Spinner spinner; private EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); spinner = findViewById(R.id.spinnerCountries); spinner.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, CountryData.countryNames)); editText = findViewById(R.id.editTextPhone); findViewById(R.id.buttonContinue).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String code = CountryData.countryAreaCodes[spinner.getSelectedItemPosition()]; String number = editText.getText().toString().trim(); if (number.isEmpty() || number.length() < 6) { editText.setError("Valid number is required"); editText.requestFocus(); return; } String phoneNumber = "+" + code + number; PhoneAuthProvider.getInstance().verifyPhoneNumber( phoneNumber, 60, TimeUnit.SECONDS, TaskExecutors.MAIN_THREAD, mCallBack ); } }); mCallBack = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { @Override public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) { super.onCodeSent(s, forceResendingToken); new android.os.Handler().postDelayed( new Runnable(){ public void run(){ } }, 10000); Intent intent = new Intent(MainActivitytt.this, VerifyPhoneActivity.class); intent.putExtra("AuthCredentials", s); startActivity(intent); finish(); } @Override public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) { signInWithCredential(phoneAuthCredential); } @Override public void onVerificationFailed(FirebaseException e) { Toast.makeText(VerifyPhoneActivity.this, e.getMessage(), Toast.LENGTH_LONG).show(); } }; } private void signInWithCredential(PhoneAuthCredential credential) { mAuth.signInWithCredential(credential) .addOnCompleteListener(new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { Intent intent = new Intent(VerifyPhoneActivity.this, ProfileActivitytt.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); } else { Toast.makeText(VerifyPhoneActivity.this, task.getException().getMessage(), Toast.LENGTH_LONG).show(); } } }); } @Override protected void onStart() { super.onStart(); if (FirebaseAuth.getInstance().getCurrentUser() != null) { Intent intent = new Intent(this, ProfileActivitytt.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); } } } VerifyPhoneActivity.java public class VerifyPhoneActivity extends AppCompatActivity { private String verificationId; private FirebaseAuth mAuth; private ProgressBar progressBar; private EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_verify_phone); mAuth = FirebaseAuth.getInstance(); progressBar = findViewById(R.id.progressbar); editText = findViewById(R.id.editTextCode); verificationId = getIntent().getStringExtra("AuthCredentials"); findViewById(R.id.buttonSignIn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String code = editText.getText().toString().trim(); if (code.isEmpty() || code.length() < 6) { editText.setError("Enter code..."); editText.requestFocus(); return; } verifyCode(code); } }); } private void verifyCode(String code) { PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code); signInWithCredential(credential); } private void signInWithCredential(PhoneAuthCredential credential){ mAuth.signInWithCredential(credential) .addOnCompleteListener(VerifyPhoneActivity.this, new OnCompleteListener<AuthResult>(){ public void onComplete(@NonNull Task<AuthResult> task){ if(task.isSuccessful()){ } else { if(task.getException() instanceof FirebaseAuthInvalidCredentialsException){ } } } }); } }1 نقطة
-
1 نقطة
-
1 نقطة
-
سبحان الله كنت أبحث عن هذا الموضوع منذ فترة، شكراً لحسوب على هذة المواضيع وشكراً للكاتب.1 نقطة
-
مازلتُ أتعلم لُغة HTML واُريد معرفة من أين تأتي هذهِ الصورة او الأيقونة التي تظهر بجانب عنوان الموقع في التبويبه بأعلى المتصفح؟1 نقطة
-
إنها مسألة في غاية البساطه. هذا عن طريق استخدام الوسم LINK مع اضافة سمة العلاقة REL وسمة الرابط او المسار HREF ونوع الملف إذا كان صوره او ايقونة TYPE <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" /> لنرى مثال كامل: <!DOCTYPE html> <html> <head> <title>أكاديمية حسوب</title> <link rel="shortcut icon" href="./favicon.ico" type="image/x-icon" /> </head> <body> محتويات الموقع </body> </html> هذا مثال بسيط يوضح المكان الصحيح الذي يتم وضع وسم link بهِ وهو بداخل الوسم head ولا يُنصح بوضعه خارج هذا الوسم لان هذا هو مكانه الصحيح. وكما ترى قمنا بوضع سمة rel ومحتواها هو shortcut ثم مسافة icon وتعني هذه الكلمات انها علاقة طريقة مختصره لرمز او لأيقونة. ثم استخدما href لجلب الصوره او الأيقونه التي ستظهر بجانب عنوان الموقع وغالباً يكون المسار هو ./favicon.ico وهذا اﻷسم افتراضي وليس اجباري ولكن انصح بتسميته هكذا ووضعه بجوار الملف الأساسي لموقعك index.html ولا تضعهُ بداخل مجلد آخر على سبيل المثال img/favicon.ico. لماذا؟! هذا ﻷن المتصفحات الحديثة تقوم بالبحث تلقائي عن مسار هذه اﻷيقونه لوضعها كشعار بجانب عنوان الموقع إذا كنت نسيت او تعمدت عدم وضع هذا الوسم المسؤل عن اظهار تلك اﻷيقونه. ثم type التي تحتوي على هذا النوع image/x-icon وهذا ليس إلزامي ويمكنك تجاهل هذه النقطه. من فضلك تفقد الملف المُرفق favicon.zip1 نقطة