2018/07/14

Python collections

 هناك أربعة أنواع من مجموعات البيانات collections في لغة برمجة Python:
  •  List ... القائمة عبارة عن مجموعة يتم طلبها وقابلة للتغيير. لا تسمح بتكرار البيانات.
  •  Tuple ... عبارة عن مجموعة يتم طلبها ولا يمكن تغييرها. تسمح بالتكرار.
  •  Set ... الفئة عبارة عن مجموعة غير مرتبة وغير مفهرسة. لا تسمح بتكرار البيانات.
  •  Dictionary ... القاموس عبارة عن ازواج من البيانات الغير مرتبة القابلة للتغيير و الفهرسة. لايسمح بالتكرار.

اختيار نوع من مجموعات البيانات السابقة يتم استنادا لخواص هذا النوع و مدى ملائمتها لطبيعة البيانات المطلوب تخزينها و طبيعة العمليات الممكن اجرائها على هذه البيانات.

القوائم المرتبة Lists

من هياكل البيانات المتاحة فى بايثون القوائم المرتبة و التى تسمح بالاحتفاظ بمجموعة من القيم بترتيب يتناسب مع نوع البيانات كما انها تسمح بالتغيير فى هذه القيم لذا فهى sorted & mutable (changeable)


# Create a fruit list
fruits = ["apple", "banana", "cherry"]

# Add one more --- Error
# fruits[3]='orange'

# Add one more --- Error
fruits.append('orange')

# show list 
print(fruits)

2017/12/25

مخاطر التحويل البنكى للفريلانسرز

يعد العمل الحر Freelancing  واحد من اهم مميزات العمل فى مجال تطوير البرمجيات و مواقع الانترنت،  و هناك العديد من الشركات العالمية التى تتيح للمطورين العمل معها عن بعد بما يتيح لهم التركيز على انتاج برمجيات متميزة حيث توفر هذه الشركات الخدمات التسويقية و الوصول السريع للعملاء مع ضمان استلام الدفعات النقدية من العملاء و خدمات الوساطة فى حالات النزاع.

هناك العديد من الشركات التى يمكنك كمبرمج الالتحاق بها و العمل معها عن طريق انشاء صفحة لخدماتك او عن طريق ارسال عروض اسعار للعملاء ، و على الرغم من ان العمل الحر ليس حديث العهد فى مصر و يعد من احد موارد العملة الصعبة الا ان المؤسسات المالية فى مصر لا تزال جاهله بفكرة العمل الحر فى مجال البرمجيات و تعد من اهم العقبات التى تواجهة اى مبرمج عند حاجته لتحويل امواله من مواقع ال Freelanceing  الى حسابة البنكى.

على الرغم من انتظار العاملين فى مصر لسنوات لتوافر خدمات مثل ال Paypal و التى اتاحت للمصرين فتح حساب مصرى مؤخرا مع امكانية السحب على بطاقات VISA  المصدرة محليا الا ان خدمات تحويل اخرى مثل PAYONEER , SKRILL لا تزال تعانى على الرغم من شهرة هذه الشركات كخدمات تحويل اموال الا ان التحويلات منها الى البنوك المصرية يحمل الكثير من المخاطر.
فى الغالب تكمن المخاطرة فى التحويل الأول و عليه فإنت مضطر لزيارة فرع البنك الخاص بك و اعلامهم بانتظارك تحويل من جهة تحويل اموال و عليك كشخص يحافظ على امواله شرح معنى خدمة تحويل اموال للموظف المختص !!!!

بعد التحويل الأول انت فى امان فى اغلب البنوك الا بنك QNB  القطرى مؤخرا لأسباب غير معروفة قد تكون بسبب موقف البنك السياسى او نتيجة خسارة البنك لمبالغ ضخمة من سحب المودعين لأموالهم فى الفترة الأخيرة او نتيجة تخبط ادارة البنك و تغيير العديد من الموظفين بموظفين جدد ليس لديهم الخبرة الكافية ، مع كل هذا اصبح البنك يرفض التحويلات الدولاريه بدون سابق انذار.

تخيل انك تنام فى امان بعد يوم سهر شاق على احدى مشروعاتك ويصلك اتصال من احد ممثلى البنك يخبرك بأن التحويل المنتظر قد رفض و تم ارجاعه الى المصدر!!!!



تعرضت لنفس الموقف من سنوات مع تحويل من خدمة سكريل الى حسابى ب QNB و بعد خوض معركة كلامية مع الموظف عرفت ان التحويل وصل للبنك ولكن لم يتم ربطه بحسابى و بعد تسليم عدة اوراق تثبت مصدر التحويل و الكود المرجعى و المبلغ تمكنت بحمد الله من اعادة المبلغ لحسابى و لكن هذا الشهر ديسمبر 2017 تعرضت احدى صديقاتى لنفس الامر بعد سنة من التعامل مع خدمة بايونيير و التحويل بينها و بين حسابها البنكى تم رفض التحويل من البنك و طالبوها بتسليم سكرين شوت من المحادثة بينها و بين العميل مصدر التحويل !!!!

