عاصم آل ناجي – Telegram
عاصم آل ناجي
532 subscribers
24 photos
5 videos
9 files
49 links
ثقافة برمجية بحته ، ومصادر تعليمية باللغة العربية .
الصفحة الشخصية : asem.buzog.com
حساب تلجرام : @AsemNaji
Download Telegram
Forwarded from Mohcin Bounouara's Space (Mohcin)
تجربتي مع العودة لبناء أسس صلبة للأساسيات و الخوارزميات في مجال هندسة البرمجيات. #5

تحدثنا في المقال السابق من هذه السلسلة عن وضع خطة للتعلّم بعد معرفة وتحديد الثغرات/الثقوب المعرفية، وذكرتُ بعض الاقتراحات والمصادر الموثوقة.. في هذا المقال، بإذن الله، سأشارك خطة عملية لكيفية جمع كل ذلك بصيغة تطبيقية.

تنويه مهم: بدء المشروع التطبيقي لا يعني بالضرورة أنك أنهيت مسار التعلّم، ولا يعني أيضًا أن التعلّم سيتوقف (حتى لو كنت في منتصف رحلة التعلّم، يمكنك أن تبدأ بالتطبيق مباشرة، ولا يجب أن تتوقف بمجرد إنهاء المسار أيضا)... باختصار، التعلّم النظري والتطبيقي مسيرة حياة بالنسبة للمبرمج.

لنفترض أنك تعلّمت أو بدأت التعلّم وتريد أن تجمع ذلك في خبرة عملية، ربما أخذت أساسيات من ال Frontend، والقليل من ال Backend، وبعض المفاهيم من قواعد البيانات.

في هذه المرحلة، يمكنك البحث عن أفكار مشاريع عبر منصّات مثل Upwork أو LinkedIn. الأفضل أن تختار مشروعًا خارج نطاق الأفكار التقليدية (مثل الافكار التقليدي: To-Do List)، وسأقترح بعض المشاريع في نهاية المقال.

بعد اختيار المشروع:

- اكتب مستندًا تقنيًا (Technical Document) بسيطًا يحتوي على الخصائص (Features) التي ستبنيها.

- أنشئ مخططًا أوليًا لقاعدة البيانات (Database Schema).

ثم ابدأ التنفيذ على مراحل: على سبيل المثال، حدّد إضافة ميزة جديدة كل أسبوع.. أعطِ كل ميزة وقتها الكافي من البحث، والبناء، والتحليل، والاختبار.

أنت هنا لا تلتزم بمواعيد تسليم صارمة (Deadlines)، بل تعمل لمصلحتك ولمصلحة تطوير ذاتك.. ومع الوقت، ستجد نفسك قد بنيت مشروعًا متكاملًا منذ الصفر، تعلمت من خلاله العديد من الأمور، وأصبح لديك Portfolio قوي.

بهذا الشكل ستستعمل اللغة أو الإطار (Framework) الذي تتعلّمه وأنت في وضع متحرك In Action. حتى لو كان لديك عمل بدوام كامل أو جزئي، اجعل هذا المشروع ملجأك للتعلّم المستمر.

كل ما ذكرته فوق،، أنا أيضًا أطبقه منذ أن بدأت تطوير مهاراتي وأساسياتي، فهو ليس كلامًا نظريًا بلا تجربة.

أمثلة لمشاريع:

- بناء API كيفما كان بلا فرونتآند
- بناء Dashboard باستخدام ال Full stack technologies
- بناء موق شخصي متكامل
- بناء منصلة مقالات
- بناء موقع لإجراء مسح معين.. و هكذا..

و مرة أخرى، الطريق طويل، لكن قليل دائم خير من كثير منقطع.
ولو 30 دقيقة يوميًا كافية للاستمرارية.

اللهم علّمنا وانفعنا بما علّمتنا.

والسلام عليكم.

