قناة احمد علي على تيليجرام ( شروحات تقنية ، تطبيقات ، أفلام ومسلسلات ، خلفيات ، و المزيد )
Last updated 2 months, 1 week ago
يرمز تيليجرام إلى الحريّة والخصوصيّة ويحوي العديد من المزايا سهلة الاستخدام.
Last updated 2 months, 3 weeks ago
- بوت الإعلانات: ? @FEFBOT -
- هناك طرق يجب ان تسلكها بمفردك لا اصدقاء، لا عائلة، ولا حتى شريك، فقط انت.
My Tragedy Lies With Those Things That Happen in One Second And Remain
- @NNEEN // ?: للأعلانات المدفوعة -
Last updated 2 months, 2 weeks ago
#معلومة_عالماشي
توضح هذه الصورة مقارنة بين أمان كل من Apple Pay و Google Pay في عملية الدفع الإلكتروني، حيث تشرح الخطوات التي تتبعها كل خدمة لمعالجة الدفعات بطريقة آمنة.
Apple Pay:
المعلومات الائتمانية (Credit card info): يتم إدخال معلومات بطاقة الائتمان الخاصة بالمستخدم.
تمرير المعلومات إلى الشريحة (Pass credit card info): المعلومات يتم إرسالها إلى شريحة مدمجة في جهاز Apple (ممثلة بالصورة باللون الأسود داخل الهاتف).
تخزين المعلومات على الشريحة (Store to chip): يتم تخزين المعلومات على الشريحة وتوليد رقم حساب خاص بالجهاز يُسمى Device Account Number (DAN).
إرسال DAN إلى خادم التجارة الإلكترونية (Send DAN to E-commerce server): يتم إرسال DAN إلى الخادم الذي يدير عمليات الشراء (خادم التجارة الإلكترونية).
إرسال DAN إلى البنك (Send DAN to bank): يقوم الخادم بإرسال DAN إلى البنك لإتمام عملية الدفع.
Google Pay:
المعلومات الائتمانية (Credit card info): يتم إدخال معلومات بطاقة الائتمان الخاصة بالمستخدم.
تخزين المعلومات على Google Server (Store info to Google server): يتم تخزين المعلومات على خادم Google.
إرسال الرمز المولد (Payment token): يتم توليد رمز دفع (Payment Token) من خلال خادم Google.
إرسال رمز الدفع إلى خادم التجارة الإلكترونية (Send Payment Token to E-commerce server): يتم إرسال الرمز إلى خادم التجارة الإلكترونية الذي يدير عملية الشراء.
إرسال الرمز إلى البنك (Send payment token to bank): يقوم الخادم بإرسال الرمز إلى البنك لإتمام عملية الدفع.
تمرير المعلومات المالية إلى البنك (Send card info to bank): يتم تمرير المعلومات المالية إلى البنك للتحقق وإتمام العملية.
الخلاصة:
Apple Pay يعتمد على استخدام شريحة داخل الجهاز لتخزين البيانات وتوليد رقم حساب خاص بالجهاز (DAN).
Google Pay يعتمد على خوادم Google لتخزين المعلومات وتوليد رموز دفع آمنة يتم استخدامها بدلاً من البيانات الفعلية.
كلتا الخدمتين تسعيان إلى تأمين عمليات الدفع عبر الإنترنت عبر تقنيات مختلفة تضمن الخصوصية ومنع الوصول غير المصرح به إلى معلومات البطاقة.
#معلومة_عالماشي 💻📱💜
Dart
🔴 هي لغة برمجة تعمل على مترجم (JIT) ومصدر مفتوح، تستخدم للبرمجة العامة وبرمجة تطبيقات الويب والهاتف المحمول وسطح المكتب والخوادم.
🔴 صممت لتوفير تجربة بناء جديدة للمبرمجين، بفضل العديد من الميزات الرائعة التي توفرها كالأداء الممتاز والتعددية في الإدارة والمخصصة للأداء.
🔴 تم إنشاؤها من قبل شركة #Google على سبيل المثال للتعامل مع بناء تطبيقات الويب بأداء ممتاز،
وتستخدم أيضاً في تطوير تطبيقات الأجهزة المحمولة مثل نظام التشغيل #Flutter الذي يعتمد عليها. علاوة على ذلك، تستخدم #Dart في تطبيقات الخادم تمامًا مثل Node.js.
🔴تتميز Dart بالعديد من الميزات الرائعة مثل:
1️⃣مترجم JIT يفتح برامج Dexy في ثانية واحدة (leapfrogging).
2️⃣توفير نوع القسطرة (type inference) لإضفاء طابع قوي النوع على اللغة.
3️⃣منهج Async/await المستوحى من #C يتيح للمبرمجين كتابة الأكواد المؤرشفة عديمة الحالة بأسلوب يشبه الأكواد المتزامنة بطريقة أنظف وأكثر وضوحًا.
4️⃣توفير العديد من أدوات التنمية المثيرة للاهتمام مثل واجهة برمجة تطبيقات Eclipse، و Visual Studio Code، و IntelliJ
🔴أخيراً، تعد #Dart لغة شائعة لاستخدامها في تطوير تطبيقات الويب والموبايل وبرمجة الخادم، وتتميز بسهولة التعلم والاستخدام وتوفير العديد من الميزات المناسبة لبناء تطبيقات مثيرة وقوية بشكل لا يصدق.
تم إكمال الجزء الأول ، مع أمثلة ، قم بالمحاولة بالاستخدام أمثلة موضوع وأهم نقطة هي الفهم قبل حفظ
#لا_تنسون_دعائكم_لنا_ولكم_بالخير_وصحة_عافية
كان معكم المبرمج ياسين
دالة اللامدا تصنف كدالة مجهولة، أي دالة بدون اسم، وإذا فكرت في الأمر، تجد أن إعطاء اسم لهذه الدالة لن يكون له فائدة هنا، لأنه في النهاية تُخزن في متغير وهو ما يمثلها. لذلك، إعطاء اسم لهذه الدالة ليس ضروريًا.
ملاحظة صغيرة: يمكنك إعطاء اسم لدالة اللامدا إذا كنت ترغب في ذلك. وهذا اختياري، وقد يكون مفيدًا في حالات مثل تتبع تنفيذ اللعبة أثناء الفحص Debug أو مراقبتها في متتبع المكدس Stack Trace.
على سبيل المثال:
# يمكننا وضع اسم لدالة اللامدا لكنه اختياري
var lambda = func sum (x, y): return x + y
ما الذي أضافته؟
إذا كانت دالة اللامدا هي شكل آخر لكتابة الكائنات من نوع صنف قابلية الاستدعاء, فما الجوهر الذي أضافته أو ميزتها عن الشكل الاعتيادي الذي تعلمته في درس قابلية الاستدعاء؟
هناك ميزة رائعة تميز دالة اللامدا، وهي القدرة على إنشائها داخل معاملات الدوال الأخرى. بمعنى آخر، بدلاً من أن نقوم بتعريف دالة خارجية ثم تمررها كمعامل داخل دالة أخرى كما كنت تفعل في السابق، يمكنك إنشاء الدالة نفسها داخل المعامل مباشرةً.
هل تتذكر هذا المثال من الدرس السابق؟
func sum(x, y):
return x + y
func applyOperation(x, y, obj: Callable):
var result = obj.call(x, y)
return result
كان لديك هنا دالة تنفيذ الإجراء applyOperation(x, y, obj) التي تستقبل القيم x و y والمعامل obj وهو كائن من نوع قابلية الاستدعاء.
ثم كنت تستدعى call من الكائن obj وتُرسل القيم x و y فيه. كنت تقوم بإنشاء دالة خارجية مثل دالة الجمع على سبيل المثال وتمررها كمعامل إلى دالة تنفيذ الإجراء:
var result = applyOperation(5, 10, sum)
print(result) # return 15
الآن، انظر كيف تكون الأمور مع دالة اللامدا:
func applyOperation(x, y, obj: Callable):
var result = obj.call(x, y)
return result
# لاحظ كيف تم انشاء دالة داخل المعامل مباشرةً
var result = applyOperation(5, 10, func (x, y): return x + y)
print(result) # return 15
لاحظ أنه بدلاً من تعريف دالة الجمع خارج دالة تنفيذ الإجراء ومن ثم تمريرها كمعامل كما في المثال الأول، قمت بإنشاء الدالة نفسها داخل معامل دالة تنفيذ الإجراء أثناء استدعائها.
هذا يعود إلى أن دالة اللامدا فهي دالة تمكنك بإنشاؤها داخل المعاملات مباشرةً, وهذه من أهم خصائصها التي ذكرتها، وإذا فكرت في الأمر، تجد أن دالة اللامدا تعتبر من نوع الصنف قابلية الاستدعاء لذا تستقبلها دالة تنفيذ الإجراء كمعامل من نوع Callable وتسندها للكائن obj دون مشاكل.
استخدامها كبديل لحل الصعوبات التي واجهتنا مع الـ Callable
هل تتذكر الصعوبات التي ذكرتها في بداية هذه الشرح والأمثلة التي عرضتها وكيف واجهت مشكلة بأنك تقوم بإنشاء دالة كاملة في مكان ما وتستخدمها لمرة واحدة فقط وعدم استخدامها مرة أخرى في أي مكان آخر؟
استخدامها كبديل لحل الصعوبات التي واجهتنا مع الـ Callable
هل تتذكر الصعوبات التي ذكرتها في بداية هذه المقالة والأمثلة التي عرضتها وكيف واجهت مشكلة بأنك تقوم بإنشاء دالة كاملة في مكان ما وتستخدمها لمرة واحدة فقط وعدم استخدامها مرة أخرى في أي مكان آخر؟
وقلت أنك إن كنت تريد أن تبتكر طريقة لإنشاء دالة لمرة واحدة فقط داخل نطاق معين وتستخدم داخل هذا النطاق ثم تختفي عن الوجود. هل تفكر فيما افكر؟ هل يذكرك هذا بميزة موجودة داخل دوال اللامدا؟
بالطبع، دالة اللامدا تمكنك من إنشائها مباشرة داخل معاملات الدوال الأخرى وتكون محدودة بنطاق معين ولن تراها مرة أخرى. هذا بالضبط ما تحتاجه لتجاوز التحديات التي ذكرتها في المقالة.
سأعيد لك عرض نفس الأمثلة السابقة مع تنفيذ ميزة دالة اللامدا عليها، مع إضافة أمثلة عملية أخرى:
var enemy = Enemy.new()
func _ready():
enemy.take_damage_signal.connect(func (): print(‘enemy hurt’))
enemy.take_damage_signal.emit()
انظر كيف قمت بإنشاء دالة اللامدا داخل دالة الاتصال الخاصة بالإشارة ولم نضطر حتى إلى إنشاء دالة خارجية وتمريرها.
func _ready():
var tween = get_tree().create_tween().set_loops()
tween.tween_callback(func (): print(‘shoot’)).set_delay(1)
وهنا أيضًا نفس الأمر، تجد الأمور أصبحت اسهل وأكثر نظافة.
أيضًا، أي دالة تجدها تستقبل كائن من نوع الصنف قابلية الاستدعاء Callable، يمكنك استخدام وإنشاء دالة اللامدا فيه ببساطة. على سبيل المثال، بعض دوال المصفوفة تستقبل كائن من نوع الصنف قابلية الاستدعاء مثل دالة filter:
func _ready():
var arr = [1, 4, 11, 5, 8, 6, 9, 3]
# نريد الأعداد الزوجية فقط (الأعداد التي تقبل القسمة على 2)
var result = arr.filter(func(x): return x % 2 == 0)
print(result) # [4, 8, 6]
انظر كيف قمنا بعمل ما نريده بشكل مباشر دون تكلفة إنشاء دالة خارجية أخرى.
الجزء الأول -1-
تقنية اللامدا Lambda في لغةمحرك Godot
أشرح مفهوم جديد وهو دالة اللامدا Lambda function وهو تابع ومتعلق بشكل كبير لمفهوم قابلية الاستدعاء-Callable الذي تم شرحه سابقًا، لذا من الأفضل أن تراجع المقالة السابقة قبل أن تواصل قراءة هذه المقالة.
وفيه قد تعلمنا كيف يمكن لمفهوم الدوال القابلة للاستدعاء أن يمكّننا من تمرير واستدعاء الدوال
داخل دوال أخرى بسهولة.
عناصر
عوائق قابلية الاستدعاء
إنشاء دالة لامدا
دالة اللامدا هي دالة مجهولة
ما الذي أضافته؟
استخدامها كبديل لحل الصعوبات التي واجهتنا مع الـ Callable
عوائق قابلية الاستدعاء
هناك بعض العوائق التي قد تواجهك أثناء تعاملك مع تلك الدوال القابلة للاستدعاء.
أقتبس الآن كلامًا قاله أحد المبرمجين الأساسيين لمحرك غودو حول المشاكل التي قد تنشأ أثناء استخدام الدوال القابلة للاستدعاء والتي دفعته لإضافة مفهوم دوال اللامدا للمحرك لحل تلك المشاكل.
هناك أوقات تحتاج فيها إلى تمرير دالة داخل دالة أخرى، مثل عند ربط الإشارات Signals, أو استخدام عقدة الوسيط Tween, أو ترتيب المصفوفات. عادةً ما يتم إنشاء هذه الدالة في مكان آخر في الملف، مما قد يسبب بعض المشاكل. على سبيل المثال، إذا لم تكن تستخدم الدالة في أي مكان آخر، فستظل متاحة للاستخدام، حتى لو لم تعد بحاجة إليها. يمكن أن يؤدي هذا إلى صعوبة قراءة الملف وفهمه، فقد لا يتضح من أين تأتي كل هذه الدوال.
– George Marques (vnen)
وأحاول شرح ما يقصده في بعض الأمثلة العملية البسيطة
بالنسبة للإشارات فعندما كنت تربط إشارة داخل مشهد معين كنت تمرر دالة داخل دالة الاتصال connect الخاصة بربط الإشارات هكذا :
var enemy = Enemy.new()
func _ready()
enemy.take_damage_signal.connect(enemy_hurt)
enemy.take_damage_signal.emit()
# هذه الدالة تم استخدامها مرة واحدة فقط ولن يتم استخدامها مجددًا
func enemy_hurt():
print(‘enemy hurt’)
لاحظ كيف قمت بتمرير دالة قابلة للاستدعاء مثل العدو_تأذى enemy_hurt داخل دالة الاتصال connect المسؤولة عن
ربط إشارة_تلقي_الضرر take_damage_signal الخاصة بالعدو داخل المشهد الحالي.
الدالة العدو_تأذى اُستخدمت مرة واحدة فقط ولن يتم استخدامها مرة أخرى, قد تم إنشاؤها فقط لكي توضع داخل دالة الاتصال الخاصة بالاشارة.
لكن هل ستستعملها مجددًا ؟ الاجابة لا لن يتم استخدامها مرة اخرى في أي مكان آخر. إذا لماذا نبقيها في الملف على الرغم من أننا لن نحتاج إليها مرة أخرى؟ هذا ما يسبب مشكلة في قراءة الملف وفهمه.
بالنسبة لعقدة الوسيط Tween، يمكنك تمرير دالة قابلة للاستدعاء داخل أحد دوالها. مثال:
func _ready():
var tween = get_tree().create_tween().set_loops()
tween.tween_callback(shoot).set_delay(1)
func shoot():
print(‘shoot’)
هل لاحظت نفس المشكلة هنا؟ أنشأت دالة مسؤولة عن إطلاق شيء ما واستخدمتها مرة واحدة كدالة قابلة للاستدعاء داخل دالة tween_callback.
سل نفسك نفس السؤال السابق هل ستستعملها مجددًا ؟ الاجابة لا لن يتم استخدامها مرة اخرى في أي مكان آخر
وأمثلة كثيرة مثل تلك أدت للتفكير في ابتكار طريقة لإنشاء دالة لمرة واحدة فقط داخل نطاق معين وتُستخدم داخل هذا النطاق ثم تختفي عن الوجود، هنا ظهر مفهوم جديد وهو دالة اللامدا Lambda
إنشاء دالة لامدا
أولًا، دعنا نتعرف على كيفية إنشاء دالة اللامدا في لغة غودو. هذا الأمر أسهل مما قد تتصور.
var lambda = func (x, y): return x + y
print(lambda.call(1, 2)) # 3
print(lambda.call(3, 2)) # 5
print(lambda.call(5, 7)) # 12
لاحظ كيف يتم تعريف اللامدا، قمت بإنشاء متغير يُدعى lambda وجعلته يساوي الدالة نفسها بهذا الشكل، كما ترى.
المتغير هو في الحقيقة كائن من نوع قابلية الاستدعاء Callable، لأن اللامدا هو شكل آخر أو تجسيد آخر لصنف قابلية الاستدعاء، بالتالي كل ما تعلمته في درس قابلية الاستدعاء ينطبق تماما على اللامدا.
إذا كانت الدالة تقوم بتنفيذ سطر واحد فقط، يمكننا كتابتها بشكل مختصر بشكل مختصر مثل السطر الاول
وإذا كانت الدالة تقوم بتنفيذ عدة أسطر، يتم كتابتها بشكلها الكامل هكذا:
var lambda = func (x, y):
var z = x + y
return z
دالة اللامدا هي دالة مجهولة
دالة اللامدا هي نوع من الدوال المجهولة، وقد تسمع بهذا المصطلح كثيرًا “دالة مجهولة” Anonymous Function في سياق لغات البرمجة.
حسنًا لاحظ هنا:
var lambda = func (x, y): return x + y
الجزء الأيمن من المعادلة هو ما نسميه “دالة اللامدا”، بينما الجزء الأيسر منه مجرد متغير أو كائن يمثل هذه الدالة.
السلام عليكم.. شباب هذا البوت ينطي أرباح حقيقه حيث 19 يوم من تجميع ينطي 900000 وتكدر تسحبهن عن طريق ماستر كارد رافدين او زين كاش أو fast pay سارع بالانضمام عن طريق رابط بوت
https://t.me/cryptoclickiraq_bot?start=3t9tZod9yS
ماهي الكتلة (Block) في سلاسل الكتل (Blockchain) ??
الكتلة في السلسلة هي الطريقة التي يتم تخزين البيانات فيها على شكل معاملات حيث يتم ربط هذه الكتل معاً عن طريق إضافة تجزئة الكتلة السابقة (Previous block hash) إلى رأس الكتلة التالية (Block header).
بحيث تحافظ على ترتيب الكتل سليماً وتجعل البيانات الموجودة في الكتل غير قابلة للتغيير.
تتكون الكتلة من الجزأين الرئيسيين التاليين:
? رأس (Header)
? جسم (Body)
رأس الكتلة (Block header):
يحتوي رأس الكتلة على حقول تحوي معلومات حول الكتلة وتجزئة الكتلة السابقة بالاضافة لعدد من الحقول التي تختلف وفقاً للمتطلبات المختلفة لسلاسل الكتل. بعض الحقول المشتركة كما يلي:
1- تجزئة الكتلة السابقة (Previous block hash)
يحتوي هذا الحقل على تجزئة الكتلة السابقة. فهو بذلك يربط الكتل معاً ويجعل البيانات الموجودة في الكتل السابقة غير قابلة للتغيير.
2- - عداد التجزئة (Nonce):
هو الرقم المستخدم لمرة واحدة وهو القلب لخوارزمية اثبات العمل (POW) حيث يتمثل برقم صحيح يتم توليده عشوائياً ليستخدمه المعدن في تخمين تجزئة الكتلة.
3- الطابع الزمني (Timestamp):
هو الوقت الذي تم فيه إنشاء الكتلة.
4- الصعوبة (Difficulty):
هي مستوى الصعوبة الحالي في الشبكة لإنشاء كتلة جديدة. و يتم تخزينها بتنسيقات مختلفة في كل blockchain.
5- تجزئة جذر ميركل (Merkel root hash):
تعمل على جمع تجزئة المعاملات التي سيتم تضمينها في الكتلة حتى الوصول لتجزئة واحدة تسمى تجزئة الجذر مما يجعل التحقق من كل معاملة اسهل وضمن مسارات منظمة.
6- ارتفاع الكتلة (Block height):
يمثل ارتفاع الكتلة عدد الكتل التي تم تأكيدها في التاريخ الكامل لشبكة blockchain بدءاً من الكتلة الاولى (Genesis block) حتى أحدث كتلة.
جسم الكتلة (Block body)
ويشمل جميع البيانات المخزنة في الكتلة، مثل المعاملات (عنوان المرسل والمستلم والرصيد). وكل blockchain له تنسيق مختلف لتخزين المعاملات.
قناة احمد علي على تيليجرام ( شروحات تقنية ، تطبيقات ، أفلام ومسلسلات ، خلفيات ، و المزيد )
Last updated 2 months, 1 week ago
يرمز تيليجرام إلى الحريّة والخصوصيّة ويحوي العديد من المزايا سهلة الاستخدام.
Last updated 2 months, 3 weeks ago
- بوت الإعلانات: ? @FEFBOT -
- هناك طرق يجب ان تسلكها بمفردك لا اصدقاء، لا عائلة، ولا حتى شريك، فقط انت.
My Tragedy Lies With Those Things That Happen in One Second And Remain
- @NNEEN // ?: للأعلانات المدفوعة -
Last updated 2 months, 2 weeks ago