طبعا حاولنا التوضيح للموظف ان التحويل من خدمة تحويل اموال و سبق التحويل منها لحساب صديقتى من قبل الا ان الموظف محدود الخبرة لم يفهم المقصود بكلامنا ولا بمعنى خدمة تحويل اموال ولا بخدمات Paypal  ولا اى وسيلة للدفع الاليكترونى و عليه رفض التحويل و تم رد العمليه.

تكمن المشكلة الحقيقية فى حالات رد التحويل ان شركات تحويل الاموال قد لا تتمكن من اثبات رد التحويل و تطلب منك اوراق تثبت ان البنك رفض التحويل ولكن هل سيسلمك البنك الاوراق اللازمة فى تجربتنا الصغيرة لم نتمكن من تسلم اى اوراق من QNB تفيد ان التحويل تم رفضه بحجه ان التحويل لم يدخل للحساب من الأساس ولم نتمكن حتى الأن من اثبات عدم استلام المبلغ و عليه ضاع مجهود شهر من العمل الشاق سدى نتيجة لموظف عدين الخبرة ببنك غير متعاون!!!

كنتيجة لهذه التجربة وددت ان اشاركم فى بعض التفاصيل التى قد تساعد فى تجنب مثل هذه المواقف 
1- حاول بقدر الامكان استلام اموالك ببطاقات القبض مباشرة من ال ATM 
2- تأكد من ان البنك الخاص بك على معرفه بالشركة المسئولة عن التحويل او على الاقل قم بالبحث على الانترنت عن مشاكل مشابهة مع هذا البنك
3- عند رفض تحويل اطلب مباشرة من موظف البنك اوراق تفيد رفض التحويل من قبل البنك و بيانات العملية العكسية لرد التحويل
4- فى حالة رفض البنك تسليمك الاوراق اللازمة اتصل بأرقام حماية المستهلك او بشكاوى البنوك لدى البنك المركزى



التحديث الأول بخصوص موقف QNB 
بعد محاولات للوصول لحل مع الموظفة توجهت لمكتب مدير الفرع وبعد ان وضحت له الموقف طلب منى الاطلاع على كارت سحب بايونير لمطابقة اسم صاحب الحساب ولما وجد ان اسم صديقتى هو نفسه فى سند التحويل و على كارت السحب طلب من الموظفة اثبات ذلك فى ملفات البنك و قبول التحويلات المستقبلية من ذات الجهة بل و استنكر عدم قيام الموظفة بهذا الإجراء. طلبنا مستند يثبت رد التحويل و تقدمنا لشكوى ضد الموظفة اثبتنا فيها ما تم.

ماذا حدث للمبلغ؟
بعد ان استلمنا مستند يثبت رد التحويل لمصدره من البنك و ارساله لبايونير تم رد المبلغ للحساب بعد 15 يوم عمل.

هل المشكلة خاصة ببنك بعينه؟
حينما تعرضت صديقتى لهذا الموقف شعرت بالدهشة حيث اننى اتلقى دفعاتى من بايونيرعلى بنك CIB بدون مشكلة ( بعد مشكلتى مع QNB لم استمر فى التعامل مع البنك ) فقط اتصل بى موظف البنك للتأكد من بيانات التحويل وارسلت له بعد التفاصيل على ايميل خدمة العملاء بعدها استقبلت التحويلات بدون الحاجة لإعادة التأكيد و ظل الحال هكذا لفترة حتى استيقظت فى يوم على مكالمة من البنك ملخصها ان البنك رفض تحويل لحسابى لعدم وجود اسم جهة التحويل فى سند التحويل.

هذه المرة المشكلة ليست فى البنك!!
بعد مراسلات بينى و بين بايونير اتضح لى ان سند التحويل فعليا لا يحتوى على اسم بايونير او اسم صاحب الحساب الأمر الذى اصبح مخالفا لشروط التحويلات المسموح بها فى غالبية البنوك المصرية كمحاولة للحد من التحويلات مجهولة المصدر التى تصب فى مسارات غير قانونية.
تكرر الأمر مرتان فى كل مرة تم رد المبلغ لحساب بايونير بعد 15 يوم عمل بدون مراسلة خدمة العملاء، مع ذلك الأمر مزعج للغاية.

ما لوضع الأن؟
 توقفت عن التحويل لفترة لابتعادى عن العمل الحر و انشغالى بالدراسة ولكن حسب ماورد الى من بايونير تم اضافة خاصية طباعة اثبات عملية التحويل و الذى يمكن استخدامه فى اثبات مصدر التحويل لدى البنك حتى هذه اللحظة لم اقم باختبار هذا الأمر.