#إستدراك_ما_فات_في_هندسة_البرمجيات
عاصم آل ناجي
السلام عليكم ورحمة الله وبركاته . اليوم وبعد عمل متواصل لمدة اسبوع كامل انتهيت من انجاز مكتبة للاتصال بقواعد البيانات من جافا بتقنية ORM . https://github.com/AsemNajee/JavaBase.git اقرأ ملف README لتعرف طريقة استخدام المكتبة بالشكل الصحيح .
قمت بتحديث المكتبة واضافة ميزات اليها .

فكرة المكتبة
من البداية المكتبة عباة عن تسهيل للارتباط بقواعد البيانات ، بدلا من الاستعلامات كل ما عليك فعله هو انشاء فئة وجعلها ترث من فئة محددة واضف خصائصك اليها ثم شغل ملف DevHandler وشغل الامر db:migrate وسيتم انشاء جدول تلقائيا في قاعدة البيانات بالخصائص الموجودة في الفئة التي انشاتها ... اقرأ ملف README لتعرف التفاصيل

يمكنك الان عمل استعلامات فرعية داخل الشروط

DB.from(Person.class).where("id", () -> DB.from(Book.class).select("id").where("name", "Asem"));

كما طورت العلاقات بانواعها حتى علاقة many to many باستخدام جدول وسيط .

افتح DevHandler وستجد فيه ادوات مساعدة للمطور استعملها .


شاركني باقتراح او نقد ، ارحب بالجميع ، وهل ترون ان اكتب لها توثيق شامل للاستخدام؟
Forwarded from الزَّنَاد
قالب Plus Ui للبلوجر اخر اصدار قمت بإزالة بعض الزوائد مثل وضع ltr وإضافة الترجمة وبعض الأشياء التي قد لا تكون مهمة.
لكن توقفت منذ مدة فالقالب به أكواد لحماية الحقوق يصعب إزالتها
لكنه صالح للعمل وأي شخص يريد إنشاء مدونة على بلوجر أنصحه به فهو الأفضل دون مبالغة.

عاينه من هنا(مؤقت):
https://blog.alzanad.org

رابط القالب:
https://news.1rj.ru/str/al_zanad/557

#بلوجر #PlusUi
🔗 رِباط التقنية
مجمع القنوات العربيّة التقنية

في زمنٍ تتشتّت فيه المعارف بين الآفاق، جمعنا لكم سلسلة القنوات العربية التقنية في مكانٍ واحد، لتكون دليلك إلى المحتوى النافع والطرح الرصين.

📌 استعرض القنوات عبر الموقع:
https://alzanad.github.io/ribat-altaqniyyah

📜 اشترك مباشرةً في القائمة الموحّدة على تليجرام:
https://news.1rj.ru/str/addlist/Gg-LFze5N89mMTJk

💬 للراغبين في الإضافة أو التواصل حول المبادرة:
@alzaanad

#رباط_التقنية
من اكثر الامور الغريبة التي واجهتني في البرمجة
PHP
طباعة قيمة متغير
<?php

$name = "Muhammad";
$variableName = "name";
echo $$variableName;
المخرج
Muhammad

Java
ArrayList<String> list
new ArrayList<>(){{
add("Muhammed");
add("Ali");
}};
هكذا يمكنك استعمال دوال الفئة ArrayList او اي فئة اخرى عند انشاء الكائن .

هذه امثلة بسيطة من تفاصيل تقنية في التعامل مع اللغة وساشارك تفاصيل reflection ان شاء الله قريباً ، فبها يحدث السحر في البرمجة .
Forwarded from قهوة مبرمجين
Transactions_and_Concurrency_Control.pdf
6.3 MB
لو تشتغل على جافا، أنصحك تقرأ آخر إصدار من كتاب “Troubleshooting Java”.

الكتاب مليان أشياء عملية: من أفضل ممارسات الـdebugging، إلى الـlogging، الـtracing، الـtelemetry، نموذج الذاكرة في جافا، منع الـdeadlocks، وكمان الـprofiling والـsampling.

قراءة ممتازة لو تحب تفهم وش يصير تحت غطاء الـJVM وكيف تلاقي المشاكل بسرعة في الإنتاج.
السلام عليكم ورحمة الله وبركاته .

المستودع العاري في Git

