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

كل الأنشطة

تحدث تلقائيًا

  1. الساعة الماضية
  2. أولاً نفس المدرب يمكن أن يشرح عدة مسارات من دورات مختلفة حسب التخصص الخاص به وبالطبع هناك مسارات مشتركة بين الدورات المختلفة وذلك سبب وجود نفس الأسلوب في الشرح وما إلى ذلك وبالنسبة للشرح إذا كان الشرح يبدو لك بطيئاً ولا تفضل ذلك فيمكنك تعديل سرعة الفيديو ليصبح مستوى سرعة التشغيل 1.5x أو أكثر كما تحب وبالطبع فلكل مدرب اسلوب في الشرح ولكن إذا واجهت أي مشكلة في فهم جزء معين في الشرح فيوجد فريق من المدربين لمساعدتك في شرح أي جزء من الدورة أو أي مشكلة تواجهك لذلك لا تتردد في طرح الأسئلة والاستفسارات عن أي مفهوم غير واضح أو أي مشكلة تواجهك.
  3. اليوم
  4. البارحة
  5. مسار أساسيات بايثون لا غنى عن تعلمه بالكامل من البداية إلى النهاية، فذلك ما يترتب عليه باقي محتوى الدورة، وللعلم الأساسيات أهم من جانغو وأي تقنية أخرى، لذا الإهتمام بها والتطبيق عليها بشكل مُكثف هو ما يجعل منك مبرمج جيد ومُلم بالأساسيات المبني عليها أي تقنية أخرى قائمة على لغة بايثون. لذا الخيار يعود إليك، إما المتابعة أو الإنتقال للمسار الذي تريده، وللعلم تنفيذ التطبيقات العملية ورؤية تقدمك وتحسن المستوى سيشجعك على الاستمرار، تستطيع السؤال عن تطبيقات عملية حول مفهوم معين لتوظيف ما تعلمته.
  6. في حال تم إضافة ملفات بعد عملية الحذف، فستكون نسبة استرجاع الملفات المحذوفة ضعيفة، حيث يتم استبدال البيانات المحذوفة بالبيانات الجديدة عند النقل. من البرامج المجانية الجيدة هو Recuva. والثاني هو برنامج DMDE وهو ليس مجاني تمامًا حيث يسمح لك باسترجاع 4000 ملف لكل عملية بحث أي تستطيع تكرار العملية، وذلك البرنامج هو أفضل من Recuva لكنه ليس مجاني. تحذير: عند استرجاع الملفات عليك حفظها في مكان آخر غير المكان الذي تم حذفها منه حتى لا يتم الكتابة على الملفات المحذوفة وفقدانها للأبد، فعند نقل ملفات على الهارديسك يتم استبدال الملفات المحذوفة بالملفات الجديدة.
  7. نعم يمكنك ذلك فأغلب الدورات هنا يكون القسم الأول منها عبارة عن تعليم الأساسيات للغة البرمجة التي سيتم إستعمالها و بالتالي لن تجد مشكلة في هذا، بالنسبة للعمل من الأيباد نعم يمكنك ذلك كبداية فقط و ستعتمد بشكل أكثر على google colab و لكن هناك بعض الأدوات أو البرامج التي تتطلب حاسوبا للتنفيذ العملي، لذا يفضل امتلاك حاسوب للاستفادة الكاملة من جميع الدروس. في الأخير بإمكانك العثور على فرص عمل في مجال الذكاء الاصطناعي والعمل عن بعد بعد اكتساب المهارات اللازمة، و بالتأكيد سيتكفل فريق من الأكاديمية بمرافقتك في هذا الأمر، فهناك طلب متزايد على خبراء الذكاء الاصطناعي والمحللين، ويمكنك العمل في مجالات متعددة مثل تحليل البيانات، تطوير النماذج، والتعلم الآلي.
  8. السلام عليكم أريد أن أشارك في دورة الذكاء الاصطناعي ولكن لدي بعض الأسئلة ليس لدي أي خبرة في الحاسوب سوى الخبرة الأساسية فهل تنصحني بالمشاركة وهل أستطيع المشاركة عن طريق الآيباد أو الموبايل وهل أستطيع بعدها إيجاد عمل علما أني سأغير مهنتي من التربية إلى العمل عن بعد الحافز موجود
  9. ممكن نتواصل معك واتس او ماسنجر اخ ياسر؟
  10. اخ ياسر في عندك واتس او ماسنجر فينا نحكيك عليه
  11. هناك العديد من البرامج التي يمكنك استخدامها أشهرها برنامج Recuva هو برنامج مجاني وسهل الاستخدام، يمكنه استعادة الملفات المحذوفة من أجهزة USB، وأيضًا من الحواسيب والأجهزة الأخرى و متاح لنظام التشغيل ويندوز. و أيضا برنامج EaseUS Data Recovery Wizard برنامج قوي لاستعادة البيانات، يدعم استعادة الملفات من مجموعة واسعة من الأجهزة، بما في ذلك أجهزة USB، و يوفر نسخة مجانية بحد معين من الاستعادة ونسخة مدفوعة بمزايا كاملة، و متاح لنظامي التشغيل ويندوز وماك. قبل استخدام أي من هذه البرامج، يفضل تجنب الكتابة أو إجراء تغييرات على جهاز USB لتجنب الكتابة فوق البيانات المحذوفة التي ترغب في استعادتها.
  12. الخطأ هنا يتعلق بأنك تحاول استخدام دالة union مع كائن من نوع tuple. ولكن، tuple لا يحتوي على دالة union. دالة union متوفرة فقط في الكائنات من نوع set. إليك الطريقة الصحيحة لاستخدام union مع مجموعتين: f = {'t', 'y', 'iii', 'r'} d = {'s', 'f', 'k'} result = f.union(d) print(result) لاحظ أننا قمنا بتحويل المتغيرين f و d إلى مجموعات باستخدام {} بدلا من (). إذا كنت تحتاج إلى استخدام tuples، لا يمكنك استخدام union مباشرة. يمكنك بدلا من ذلك تحويلها إلى مجموعات: f = ('t', 'y', 'iii', 'r') d = ('s', 'f', 'k') result = set(f).union(d) print(result) بذلك، ستتمكن من دمج القيمتين بدون مشاكل.
  13. فى الدورات يتم الشرح بالتأكيد بشكل متدرج ويتم شرح أكثر التفاصيل المهمة لتكون قادر على بناء مشاريع بشكل جيد وهى التفاصيل المهمة لك فى هذه المرحلة ولكن فى بعض الأحوال يتم تجاوز بعض التفاصيل ربما تم شرحها فى مسار والمسار الذى تدرسه يعتمد على المسار السابق فالمدرب يفترض أنك درست المسار السابق ودرست هذه التفاصيل فليس هناك داعى لإعادة التفاصيل مرة أخرى حتى لا يتم التطويل فى الفيديوهات بدون داعى وإذا كان لديك أى سؤال أوى جزئية لا تفهمها بشكل جيد من المدرب بعد إعادة الفيديو مثلا أو المدرب لم يذكر تفصيلة معينة يمكنك إضافة تعليق فى صندوق التعليقات وسيتم الرد عليك من قبل المدربين بشرح مفصل والرد على إستفسارات بشكل دقيق. أما بخصوص إمكانية تغيير المدرب الدورات عبارة عن فيديوهات مسجلة مسبقا ويتم تحديثها كل فترة وإضافة أشياء جديدة مهمة يحتاج لها سوق العمل، ولديك صلاحية الوصول لها ومشاهدتها فلا يمكن تغيير المدرب يمكنك إضافة سؤالك فى صندوق التعليقات وسيتم الرد عليك من قبل المدربين بشرح مفصل والرد على إستفساراتك والشرح لك أى جزئية لم تستوعبها من الفيديو بشكل جيد.
  14. أشكركم من القلب على معلوماتكم القيمة جدا جدااا .
  15. هل تكفي اساسيات البايثون وصلت الى التعامل مع ملفات excel للانتقال الى اساسيات جانجو
  16. شكرااا لحضراك وشكراا جدا ان حضرتك وضحت الفرق بين 'lloyd' و 'elkan جزاك الله لك خير
  17. يجب مشاركة الكود معنا لنستطيع المساعده بشكل افضل بالاضافه للغات او الفريمورك الذي تعملي معه بحيث ايضا نستطيع تقديم مثال توضيحي لمساعدتك حل عام يمكنك اتباعه وهو استخدام خاصية index في القائمة لتحديد الرسم الذي تريد طباعته بدلاً من طباعة كل الرسومات في القائمة
  18. ممكن تدريج في الشرح والشرح بالتفاصيل ... وهل يمكن ان اغير المدرب؟
  19. سبب المشكلة هو فشل التحقق من عدم وجود قيمة فارغة في حقل name في جدول Category1 عند إضافة كتاب جديد، وكذلك مشكلة تكرار الفئة عند تحديث الصفحة، يمكنك إجراء التعديلات التالية: تأكد من إضافة الفئة فقط عند وجود قيمة مدخلة، و في الكود الخاص بـ views.py، تأكد من أنك تتحقق من وجود قيمة في الحقل المدخل للفئة قبل محاولة حفظها في قاعدة البيانات. يمكنك تعديل الكود في الدالة index ليكون كالتالي: def index(request): if request.method == "POST": add = BookForm(request.POST, request.FILES) if add.is_valid(): add.save() addcate = request.POST.get("cate") if addcate: # تحقق من أن هناك قيمة مدخلة قبل إضافة الفئة addca = Category1(name=addcate) addca.save() context = { 'book': Book.objects.all(), 'cate': Category1.objects.all(), 'form': BookForm(), 'form1': CategoryForm(), } return render(request, "pages/conten.html", context) و تأكد من أن تعريف النموذج في forms.py لفئة CategoryForm يستخدم ModelForm بدلاً من forms.Form. التعديل كالتالي: from django import forms from .models import Book, Category1 class CategoryForm(forms.ModelForm): class Meta: model = Category1 fields = '__all__' widgets = { 'name': forms.TextInput(attrs={'class': 'form-control'}), } class BookForm(forms.ModelForm): class Meta: model = Book fields = '__all__' widgets = { 'titile': forms.TextInput(attrs={'class': 'form-control'}), 'author': forms.TextInput(attrs={'class': 'form-control'}), 'photo_book': forms.FileInput(attrs={'class': 'form-control'}), 'photo_author': forms.FileInput(attrs={'class': 'form-control'}), 'pages': forms.NumberInput(attrs={'class': 'form-control'}), 'price': forms.NumberInput(attrs={'class': 'form-control'}), 'ratelday': forms.NumberInput(attrs={'class': 'form-control'}), 'rateltime': forms.NumberInput(attrs={'class': 'form-control'}), 'statue': forms.Select(attrs={'class': 'form-control'}), 'categry': forms.Select(attrs={'class': 'form-control'}), # تعديل اسم الحقل هنا } و أيضا تأكد من أنك تستخدم الاسم الصحيح للحقل categry في BookForm. لاحظ أن هناك مسافة إضافية في تعريف الحقل في كودك الأصلي. قم بتعديل الحقل ليكون كالتالي: 'categry': forms.Select(attrs={'class': 'form-control'}), بهذه الطريقة تكون قد قمت بإجراء التعديلات الضرورية لحل مشكلة عدم وجود قيمة في الحقل name في جدول Category1 عند إضافة كتاب جديد، وأيضًا قمت بحل مشكلة تكرار الفئة عند تحديث الصفحة.
  20. المشكلة هي أن قيمة المعلمة algorithm في دالة KMeans يجب أن تكون إما 'lloyd' أو 'elkan'. لكن في الكود الخاص بك تم تعيينها إلى 'auto'، ، لحل هذه المشكلة يجب تعديل الكود لتغيير قيمة المعلمة algorithm إلى 'lloyd' أو 'elkan'. بالنسبة للفرق بينهما خوارزمية ليويد (Lloyd's algorithm) تعتبر الطريقة الكلاسيكية والأساسية لتنفيذ خوارزمية K-Means، وتعرف أيضا بـ "Forgy's algorithm". و تعتمد على تحديث المراكز من خلال تعيين كل نقطة إلى أقرب مركز، ومن ثم تحديث مراكز الكتل بناء على متوسط النقاط المخصصة لكل مركز. عادة ما تكون أسرع في الحالات التي تكون فيها الأبعاد قليلة. بالنسبة لخوارزمية إلكان (Elkan's algorithm) تعتبر تحسينا لخوارزمية ليويد الكلاسيكية، وتستخدم حدودا ثلاثية لتقليل عدد الحسابات المطلوبة عند تعيين النقاط إلى المراكز، يمكن أن تكون أسرع في الحالات التي تحتوي على عدد كبير من الأبعاد أو عدد كبير من المجموعات. استخدام أي من الخوارزميتين يعتمد على طبيعة البيانات والأداء المطلوب. في معظم الحالات، خوارزمية ليويد تكون كافية وتعمل بكفاءة. إذا كانت البيانات تحتوي على عدد كبير من الأبعاد أو كانت هناك حاجة لتحسين الأداء، يمكن تجربة خوارزمية إلكان.
  21. السلام عليكم صنعت مشروع بواسطة فيديو من اليوتيوب .. لتطوير مهارتي عبارة عن نظام ادارة مكتبة المشكلة هي انه عند اضافة كتاب جديد يظهر لي هذا الخطأ وعند عمل refrash لصفحة تظهر category اكثر من مرة بمعني انه يظهر مربع اخر له نفس الاسم رغم انني لم اضيفه فما هو الحل ها هو كود models from django.db import models # Create your models here. class Category1(models.Model): name = models.CharField(max_length=50) def __str__(self): return self.name class Book(models.Model): x = [ ("avab","avab"), ("ren","ren"), ("sale","sale"), ] titile = models.CharField(max_length=50) author = models.CharField(max_length=50) photo_book = models.ImageField(upload_to="photes", null=True, blank=True,default="db.jpg") photo_author = models.ImageField(upload_to="photes", null=True, blank=True,default="a.jpg") pages = models.IntegerField(null=True, blank=True) price = models.DecimalField(max_digits=10,decimal_places=3, null=True, blank=True) ratelday = models.DecimalField(max_digits=10,decimal_places=3, null=True, blank=True) rateltime = models.IntegerField(null=True, blank=True) active = models.BooleanField(default=True) statue = models.CharField(max_length=50,choices=x,null=True, blank=True) categry = models.ForeignKey(Category1,on_delete=models.PROTECT,null=True, blank=True) def __str__(self): return self.titile كود views from django.shortcuts import render, redirect, get_object_or_404 from .models import * from .forms import * # Create your views here. def index(request): if request.method == "POST": add = BookForm(request.POST, request.FILES) if add.is_valid(): add.save() if request.method == "POST": addcate = request.POST.get("cate") addca = Category1(name=addcate) addca.save() context = { 'book':Book.objects.all(), 'cate':Category1.objects.all(), 'form':BookForm(), 'form1':CategoryForm(), } return render(request, "pages/conten.html",context) def books(request): context = { 'book':Book.objects.all(), 'cate':Category1.objects.all(), 'formcat':CategoryForm(), } return render(request, "pages/books.html",context) def update(request, id): book_id = Book.objects.get(id=id) if request.method == "POST": book_save = BookForm(request.POST, request.FILES, instance=book_id) if book_save.is_valid(): book_save.save() return redirect('/') else: book_save = BookForm(instance=book_id) context = { 'form':book_save, } return render(request, "pages/update.html", context) def delete(request, id): book_delete = get_object_or_404(Book, id=id) if request.method == "POST": book_delete.delete() redirect('/') return render(request, "pages/delete.html") كود forms from django import forms from .models import Book, Category1 class CategoryForm(forms.Form): class Meta: model = Category1 fields = '__all__' widgets = { 'name':forms.TextInput(attrs={'class':'form-control'}), } class BookForm(forms.ModelForm): class Meta: model = Book fields = '__all__' widgets = { 'titile':forms.TextInput(attrs={'class':'form-control'}), 'author':forms.TextInput(attrs={'class':'form-control'}), 'photo_book':forms.FileInput(attrs={'class':'form-control'}), 'photo_author':forms.FileInput(attrs={'class':'form-control'}), 'pages':forms.NumberInput(attrs={'class':'form-control'}), 'price':forms.NumberInput(attrs={'class':'form-control'}), 'ratelday':forms.NumberInput(attrs={'class':'form-control'}), 'rateltime':forms.NumberInput(attrs={'class':'form-control'}), 'statue':forms.Select(attrs={'class':'form-control'}), 'categry ':forms.Select(attrs={'class':'form-control'}), } كود conten.html {% extends 'base.html' %} {% block content %} <div style="direction: rtl;" class="wrapper"> <!-- Content Wrapper. Contains page content --> <div class="content-wrapper"> <!-- Content Header (Page header) --> <!--الاحصائيات--> <div class="content"> <div class="container-fluid"> <div class="row"> <div class="col-lg-6"> <div class="card"> <div class="card-header border-0"> <div class="d-flex justify-content-between"> <h3 class="card-title">اجمالي عدد الكتب</h3> </div> </div> <div class="card-body"> <div class="d-flex"> <p class="d-flex flex-column"> <span class="text-bold text-lg">500</span> <span>اجمالي عدد الكتب</span> </p> </div> <!-- /.d-flex --> <div class="position-relative mb-4"> <canvas id="visitors-chart" height="200"></canvas> </div> </div> </div> <!-- /.card --> </div> <!-- /.col-md-6 --> <div class="col-lg-6"> <div class="card"> <div class="card-header border-0"> <div class="d-flex justify-content-between"> <h3 class="card-title">الارباح</h3> </div> </div> <div class="card-body"> <div class="d-flex"> <p class="d-flex flex-column"> <span id="totalsalarys" class="text-bold text-lg">$250</span><br></p> </div> <!-- /.d-flex --> <div class="position-relative mb-4"> <canvas id="sales-chart" height="160"></canvas> </div> <div class="d-flex flex-row justify-content-end"> <span class="mr-2"> <i class="fas fa-square text-primary"></i> الاربح من بيع الكتب <p id="soldtotals"></p> </span> <span> <i class="fas fa-square text-gray"></i> الارباح من استعارة الكتب <p id="rentedtotals"></p> </span> </div> </div> </div> </div> <!-- /.col-md-6 --> </div> <!-- /.row --> <!-- form add books --> <div class="row m-1 mb-3"> <a href="#bookform" class="btn btn-primary" data-toggle="collapse">+ اضافة كتاب</a> </div> <div id="bookform" class="card card-primary collapse"> <div class="card-header"> <h3 class="card-title">اضافة كتاب</h3> </div> <!-- /.card-header --> <!-- form start --> <form method="POST" enctype="multipart/form-data" > {% csrf_token %} <div class="card-body"> {{form}} </div> <!-- /.card-body --> <div class="card-footer"> <button type="submit" class="btn btn-primary">اضافة</button> </div> </form> </div> <!-- /.card --> </div> <!-- end form add books --> <!-- تصنيفات--> <div class="row justify-content-center mb-3"> <div class="col-4 "> <ul class="nav"> {% for cat in cate %} <li class="nav-item cat{{cat.id}}"> <a id="" class="nav-link bg-primary" href="#">{{cat.name}}</a> </li> {% endfor %} </ul> </div> </div> <!-- books --> <div class="row"> {% for x in book %} <!-- الكتب --> <div id="" class="col-md-4 bookhide book{{x.categry.id}} book{{x.statue}}"> <!-- Widget: user widget style 1 --> <div id="" class="card card-widget widget-user "> <!-- Add the bg color to the header using any of the bg-* classes --> <!-- قائمة منسدلة --> <div style="position: absolute;" class="btn-group"> <button type="button" class="btn dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <span class="sr-only">Toggle Dropdown</span> </button> <div class="dropdown-menu"> <a class="dropdown-item" href="{% url "update" x.id %}">تعديل</a> <a class="dropdown-item" href="{% url "delete" x.id %}">حذف</a> <!-- Button trigger modal --> </div> </div> {% if x.photo_book %} <div style="background: url({{x.photo_book.url}});background-size:cover;" class="widget-user-header bg-info"> {% else %} <div class="widget-user-header bg-info"></div> {% endif %} <h3 class="widget-user-username">{{x.titile}}</h3> <h5 class="widget-user-desc">{{x.author}}</h5> </div> <div class="widget-user-image"> {% if x.photo_author %} <img style="width:100px; height: 100px;" class="img-circle elevation-2" src="{{x.photo_author.url}}" alt="User Avatar"> {% endif %} </div> <div class="card-footer"> <div class="row"> <div class="col-sm-4 border-right"> <div class="description-block"> <h5 class="description-header">{{x.pages}}</h5> <span class="description-text">صفحة</span> </div> <!-- /.description-block --> </div> <!-- /.col --> <div class="col-sm-4 border-right"> <div class="description-block"> {% if x.price %} <h5 class="description-header">{{x.price}}</h5> <span class="description-text">السعر</span> {% elif x.ratelday %} <h5 class="description-header">{{x.ratelday}}</h5> <span class="description-text">في اليوم</span> {% endif %} </div> <!-- /.description-block --> </div> <!-- /.col --> <div class="col-sm-4"> <div class="description-block"> {% if x.statue == "avab" %} <h5 class="description-header text-success">{{x.statue}}</h5> <span class="description-text">الحالة</span> {% elif x.statue == "ren" %} <h5 class="description-header text-warning">{{x.statue}}</h5> <span class="description-text">الحالة</span> {% else %} <h5 class="description-header text-danger">{{x.statue}}</h5> <span class="description-text">الحالة</span> {% endif %} </div> <!-- /.description-block --> </div> <!-- /.col --> </div> <!-- /.row --> </div> </div> <!-- /.widget-user --> </div> <!-- نهاية الكتاب --> {% endfor %} <div class="row"> <div class="col text-center"> <!--اضف صورة هنا في حالة عدم وجود كتب--> </div> </div> </div> </div> </div> <!-- /.container-fluid --> </div> <!-- /.content --> </div> <!-- /.content-wrapper --> {% endblock %} كود sidebar.html <!-- في المكان ده هحط سلايد بار --> <!-- Main Sidebar Container --> <aside style="position: fixed;" class="main-sidebar sidebar-dark-primary elevation-4"> <!-- Brand Logo --> <a href="{% url 'index' %}" class="brand-link"> <span class="brand-text font-weight-light">NOUVIL</span> </a> <!-- Sidebar --> <div class="sidebar"> <!-- Sidebar user panel (optional) --> <div class="user-panel mt-3 pb-3 mb-3 d-flex"> <div class="image"> </div> <div class="info"> <a href="{% url 'index' %}" class="d-block">Abdelrahman Gamal</a> </div> </div> <!-- Sidebar Menu --> <nav class="mt-2"> <ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false"> <li class="nav-item"> <a href="{% url 'books' %}" class="nav-link"> <i class="nav-icon fas fa-th"></i> <p> New Books </p> </a> </li> <li class="nav-item has-treeview"> <a href="#" class="nav-link"> <i class="nav-icon fas fa-copy"></i> <p> Category <i class="fas fa-angle-left right"></i> </p> </a> <ul class="nav nav-treeview"> <li class="nav-item"> <a id="addcat" href="#" class="nav-link"> <i class="fa fa-plus "></i> <p class="text-light"> Add New </p> </a> </li> <form id="cat" method="POST"> <div id="catinput"> {% csrf_token %} <input type="text" name="cate"> <br> <button type="submit" class="btn btn-success">save</button> <button id="backcat" class="btn btn-primary ">back</button> </div> </form> {% for cat in cate %} <li style="cursor: pointer;" class="nav-item cat{{cat.id}}"> <a id="" class="nav-link"> <i class="far fa-circle nav-icon"></i> <p>{{cat.name}}</p> </a> </li> {% endfor %} </ul> </li> <li class="nav-header">الكتب المستعارة</li> <li style="cursor: pointer;" class="nav-item sale"> <a id="statusSold" class="nav-link"> <i class="nav-icon far fa-circle text-danger"></i> <p class="text">تم بيعه</p> </a> </li> <li style="cursor: pointer;" class="nav-item ren"> <a id="" class="nav-link"> <i class="nav-icon far fa-circle text-warning"></i> <p>تم استعارته</p> </a> </li> <li style="cursor: pointer;" class="nav-item avab"> <a id="" class="nav-link"> <i class="nav-icon far fa-circle text-info"></i> <p>متاح</p> </a> </li> </ul> </nav> <!-- /.sidebar-menu --> </div> <!-- /.sidebar --> </aside> كود base.html {% load static %} <!DOCTYPE html> <html lang="ar"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="x-ua-compatible" content="ie=edge"> <title>Nouvil</title> <link rel="stylesheet" href="{% static 'plugins/fontawesome-free/css/all.min.css' %}"> <!-- Font Awesome Icons --> <link rel="stylesheet" href="{% static 'plugins/jquery_datepacker/jquery_ui.css' %}"> <!-- IonIcons --> <link rel="stylesheet" href="http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css"> <!-- Theme style --> <link rel="stylesheet" href="{% static 'dist/css/adminlte_ar.min.css' %}"> <!-- Google Font: Source Sans Pro --> <link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700" rel="stylesheet"> </head> <body dir="rtl" class="hold-transition sidebar-mini"> {% include 'parts/nav.html' %} {% include 'parts/sidebar.html' %} {% block content %} {% endblock %} {% include 'parts/footer.html' %} </div> <!-- ./wrapper --> <!-- REQUIRED SCRIPTS --> <script src="{% static 'plugins/jquery_datepacker/jquery_ui.js' %}"></script> <!-- jQuery --> <script src="{% static 'plugins/jquery/jquery.min.js' %}"></script> <!-- Bootstrap --> <script src="{% static 'plugins/bootstrap/js/bootstrap.bundle.min.js' %}"></script> <!-- AdminLTE --> <script src="{% static 'dist/js/adminlte.js' %}"></script> <!-- OPTIONAL SCRIPTS --> <script src="{% static 'plugins/chart.js/Chart.min.js' %}"></script> <script src="{% static 'dist/js/demo.js' %}"></script> <!--<script src="dist/js/pages/dashboard3.js'"></script> --> <script> $(document).ready(function(){ $('#myModal').on('shown.bs.modal', function () { $('#myInput').trigger('focus') }); /*here i will make loop for get id category and status for contact with books */ /*حساب اجمالي الارباح و هي عبارة عن حاصل جمع سعر الكتب عند البيع بالاضافة الى سعر استعارة الكتاب*/ }); </script> <script> $(function () { 'use strict' var ticksStyle = { fontColor: '#495057', fontStyle: 'bold' } var mode = 'index' var intersect = true var $salesChart = $('#sales-chart') var salesChart = new Chart($salesChart, { type : 'bar', data : { labels : [ 'تفاصيل الارباح', ], datasets: [ { backgroundColor: '#007bff', borderColor : '#007bff', data : [ '50', ] }, { backgroundColor: '#ced4da', borderColor : '#ced4da', data : [ '30', ] } ] }, options: { maintainAspectRatio: false, tooltips : { mode : mode, intersect: intersect }, hover : { mode : mode, intersect: intersect }, legend : { display: false }, scales : { yAxes: [{ // display: false, gridLines: { display : true, lineWidth : '4px', color : 'rgba(0, 0, 0, .2)', zeroLineColor: 'transparent' }, ticks : $.extend({ beginAtZero: true, // Include a dollar sign in the ticks callback: function (value, index, values) { if (value >= 1000) { value /= 1000 value += 'k' } return '$' + value } }, ticksStyle) }], xAxes: [{ display : true, gridLines: { display: false }, ticks : ticksStyle }] } } }); var pieChart = document.getElementById('visitors-chart').getContext('2d') var myPieChart = new Chart(pieChart, { type: 'pie', data: { datasets: [{ data: ['35','25','40'], backgroundColor :["#27c100","#f3545d","#fdaf4b"], borderWidth: 10, }], labels: ['Available', 'Sold', 'Rented'] }, options : { responsive: true, maintainAspectRatio: false, legend: { position : 'bottom', labels : { fontColor: '#000', fontSize: 15, usePointStyle : true, padding:30 } }, pieceLabel: { render: 'percentage', fontColor: 'white', fontSize: 14, }, } }) }) </script> <script> {% for x in book %} $(".cat{{x.categry.id}}").click(function(){ $(".bookhide").hide() $(".book{{x.categry.id}}").show() }); $(".book{{x.statue}}").click(function(){ $(".bookhide").hide() $(".book{{x.statue}}").show() }); {% endfor %} </script> </body> </html> واشكركم علي اجابتكم لسؤالي
  22. السلام عليكم ده البيانات المستخدما وده الكود from pandas import read_csv from sklearn.cluster import KMeans data = read_csv("Customer.csv") kmeans_model = KMeans(n_clusters=5 , init='k-means++' , random_state=33 , algorithm='auto') fit = kmeans_model.fit(data) print(f"KMeans centers are: {fit.cluster_centers_}") print(f"Kmeans labels are: {fit.labels_}") print(f"Kmeans intertia is: {fit.inertia_}") Customer.csv
  23. أول شيء، لازم نضبط إعدادات البريد في Laravel. ستحتاج تعدل في ملف .env عشان تضيف بيانات خادم البريد (SMTP). الخطوة 1: تعديل ملف البيئة .env ملف .env هو المكان الذي تحفظ فيه إعدادات البيئة الخاصة بمشروعك، مثل إعدادات قاعدة البيانات والبريد الإلكتروني. تحتاج لإعداد بيانات SMTP الخاصة بخادم البريد الذي ستستخدمه لإرسال الرسائل. افتح ملف .env الموجود في جذر مشروعك وأضف الإعدادات التالية (استبدل بالقيم المناسبة): MAIL_MAILER=smtp MAIL_HOST=smtp.example.com # عنوان خادم البريد (مثل smtp.gmail.com إذا كنت تستخدم Gmail) MAIL_PORT=587 # المنفذ المستخدم (587 لـ TLS، 465 لـ SSL) MAIL_USERNAME=your_email@example.com # بريدك الإلكتروني MAIL_PASSWORD=your_email_password # كلمة المرور لبريدك الإلكتروني MAIL_ENCRYPTION=tls # نوع التشفير (tls أو ssl) MAIL_FROM_ADDRESS=your_email@example.com # عنوان البريد الذي سترسل منه الرسائل MAIL_FROM_NAME="${APP_NAME}" # اسم المرسل الذي سيظهر في البريد الإلكتروني الخطوة 2: إنشاء بريد إلكتروني جديد Mailable هو كلاس مخصص في Laravel لتسهيل عملية إرسال البريد الإلكتروني. لإنشاء Mailable جديد، افتح التيرمنال في جذر مشروعك واستخدم الأمر التالي: php artisan make:mail ExampleMail هذا الأمر سينشئ ملفًا جديدًا في app/Mail/ExampleMail.php. هذا الملف سيحتوي على القالب الأساسي للرسالة التي سترسلها. الخطوة 3: تخصيص البريد الان، نفتح الملف ExampleMail.php ونخصصه عشان نضيف التفاصيل اللي نريدها في البريد: <?php namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class ExampleMail extends Mailable { use Queueable, SerializesModels; public $details; // متغير لتخزين تفاصيل الرسالة /** * Create a new message instance. * * @return void */ public function __construct($details) { $this->details = $details; // تخزين التفاصيل الممررة للرسالة } /** * Build the message. * * @return $this */ public function build() { return $this->subject('Test Email') // موضوع البريد الإلكتروني ->view('emails.example'); // عرض القالب } } الخطوة 4: إنشاء قالب البريد الإلكتروني القالب هو الملف الذي يحدد شكل ومحتوى البريد الإلكتروني. لنقم بإنشاء قالب بسيط. افتح مجلد resources/views وأنشئ مجلد جديد باسم emails، ثم أنشئ ملف جديد باسم example.blade.php وضع فيه المحتوى التالي: <!DOCTYPE html> <html> <head> <title>Test Email</title> </head> <body> <h1>{{ $details['title'] }}</h1> <p>{{ $details['body'] }}</p> </body> </html> في هذا القالب، نستخدم متغيرات title و body التي سنمررها عند إرسال البريد الإلكتروني. الخطوة 5: كتابة كود الإرسال الآن، نحتاج لكود يقوم بإرسال البريد الإلكتروني. يمكننا وضع هذا الكود في أي مكان نريد، سواء في Controller أو مباشرة في Route. لنبسط الأمور، سنضعه في Route. افتح ملف routes/web.php وأضف الكود التالي: use Illuminate\Support\Facades\Route; use App\Mail\ExampleMail; use Illuminate\Support\Facades\Mail; Route::get('/send-email', function () { // تفاصيل الرسالة $details = [ 'title' => 'Mail from Laravel Application', 'body' => 'This is a test email sent from Laravel.' ]; // إرسال البريد الإلكتروني Mail::to('recipient@example.com')->send(new ExampleMail($details)); // رسالة تأكيد الإرسال return 'Email sent successfully!'; }); في هذا الكود: قمنا بإنشاء Route جديدة باسم /send-email. داخل هذا Route، قمنا بتعريف تفاصيل الرسالة مثل title و body. استخدمنا Mail::to لتحديد مستقبل الرسالة وأرسلنا الرسالة باستخدام ExampleMail. الان لتشغيل التطبيق واختبار البريد الإلكتروني افتح متصفحك واذهب إلى http://your-domain/send-email (استبدل your-domain بالعنوان الفعلي لتطبيقك). إذا كانت الإعدادات صحيحة، سترى رسالة "Email sent successfully!" والبريد الإلكتروني سيتم إرساله إلى العنوان المحدد.
  24. السلام عليكم. أواجه مشكل في جلب البيانات من الخادم حيث لايتسنى إظهار هذه البيانات على الواجهة الأمامية إلا بعد تحديث الصفحة. الكود. إضافة كتاب (الواجهة الخلفية) // method POST // route api/books // desc Create new book // access Private | admin const createBook = asyncHandler(async(req, res) => { try{ // Image Validation if (!req.file) { return res.status(400).json({ message: "no image provided" }); } // Upload Photo const imagePath = path.join(__dirname, `../images/${req.file.filename}`); const result = await cloudinaryUploadImage(imagePath); // Save new post in database const book = await Book.create({ title: req.body.title, description: req.body.description, category: req.body.category, user: req.userId, image: { url: result.secure_url, publicId: result.public_id, }, author: req.body.author, language: req.body.language, PublicationDate: req.body.PublicationDate, }); // Send response to the client res.status(201).json(book); // 6. Remove image from the server fs.unlinkSync(imagePath); } catch (err) { console.log(err.message) res.status(500).send('Server error') } }); إضافة كتاب الواجهة الأمامية // bookSlice getBooks(state, action) { state.books = action.payload; }, setBooks(state, action) { state.books = [...state.books, action.payload] }, // bookApiCall export function addBook(newBook) { return async (dispatch, getState) => { try { dispatch(bookActions.setLoading()) const {data} = await axios.post(`${BOOK_URL}`, newBook, { headers: { "authorization": getState().auth.user.accessToken } }); dispatch(bookActions.setBooks(data)); dispatch(bookActions.clearLoading()); } catch (error) { toast.error(error?.response?.data.message); dispatch(bookActions.clearLoading()); } }; } /** * Add New Book */ const [fileName, setFileName] = useState(null); const [title, setTitle] = useState(""); const [description, setDescription] = useState(""); const [category, setCategory] = useState(""); const [author, setAuthor] = useState(""); const [PublicationDate, setPublicationDate] = useState(""); const [language, setLanguage] = useState(""); const formSubmitHandler = (e) => { e.preventDefault(); if (title.trim() === "") return toast.error("Book Title is required"); if (category.trim() === "") return toast.error("Book Category is required"); if (description.trim() === "") return toast.error("Book Description is required"); if (author.trim() === "") return toast.error("Book Author is required"); if (language.trim() === "") return toast.error("Book Language is required"); if (PublicationDate.trim() === "") return toast.error("Book Publication Date is required"); if (!fileName) return toast.error("Book Image is required"); const formData = new FormData(); formData.append("image", fileName); formData.append("title", title); formData.append("description", description); formData.append("category", category); formData.append("author", author); formData.append("language", language); formData.append("PublicationDate", PublicationDate); dispatch(addBook(formData)) setFileName(null) setTitle("") setDescription("") setCategory("") setAuthor("") setPublicationDate("") setLanguage("") }; /** * Fetch All Books With Pagination */ useEffect(() => { dispatch(fetchBooks()); }, [dispatch]); شكرا على المساعدة.
  25. ارسال رسائل البريد الكتروني في لارافل بسيطه وهتحتاجها في معظم مشاريعك يمكنك اتباع الخطوات التاليه لتنفيذ ما طلبت اولا في ملف .env يجب ان تضع اعدادات البريد الاكتروني الخاص بالاسضافه سواء كانت هوستينجر او جودادي .. مثال علي اعدادت هوستينجر MAIL_MAILER=smtp MAIL_HOST=smtp.hostinger.com MAIL_PORT=465 MAIL_USERNAME=academy@hsoub.com البريد الكتروني الخاص باستضافة مشروعك MAIL_PASSWORD="************" كلمة السر الخاصه بالبريد MAIL_ENCRYPTION=ssl MAIL_FROM_ADDRESS="academy@hsoub.com" عنوان البريد المرسل MAIL_FROM_NAME="${APP_NAME}" ثما قم بإنشاء ملف Mailable في Laravel لكي تحدد كيفية عرض البريد الإلكتروني ومحتواهعن طريق الامر التالي php artisan make:mail TestEmail سيتم انشاء ملف تلقائي بهذه الاسم TestEmail ولان ساعطيك مثال كامل لارسال otp عبر البريد من احد المشاريع التي عملت عليها بعد انشاء الملف يمكنك اعداده بهذه الطريقه class TestEmail extends Mailable { use Queueable, SerializesModels; public $message; public $fromEmail; public $subject; public $email; /** * Create a new message instance. * * @return void */ public function __construct($message, $fromEmail, $subject, $email) { $this->message = $message; $this->fromEmail = $fromEmail; $this->subject = $subject; $this->email = $email; } /** * Build the message. * * @return $this */ public function build() { $otp = $this->generateOtp($this->email); return $this->view('email', ['code' => $otp, 'username' => "Guest", 'massge' => $this->message, "subject" => $this->subject]); } protected function generateOtp($email) { $otp = new Otp; $otpCode = $otp->generate($email, 'numeric', 6, 60); return (string) $otpCode->token; } } هذه هي الخصائص العامة (public properties) للفئة تحمل قيم متعلقة برسالة البريد الإلكتروني مثل الرسالة نفسها، البريد الإلكتروني المُرسل منه، الموضوع، وعنوان البريد الإلكتروني المُرسل إليه. public $message;, public $fromEmail;, public $subject;, public $email دالة generateOtp($email) مسؤوله عن تُوليد رمز OTP وتستقبل بريدًا إلكترونيًا كمدخل بنسبه لهذه الجزء من الكود return $this->view('email', ['code' => $otp, 'username' => "Guest", 'massge' => $this->message, "subject" => $this->subject]); هذا الجزء يُرسل البريد الإلكتروني باستخدام قالب محدد ("email.blade.php" ) ويمرر البيانات إلى القالب مثل الرمز OTP واسم المستخدم والرسالة والموضوع. الخطوه الثانيه هي انشاء قالب email سكون ملف blade بسيط مثل هذه <!DOCTYPE html> <html> <head> <style> body { font-family: Arial, sans-serif; background-color: #f7f9fc; padding: 50px; } .container { max-width: 600px; background-color: #ffffff; padding: 20px; border-radius: 8px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); margin: 0 auto; } .header { padding: 10px 0; text-align: center; border-top-left-radius: 8px; border-top-right-radius: 8px; } .header img { max-width: 120px; } .company-name { font-size: 20px; font-weight: bold; margin-top: 10px; } .content { padding: 20px; line-height: 1.5; } .otp { font-size: 24px; font-weight: bold; letter-spacing: 2px; text-align: center; margin: 20px 0; color: #333; background-color: #f1f1f1; padding: 10px 0; border-radius: 5px; } .footer { text-align: center; padding: 20px 0; color: #888888; font-size: 12px; } /* Dark mode styles */ @media (prefers-color-scheme: dark) { body { background-color: #333; } .container { background-color: #444; } .header, .content, .footer { color: #eee; } .otp { color: #444; background-color: #eee; } } </style> </head> <body> <div class="container"> <div class="header"> <img src="https://adrenaline-edu.com/images/1.png" alt="https://adrenaline-edu.com/images/1.png"> </div> <div class="content"> <p>Hello, {{ $username }}</p> <p>{{ $massge }}:</p> <div class="otp">{{ $code }}</div> <p>This OTP is valid for 60 minutes. If you didn't request this code, please ignore this email.</p> </div> </div> </body> </html> الخطوه الثالثه والاخير هي ارسال البريد الكتروني عن طريق الكود التالي $message = "Please use the following OTP to verify your email address"; $fromEmail = "adrenaline@adrenaline-edu.com"; $subject = "Verification needed"; Mail::to($email)->send(new TestEmail($message, $fromEmail, $subject, $inpout)); سيظهر معك كما موضع بصوره
  1. عرض المزيد
×
×
  • أضف...