2017/03/13

اساسيات الشبكات :: نموذج OSI

فى عام 1984 ، اعادة منظمة International Standards Organization (ISO) تشكيل المواصفت التى وضعتها لاتصال اجهزة الشبكات ببعضها البعض واصدرت Open System Interconnection Reference Model وهو ما يطلق عليه Open Interconnect او OSI model . يعتبر هذا النموذج المقياس المتعارف عليه دوليا للاتصال عبر الشبكات . يضم هذا النموذج خطة عمل قياسية مفصلة لتصميم وتطبيق وتشغيل اجهزة وبرامج الاتصال عبر الشبكات . يشتمل ايضا على القواعد الاساسية للتشغيل والاتصال لكل نظم تشغيل الشبكات ، بالاضافة الى القواعد المرتبطة بارسال الرسائل عبر الشبكات واجهزة الاتصال .

نظرة عامة على نموذج OSI

كمقياس متعارف عليه ، يعمل نموذج OSI  كخطة عمل مفصلة او اطار عمل للطرق التى يجب ان تتفاعل بها اجهزة الشبكات والبروتوكولات والخدمات مع بعضها البعض . قد يكون هناك اختلاف قليل بالنسبية لكيفية تفاعل البروتوكولات والاجهزة مع بعضها بعض ضمن احد مستويات شبكة الاتصال ، لكن الهيكل الاساسى لنموذج OSI لا يتغير ابدا .
يتكون نموذج OSI من سبعة مستويات كما يلى :

مستويات نموذج OSI

تتسم المستويات السبع لنموذج OSI بانها مختلفة عن بعضها البعض . يحدد كل مستوى مجموعة منفصلة من الوظائف والبروتوكولات والاجهزة والاجراءات المستخدمة فى نقل الرسائل عبر الشبكة .

مستوى Physical (المستوى الاول)

كما هو واضح من الاسم ، يهتم هذا المستوى بالطبيعة الفعلية لشبكة الاتصال ، بما فيها توصل الكابلات والموصلات وكروت الشبكة ، بالضافة الى العمليات التى تحول البتات الى اشارات عند الارسال وتحول الاشارات الى بتات عند الاستقبال . سيتطرق الفصل التاسع لهذة المهام بالتفصيل .

مستوى Data Link (المستوى الثانى)

يهتم هذا المستوى بتقديم سياق للبتات التى سبق وتحدثنا عنها فى مستوى Physical حيث يقوم بتنسيقها فى شكل حزم من البيانات . يقوم هذا المستوى ايضا خدمات التحقق من وجود الاخطاء وتصحيحها وتجنب وجود تعارض فى عمليات الارسال التى تتم على الشبكة . سيتطرق الفصل العاشر بالتفصيل لمهام هذا المستوى.

مستوى Network (المستوى الثالث)

يعد هذا المستوى عناوين للبيانات عند تسليمها ويحول عناويون فعلية. كما يتولى هذا المستوى مسئولية توجيه الرسائل المريلة عبر الشبكة وكذلك مهام العمل المرتبطة بشبكات الاتصال المشتركة . يذكر الفصل الحادى عشر كل ما تحتاج الى معرفتة عن هذا المستوى .

مستوى  Transport (المستوى الرابع)

يتعامل هذا المستوى من نموذج OSI مع الاتصال القائم بين اجهزة الكمبيوتر المتصلة بالشبكة وما يتم تبادله من رسائل بين هذة الاجهزة . علاوة على ذلك ، يضاهى هذا المستوى هذة الرسائل  بالامكانيات والقيود الخاصة بالوسيلة التى تستخدمها الشبكة فى تبادل الرسائل . يقسم هذا المستوى ايضا الرسائل الى اجزاء صغيرة عند ارسلها ثم يعيد تجميعها عند تسليمها الى الوجهات المرسلة اليها ، وعادة ما يعاد تجميعها بالترتيب الصحيح يشكل ظاهرى . كما يدعم مستوى Transport تسليم الرسائل والتحقق من وجود الاخطاء ومهما الاستعادة . انظر الفصل الثانى عشر .

مستوى Session(المستوى الخامس)

يدير هذا المستوى نوبات عمل الاتصال ، بما فى ذلك اليات التعارف (التى تستخدمها اجهزة الاتصال ، التى تجرى الاتصال مع تحديد المسار مسبقا ، فى انشاء نوبات العمل) والنظام الامنى واليات الاتصال المستمرة .

مستوى Presentation (المستوى السادس)