العنوان غريب لكن في git كما هو متعارف يمكن ان نتحكم باصدارات المشروع على حاسوبنا الشخصي ، واذا كنا نعمل مع فريق فنستعمل github كمستوع على الانترنت ويعتبر المستودع المركزي ، لكن ايضاً قد يمكن ان نستعمل مستودع مركزي ليس على الانترنت وانما على الحاسوب نفسه .

عادةً لانشاء مستودع نستعمل الامر :
git init

وهذا ينشئ مستودع جديد محلي وليس مركزي ، وهذا امر متعارف عليه ، لكن اذا اردنا ان ننشئ مستودع مركزي نستعمل الامر التالي :
git init —bare

فقط حددنا ان المشروع عبارة عن bare وهذه الكلمة معناها "عارٍ" وسبب التسميه انه متعارف في المستودع العادي يكون لدينا working directory وهي ملفات المشروع التي نعمل عليها و .git وفيه معلومات التغيرات والاصدارات ، اما المستودع على المركزي يستعمل فقط المجلد git directory اي انه لا يحتوي على ملفات المشروع ولهذا سمي عارٍ .

دعونا ناخذ مثالاً بسيطاً :
نذهب الى "C/BareRepo" ننفذ الامر
git init --bare

ثم نذهب الى "C/SimpleRepo" وننشئ مستودع عادي
git init

ونضيف فيه اي ملفات ونحفظ ب commit :
echo "Hello, World" >> hello.txt
git add .
git commit -m "init project"

ثم الان نربط المستودع بالمستودع المركزي كمستودع remote هكذا:
git remote add origin C/BareRepo

الان يمكننا رفع المستودع اليه عبر :
git push -u origin main

ويمكنك استعمال جميع الاوامر كما لو انك تتعامل مع Github تقريباُ .
السلام عليكم ورحمة الله وبركاته

غالباً ما نسمع عن برمجة بوتات التلجرام اما بphp او python وهذا ما اضطرني الى تعلم php منذ نعومة اضفاري كتعبير مجازي ، لكن المشكلة انك بعد ان تبرمج بوتك لا يمكنك تجربته في استضافة موثوقة تدوم معك لهذا كان حتماً علي ان ابحث عن بديل افضل وصدفة تذكرت ان JS تعمل كسيرفر على node.js ومن هنا بدات ابحث عن طريقة لتشغيل بوت تلجرام عليها والمثير للاهتمام انه يوجد مكتبة جميلة جداً ومدعومة بقوة لهذا الشيء وهيTelegraf js.

تساعدك المكتبة على تطوير بوتات رائعة خصوصاً ان كنت تتعامل مع TypeScript لانها ستساعدك كثيراً .
يمكنك الاعتماد على الاستضافة الرسمية الخاصة ب Node js وهي Vercel لرفع اي مشروع يعمل ب Node مجاناً

المكتبة لديها توثيق شامل هنا : https://telegraf.js.org/
Media is too big
VIEW IN TELEGRAM
مهم جدا... عن القمار الإلكتروني المنتشر بين الشباب هذه الأيام

اللعبة اللي دمرت شباب مصر وخسرتهم كل فلوسهم
كريم السيد
🔗 رباط التقنية
المجمع العربي للقنوات التقنية

جمعنا لك أفضل القنوات التقنية العربية في مكان واحد، لتجد كل المحتوى المفيد بسهولة وبلا عناء.

📌 تصفح القنوات عبر الموقع:
https://alzanad.github.io/ribat-altaqniyyah

📜 اشترك بالقائمة الموحدة على تليجرام:
https://news.1rj.ru/str/addlist/Gg-LFze5N89mMTJk

💬 للإنضمام راجع الشروط على الموقع:
@alzaanad

#رباط_التقنية
Forwarded from Mohcin Bounouara's Space (Mohcin)
لإرجاع جميع حالات ال enums في Laravel/PHP، استخدم method الحالات الثابتة ()static cases التي توفرها لغة PHP.

