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

كل الأنشطة

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

  1. الساعة الماضية
  2. أشكركم من القلب على معلوماتكم القيمة جدا جدااا .
  3. اليوم
  4. هل تكفي اساسيات البايثون وصلت الى التعامل مع ملفات excel للانتقال الى اساسيات جانجو
  5. شكرااا لحضراك وشكراا جدا ان حضرتك وضحت الفرق بين 'lloyd' و 'elkan جزاك الله لك خير
  6. يجب مشاركة الكود معنا لنستطيع المساعده بشكل افضل بالاضافه للغات او الفريمورك الذي تعملي معه بحيث ايضا نستطيع تقديم مثال توضيحي لمساعدتك حل عام يمكنك اتباعه وهو استخدام خاصية index في القائمة لتحديد الرسم الذي تريد طباعته بدلاً من طباعة كل الرسومات في القائمة
  7. ممكن تدريج في الشرح والشرح بالتفاصيل ... وهل يمكن ان اغير المدرب؟
  8. سبب المشكلة هو فشل التحقق من عدم وجود قيمة فارغة في حقل 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 عند إضافة كتاب جديد، وأيضًا قمت بحل مشكلة تكرار الفئة عند تحديث الصفحة.
  9. المشكلة هي أن قيمة المعلمة algorithm في دالة KMeans يجب أن تكون إما 'lloyd' أو 'elkan'. لكن في الكود الخاص بك تم تعيينها إلى 'auto'، ، لحل هذه المشكلة يجب تعديل الكود لتغيير قيمة المعلمة algorithm إلى 'lloyd' أو 'elkan'. بالنسبة للفرق بينهما خوارزمية ليويد (Lloyd's algorithm) تعتبر الطريقة الكلاسيكية والأساسية لتنفيذ خوارزمية K-Means، وتعرف أيضا بـ "Forgy's algorithm". و تعتمد على تحديث المراكز من خلال تعيين كل نقطة إلى أقرب مركز، ومن ثم تحديث مراكز الكتل بناء على متوسط النقاط المخصصة لكل مركز. عادة ما تكون أسرع في الحالات التي تكون فيها الأبعاد قليلة. بالنسبة لخوارزمية إلكان (Elkan's algorithm) تعتبر تحسينا لخوارزمية ليويد الكلاسيكية، وتستخدم حدودا ثلاثية لتقليل عدد الحسابات المطلوبة عند تعيين النقاط إلى المراكز، يمكن أن تكون أسرع في الحالات التي تحتوي على عدد كبير من الأبعاد أو عدد كبير من المجموعات. استخدام أي من الخوارزميتين يعتمد على طبيعة البيانات والأداء المطلوب. في معظم الحالات، خوارزمية ليويد تكون كافية وتعمل بكفاءة. إذا كانت البيانات تحتوي على عدد كبير من الأبعاد أو كانت هناك حاجة لتحسين الأداء، يمكن تجربة خوارزمية إلكان.
  10. السلام عليكم صنعت مشروع بواسطة فيديو من اليوتيوب .. لتطوير مهارتي عبارة عن نظام ادارة مكتبة المشكلة هي انه عند اضافة كتاب جديد يظهر لي هذا الخطأ وعند عمل 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> واشكركم علي اجابتكم لسؤالي
  11. السلام عليكم ده البيانات المستخدما وده الكود 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
  12. أول شيء، لازم نضبط إعدادات البريد في 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!" والبريد الإلكتروني سيتم إرساله إلى العنوان المحدد.
  13. السلام عليكم. أواجه مشكل في جلب البيانات من الخادم حيث لايتسنى إظهار هذه البيانات على الواجهة الأمامية إلا بعد تحديث الصفحة. الكود. إضافة كتاب (الواجهة الخلفية) // 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]); شكرا على المساعدة.
  14. ارسال رسائل البريد الكتروني في لارافل بسيطه وهتحتاجها في معظم مشاريعك يمكنك اتباع الخطوات التاليه لتنفيذ ما طلبت اولا في ملف .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)); سيظهر معك كما موضع بصوره
  15. كيف يمكنني ارسال بريد الكتروني بدون ان يكون المستخدم مسجل دخول في laravel
  16. أولاً نعتذر لك عن أية صعوبة واجهتها في الشرح، تستطيع الاستفسار عن أي شيء وسيتم مساعدتك. بخصوص سؤالك بالطبع لا، فكيف سيتم الشرح لم يصل تعلم الآلة لتلك الدرجة، الفكرة هي أنه في بعض المسارات ستحتاج إلى تعديل مستوى سرعة التشغيل مثل 1.5x لتصل للمستوى المناسب لك في الاستماع، حيث يتم مراعاة أن البعض لا يناسبه الشرح السريع، لذا الجميع يستطيع إختيار السرعة المناسبة في الشرح من خلال تقليل وزيادة سرعة تشغيل الفيديو. وبخصوص نفس الشرح في أكثر الدورة، فنعم يتم تضمين بعض المسارات من الدورات الأخرى لإثراء محتوى دورة معينة أي إعادة استخدام، فما الفائدة من شرح أساسيات بايثون مرتين؟ وبعض المدربين يقومون بشرح أكثر من مسار نعم بسبب تخصصهم في ذلك.
  17. عادة ما يستخدم التعلم غير الخاضع للإشراف (Unsupervised Learning) مع بيانات غير مسماة (Unlabeled Data). يعني ذلك أن البيانات لا تحتوي على تسميات أو نتائج معروفة مسبقا، ويقوم النموذج بمحاولة اكتشاف الأنماط أو العلاقات داخل البيانات دون معرفة مسبقة بالتسميات. ولكن، من الممكن استخدام البيانات المسماة في التعلم غير الخاضع للإشراف في بعض الحالات المحددة. على سبيل المثال: 1. استخدام جزء من البيانات: يمكن استخدام جزء من البيانات المسماة دون النظر إلى التسميات نفسها. يمكن للنموذج محاولة اكتشاف الأنماط فقط بناء على الميزات (Features) الموجودة في البيانات. 2. التحقق من صحة النتائج: بعد أن يقوم النموذج باكتشاف الأنماط أو المجموعات (Clusters) في البيانات، يمكن استخدام التسميات للتحقق من صحة النتائج ومعرفة ما إذا كانت الأنماط المكتشفة تتوافق مع الفئات الفعلية. بشكل عام، الهدف الرئيسي من التعلم غير الخاضع للإشراف هو التعامل مع البيانات غير المسماة، ولكن يمكن استخدام البيانات المُسماة بشكل غير مباشر كما تم توضيحه. ولكن للتوضيح اكثر دعنا نأخذ مثالا عمليا لتوضيح كيف يمكن استخدام البيانات المسماة في سياق التعلم غير الخاضع للإشراف. تجميع الصور باستخدام التعلم غير الخاضع للإشراف لنفترض أن لدينا مجموعة كبيرة من الصور للفاكهة (مثل التفاح، البرتقال، والموز). لدينا بعض الصور مسماة (أي نعرف ما هي الفاكهة في كل صورة)، ولكن نريد استخدام التعلم غير الخاضع للإشراف لتجميع الصور حسب النوع. الخطوات: 1. تحضير البيانات: - لدينا مجموعة من الصور المسماة (مثلاً 100 صورة لكل نوع من الفاكهة). 2. استخدام التعلم غير الخاضع للإشراف (مثل K-means): - نقوم بتحويل الصور إلى تمثيلات رقمية باستخدام تقنيات مثل تحليل المكونات الرئيسية (PCA) أو الشبكات العصبية التلافيفية (CNN). - نستخدم خوارزمية K-means لتجميع الصور إلى 3 مجموعات (clusters)، حيث نعرف مسبقاً أننا نتوقع ثلاث مجموعات مختلفة بناءً على نوع الفاكهة. 3. التحقق من النتائج باستخدام البيانات المُسماة: - بعد تشغيل خوارزمية K-means، نحصل على 3 مجموعات من الصور. - الآن، نستخدم التسميات الموجودة لدينا للتحقق من مدى دقة التجميع. نقوم بفحص كل مجموعة لمعرفة ما إذا كانت الصور في كل مجموعة تتطابق مع نوع فاكهة محدد. إذا كانت المجموعة الأولى تحتوي بشكل أساسي على صور التفاح، والمجموعة الثانية تحتوي على صور البرتقال، والمجموعة الثالثة تحتوي على صور الموز، فهذا يعني أن التجميع كان ناجحاً. اما إذا كانت هناك صور غير مصنفة بشكل صحيح، يمكننا معرفة الأخطاء وتحليلها لتحسين النموذج. في النهايه فباستخدام هذه الطريقة، نحن نستخدم التعلم غير الخاضع للإشراف لاكتشاف الأنماط والتجميع في البيانات، ثم نستخدم البيانات المُسماة للتحقق من دقة النتائج وتحسين النموذج إذا لزم الأمر. هذه العملية مفيدة خاصة عندما يكون لدينا بيانات كبيرة جداً وليس لدينا تسميات لجميع البيانات، حيث يمكننا استخدام جزء صغير من البيانات المسماة كمرجع لتحسين وتقييم النموذج.
  18. من الممكن أن تستعمل بيانات مسماة و لكن بدون استعمال التسميات labels. أي مثلاً لديك بيانات لصور حيوانات و لديك لكل صورة ما هو الحيوان الموجود فيها. في حال كنت ترغب باستعمال هذه البيانات في التعلم غير الخاضع للإشراف عليك استعمال الصور فقط بدون المسميات. في اللحظة التي تستعمل فيها المسميات فإنك تقوم بتوجيه النموذج و إعطاءه معلومات معينة و بالتالي يصبح هناك إشراف ولو جزئي و تنتقل إلى أنواع تعلم أخرى كالتعلم الخاضع للإشراف Supervised learning أو مثلا التعلم الخاضع للإشراف بشكل جزئي semi-supervised learning و غيرها.
  19. السلام عليكم جمعه مبارك هو مش انا ممكن استخدم بيانات مُسماة labeled في التعلم غير الخاضع للإشراف UnSupervised learning ؟
  20. شكرا لك على المساعدة و الرد لا كن عندى سؤال خارج الموضوع و هو : لماذا سكربتات php تتكون من آلاف الملفات مثل vbulletin لإدارة المنتديات. و الاوبن كارت لإدارة المتاجر.
  21. كنت اتحدث أنا واخي عن اكاديمية حاسوب لاحظنا أنا واخي ان المدرب لا يلتقط أنفاسه وأيضا يشرح المدرب نفسه في أكثر من دورة ولاكن بنفس نبره الصوت ونفس المستوى أيضا وبطء حديثه وأن في بعض الأحيان يكون سكوته الطويل نسبياً وغير متناسق بعض الأحيان مع الأحداث التي يفعلها المدرب مجرد ملاحظة لاكن قد نكون مخطأين
  22. البارحة
  23. فى هذه الحالة يمكنك إكمال مسار أساسيات الجافاسكربت ولن تواجهك مشاكل أو تعامل مع ال html أو الcss بعدها يمكنك الإنتقال إلى المسار الأول من دورة واجهة المستخدم لتعلم ال html والcss أو يمكنك معرفة أساسياتهم من خلال المقالات المشار إليها سابقا أو المقالات الموجودة فى القسم الخاص بهم الموجود بالأكاديمية. أو يمكنك تعلمهم مع المدرب عند شرح أطر العمل الخاص بالجافاسكربت حيث يتم كتابة شيفرة للhtml والcss وتوفير الأكواد الخاصة بهم. ولكن الأفضل بالتأكيد أن يكون لديك ولو معرفة بسيطة بhtml وcss قبل أطر العمل هذا سيوفر عليك وقت وتلافى الأخطاء الناتجة عن عدم علمك بهم. ولسبب أن الجزء الخاص بال html والcss غير موجود في دورة تطوير التطبيقات باستخدام الجافاسكربت تم توفيره فى المسار الأول من واجهة المستخدم بشكل مجانى لتعلمهم.
  24. جميل, ولكن سبق وقد بدأت في تعلم الجافا سكربت, ولا افضل ان ابدأ في تعلم ال HTML,CSS في المنتصف لكي لا تختلط الافكار,هل يوجد مشكله في اكمال دورة الجافا سكربت, بمعنى اخر هل من الضروره بشده تعلم ال HTML,CSS قبل البدأ بالجافا سكربت, واذا كانت الاجابه نعم فمن المفترض ان يكون في بداية دورة الجافا سكربت دروس تأسيس لل HTML,CSS بما ان الافكار جميعها مترابطه وكل فكره تلزم الاخرى. شكرا.
  25. ابي برنمج يساوي مشركه بين النطمه التشغيل ابي نطم اندرويد يشتغل كبرنمج ونطم وندز كبرنمج مفيه البرمج اي عيوب على لينكس منت linux mint
  26. حاليًا لا يوجد دورة خاصة بالأمن السيبراني بالأكاديمية، وكبداية ستحتاج إلى دراسة علوم الحاسوب، ويوجد بالأكاديمية دورة خاصة بذلك ستتعلم بها ما يلي: أساسيات الحاسوب وعلومه والتفكير المنطقي وما هي الخوارزميات وكيف تفيد في البرمجة تطبيقات عملية على أساسيات التفكير المنطقي باستخدام بيئة سكراتش Scratch التفاعلية أساسيات لغة البرمجة JavaScript وتطبيق المفاهيم التي تم شرحها باستخدامها، والتوسع في شرح التطبيقات العملية للغات البرمجة أساسيات أنظمة التشغيل المختلفة وكيفية تثبيت البرمجيات اللازمة للبرمجة عليها أساسيات سطر الأوامر في نظام لينكس، وشرح الأسس التي بني عليها النظام مع تطبيقها عمليًا أنظمة قواعد البيانات المختلفة، مع شرح تفصيلي للغة SQL للتعامل معها مبادئ أساسية في أنظمة قواعد البيانات NoSQL المفاهيم الأساسية التي تبنى فيها صفحات الويب مفاهيم أساسية في الشبكات والخوادم، وكيف يتم استقبال الطلبيات إلى الخادم والرد عليها مبادئ الحماية والأمان في الويب أما بخصوص المصادر والمهارات التي تحتاجها كخريطة طريق لدخول مجال الأمن السيبراني ستجد تفصيل هنا: أما عن نظام لينكس ستجد دروس ومقالات هنا: مقالات لينكس
  27. تسلسل الخطوات مضبوط، أحييك على تفكيرك المنطقي، ولكن يوجد خطأ بسيط وهو في الجملة الشرطية حيث يجب إزالة علامة = وذلك لأننا لا نريد استبعاد الصفر حيث أن مضروب الصفر يساوي 1 ليصير الأمر if (n < 0) وكذلك نقل أمر الطباعة خارج الحلقة التكرارية، لأننا نريد طباعة الناتج النهائي وليس الناتج بعد كل عملية ضرب، بالإضافة إلى أنه لن يتم الطباعة في حال n = 0 for (int i = 1; i <= n; i++) { sum = sum * i; } Console.WriteLine(sum);
  1. عرض المزيد
×
×
  • أضف...