يتم فى هذا انموذج تجميع رسائل البيانات الاولية فى صورة نموذج عام لتامينها عند ارسالها عبر الشبكة . ويتم تقسيم الرسائل الواردة وتنسقيها على نحو مناسب من اجل التطبيق الذى سيستقبلها .

مستوى Application (المستوى السابع)

كما هو واضح من الاسم ، يتخذ هذا المستوى موضع الواجهة بالنسبة للتطبيقات التى تسعى للحصول على حق وصول الى شبكة الاتصال . لا تخلط بين مستوى Application وبرامج التطبيقات Microsoft Office او WordPerfect او Corel Draw او تلك الخاصة بالمستخدم النهائى . وفى هذا المستوى ، تعما التطبيقات مثل Windows NT Server او NetWare وكذلك خدمات معينة خاصة بالشبكات مثل FTP و HTTP و TELNET و SMTP.

اساسيات الشبكات :: النطاقات Domains




 

كلمة نطاق لها استخدامات عديدة فى علوم الحاسب عموما و فى الشبكات خصوصا ، نتحدث هنا عن انواع نطاقات الانترنت و ما الدور الذى تقوم به فى شبكات الكمبيوتر .

اساسيات الشبكات :: تصنيفات الشبكات





شبكات الـكمبيوتر أو شبكات البيانات هى عبارة عن شبكة الاتصالات السلكية واللاسلكية التي تتيح للاطراف المتصلة nodes  مشاركة الموارد المتاحة في الشبكة، وتتبادل أجهزة الكمبيوتر المتصلة بالشبكة البيانات مع بعضها البعض باستخدام وصلات البيانات و التى قد تكون سلكية او لا سلكية.

2016/12/21

قواعد البيانات :: المفاهيم الاساسية لمخطط البيانات النهائية Relational Model

يعد مخطط البيانات النهائى Relational Model احد اساليب تمثيل قواعد البيانات Databases والذى يتناول قاعدة البيانات Database على انها مجموعة Collection منالعلاقات Relations، والعلاقة Relation هنا مصطلح يرمز الى الجدول وحو مجموعة من القيم values على شكل صفوف وكل صف فى هذا الجدول يمثل مجموعة من البيانات والتى ترتبط مع بعضها البعض بعلاقة معينة

ما هو الفرق بين database server و database desktop

ما هو الفرق بين database server و database desktop

الفرق بين قواعد البيانات التى تدعم الشبكات database   servers مثل الـــــoracle والـــــSQL  server وقواعد البيانات الخاصة بالنظمة الصغيرة database  desktop مثل الــــــAccess كبير ويمكن الفرق هنا عزيزى القارئ فى اين سيتم تنفيذ الاسعلام ولكى نفهم هذا الكلام دعنا نتخيل الحالة التالية بفرض ان لدينا 5 اجزة متصلين مع بعضهم البعض وكانت قاعدة البيانات موجودة على جهاز A وبفرض ان هناك قاعدة بياناغت oracle على الجهاز  A وبها جدول للموظفين على سبيل المثال به 100000 موظف وبفرض ان احد الاجهزة المتصلة بالــــA طلب اكبر 10 مرتبات ستجد هنا ان الجهاز A هو الذر سينفذ الاستعلام ويرسل الـــــ10 موظفين الى الجهاز الذى طلب هذا الاستعلام اما اذا كان لدينا ايضا 5 اجهزة متصلين مع بعضهم البعض وكانت قاعدة البيانات الموجودة على جهاز  B اى ان هناك قاعدة بيانات Access على جهاز B وبها جدول للموظفين على سبيل المثال به 100000 موظف وبفرض ان احد الاجهزة المتصلة بالـــــB طلب اكبر 10 مرتبات ستجد هنا ان الجهاز Bليس هو الذى سينفذ الاستعلام ولكنه سيرسل نسخة من الجدول الى الجهاز الذى طلب هذا الاستعلام ليقون هذا الجهاز بنفسه بالاستعلام عما يريد وذلك معناه انه فى الحالة الاولى بفرض ان الاربعة اجهزة طلبت نفس بالاستعلام من الــــــOracle فالذى سيمر فى الشبكة هو 10*4 اى 40 سجل او موظف اما فى الحالة الثانية وبفرض ان الاربعة احهزة طلبت نفس الاستعلام من الــــAccess فالذى سيمر فى الشبكة هو 10000*4 اى 40000 سجل او موظف.

تصميم قواعد البيانات :: ما هى قواعد البيانات Database

ما هى قواعد البيانات Database
قاعدة البيانات هى عبارة عن ملف تخزن فيه البيانات بصورة معينة تمكننا من الاستعلام عنها و استرجاعها يمكنك التفكير فى قاعدة البيانات كدليل تليفون البيانات داخلة منظمة و مرتبة بنظام معين يسهل الوصول اليها .