#PHP
DCAP503_SOFTWARE_TESTING_AND_QUALITY_ASSURANCE.pdf
4.7 MB
مرجع مميز مختصر في فحص البرمجيات
الفصل الثالث.pdf
404.7 KB
هذه ترجمات لبعض فصول المرجع ساعدني بها احد الزملاء جزاه الله خيراً .
Forwarded from حسان زوزو
النعيم المعجل 😁
السلام عليكم ورحمة الله وبركاته

في عالم الويب وتحديداً تطبيقات ال Backend لدينا نوعان تقريباً من التطبيقات ، وهي التطبيقات العادية التي ترد بصفحات html والتطبيقات التي ترد ببيانات فقط والتي تسمى api .
يتميز النوع الثاني بانه اكثر احترافية لان استعمالهم لا يقتصر على صفحات الانترنت التى في المتصفح فقط ، بل يمتد استعمالهم الى اغلب انواع التطبيقات التي تعمل كواجهة للمستخدم مثل تطبيقات الاندرويد او تطبيقات سطح المكتب .

دعونا اليوم نرى كيف يمكن عمل api بسيط باستخدام php ، لذا جهز محررك وابدا معي الخطوات البسيطة التالية :
1 - انشئ مشروع جديد (مجلد) باسم api (او اي اسم) .
2 - انشئ ملف بداخله باسم index.php وافتح المشروع على محررك .
3 - اكتب الكود التالي في الملف .
<?php 

header("Content-Type: application/json");
// get data from database and make your logic
$array = array(
"name" => "Ali",
"age" => 20
);

echo json_encode($array);


4 - شغل المشروع
تم ، الان اصبح لديك api بسيط يعيد بيانات بصيغة json .

دعني اشرح الغريب في الكود ، اولاً والزامياً تحديد نوع الرد داخل دالة header وحددنا ان قيمة Content-Type هي application/json اي ان الرد عبارة عن json .
ثانياً بالسطر الاخير قمنا بطباعة البيانات لكن باستخدام دالة json_encode والتي تقوم بتحويل المصفوفة الى json .

الان السؤال الاهم ، كيف اجلب البيانات من هذا الapi ؟ والامر بسيط وبدون تعقيد انظر الكود التالي الذي يقوم بجلب البيانات من هذا الapi باعتبار ان الapi شعمل على localhost:8000 كالتالي :
<!DOCTYPE html>
<html lang="en">
<head>
<noscript>Test api</noscript>
</head>
<body>
<div id="content">Click the button</div>
<button onclick="getData()">Get Data</button>

<noscript>
async function getData(){
const data = await fetch("http://localhost:8000/");
const jsonData = await data.json();
const div = document.getElementById("content");
div.innerHTML = `Name is : ${jsonData['name']}<br>Age is ${jsonData['age']}`;
}
</noscript>
</body>
</html>


الصفحة السابقة تقوم بتنفيذ الدالة getData عند النقر على الزر ، والذي يقوم بارسال طلب الى رابط الapi ويجب ان تكون الدالة متزامنة async ، بعد ان ترسل الطلب يتم تحويل الرد الى مصفوفة بالسطر الذي يليه باستخدام الدالة data.json() ثم يتم طباعة النتائج .

ما سبق كان تطبيق api بسيط ، ان شاء الله سيكون لدينا تفصيل اكثر لاستعمال ال EndPoints بشكل اكثر تقدماً ، يمكنك رؤية احد المشاريع التي شاركت بها في عمل معمارية بدائية مشابهة للارافيل على Github .
مكونات مفتوحة المصدر جاهزة لاكثر من اطار عمل تسهل عليك حياتك .
رابط الموقع : https://flowbite.com

يمكنك تحميل الموقع من github على الرابط : https://github.com/themesberg
في عالم مفتوح المصدر وجدت منصة بنيت على انها تويتر (x حالياً) ولكنها لا مركزية .

لمحبي الخصوصية والمنصات التي لا تجمع البيانات
https://asemnajee.bsky.social
Forwarded from بزوغ
كودتك
منصة عربية متخصصة في نشر المحتوى التقني والبرمجي. نسعى لتوفير محتوى تعليمي عالي الجودة للمطورين العرب.

قريباً ...