Wajdy Essam

مهندس برمجيات

http://informatic-ar.com

569 نقاط السمعة
223 ألف مشاهدات المحتوى
عضو منذ
لم اكتب من فترة طويلة للأسف، وهي فترة انشط ومن ثم انشغل ايضاً.. لكن على ما يبدوا ان هناك زوار https://suar.me/Q07Ga
وجود اي شيء أخر في مواقع ال QA غير مناسب كالاعلانات المقالات الخ.. وسوف يضر بالهدف الاساسي. التقسيمات ويب وموبايل هذه ليست ضرورية، لا يمكن حصر الاسئلة في هذه الاقسام. مثلاً اسئلة عن ال unicode او ال timezone او ال DDD.. وايضاً اختيار لغة برمجة في السؤال غير مناسب.. العديد من الاسئلة لا علاقة لها بلغة البرمجة مثلاً شخص يسأل عن oAuth Flow مناسب الخصائص كالمجموعات ليست ضرورية، ركز اولاً على نجاح ال QA واستقطاب عقليات جيدة وبعدها اضف ميزات
لقرائة الملفات الكبيرة يمكن استخدام EditPad ويدعم ال RTL: https://www.editpadlite.com/
عملية المسح هي resetting اي تغيير قيمة الباسورد لاصفار، وهذه العملية مضمونة وسوف يكون الباسورد في الذاكرة اصفاراً بعد قرائة الذاكرة. وبالتأكيد سوف يضمن نظام التشغيل ان القيمة تم تغييرها في الذاكرة، والا كيف نضمن ان المتغيرات في البرنامج تتغير قيمتها اثناء العمل، بدون هذا الأمر لن تعمل كل البرامج صحيحاً.
صحيح، ولكن اذا كان البرنامج مكتوب بطريقة امنة فسوف يقوم بعمل clear لقيمة الباسورد في الذاكرة مباشرة بعد الانتهاء منها. ولذلك نجد لغات البرمجة احياناً تجبر على هذا الامر، مثلاً جافا تجبرك عند التعامل مع ال GUI على استرجاع كلمة المرور في array of chars وليس String حيث الأولى يمكنك تصفيرها بسهولة، بعكس ال String الذي هو لا يتغير محتواه ويبقى في ال Pool لاعادة الاستخدام لاحقاً، لذلك من الممكن بسهولة عمل dump واسترجاعه، على اي حال حتى ال array
أيضاً هذا الكود ليس آمناً. 1) الدالة rand هي PRNG وهي تولد اعداد عشوائية قابلة للتوقع، الأفضل استخدام دالة تولد أعداد عشوائية أمنة غير قابلة للتوقع لل Salt. 2) الدالة MD5 هي دالة Hashing ولكنها ضعيفه Broken Hashing Method وبها تصادمات كثيرة. 3) الHashing مع ال salt غير مناسبتان لحفظ كلمات المرور لأنها دوال سريعة في الحساب ويستطيع المخترق عمل brute force لملايين الكلمات في ثانية او اقل حتى. الذي يفترض ان تستخدم دالة مشابه لل Hashing + Salt ولكن
مثلاً MySQL أو PostgreSQL او Oracle اي شيء RDBMS يناسب طبعاً القاعدة سوف تكون موجود على سيرفر ما، وسوف تقوم بعمل Web Service/API حتى يستطيع التطبيق التعامل وارسال واستقبال البيانات. لذلك قم بتصميم القاعدة، وقم بعمل API وتأكد من أنها امنة حيث اي خطأ او مشكلة في الأمان قد يكلفك الكثير، الا لو كان المشروع ليس لشيء حقيقي. بعد ذلك التطبيقات، سواء اندرويد او ايفون، سوف تتعامل مع تلك ال API ولن تحتاج لقاعدة بيانات محلية، ولكن يمكن اضافتها اذا
اين من سيعمل على ال Back-end ؟ بدون back end مبني بطريقة صحيحة باستخدام Queue, Caching, SQL/NoSQL, REST, Searching, Authentication وكتابته بطريقة تسمح له بالترقية Horizontal Scaling بشكل سلس. فسوف تواجه صعوبة مع الوقت خصوصاً لو كانت الفكرة جيدة ويتوقع النمو لها ولديكم التمويل لها، فالبداية بمعمارية بمناسبة أمر مهم. نفس الأمر اذا كنت ستطور Web Front End فسوف تحتاج لمن يعمل بها، وال front end تختلف عن ال back end تماماً. الافضل تسمية android team و iOS Team لأن
هو Thread عادي ولكن بفرق بسيط هو ان ال JVM سوف تنهى كل ال Daemon Threads عندما ينتهي عمل البرنامج ولن يتم انتظارها. بعكس ال Threads العادية فالبرنامج لن ينتهي طالما هناك Thread يعمل. طبعاً انتهاء البرنامج ليس متعلقاً بالدالة الرئيسية main وانما بعدد ال Thread فيه، فالبرامج الكونسول تنتهي لأن هناك Thread واحد وينتهي لذلك ينتهي البرنامج، لكن مثلاً في ال GUI Application سوف يكون هناك أكثر من Thread أخر يعمل لذلك لن ينتهى البرنامج بعد انتهاء الدالة الرئيسية
هناك العديد من الخدمات المشابه، ولا أعتقد بوجود مشكلة فيها. وبشكل عام طالما المتصفح يثق بالشهادة الناتجة منهم فهذا يعني ان موقعك Trusted بواسطة جهة اعلى تثق بتلك الخدمة، وان المتصفح يثق في تلك الجهة العليا. فقط تأكد انه اثناء توليد الشهادة الرقمية لا يأخذوا منك المفتاح الخاص private key، وانما تقوم انت بعمل ال Certificate Signing Request (مثلاً باستخدام OpenSSL) وترسله له وهم يقوموا بتوقيعه وارسال الشهادة لك وتقوم باضافتها على الويب سيرفر. وايضاَ تأكد انهم لا يقوموا بتنزيل
هل انت فعلاً تقوم بعمل import لملفات xls أم csv ؟ لأن الاثنين مختلفين عن بعضهما البعض.. ويبدوا من الدالة انها لل csv ، ولكنك ذكرت "حولت ملف xls الى ملف csv" ؟ ولهذا السؤال مبهم، لو ارفقت مثال على ملف ال csv الذي به مشكلة.
اصنع طريقك بنفسك. واقراً: في الشبكات والتشفير: https://www.amazon.com/TCP-Guide-Comprehensive-Illustrated-Protocols/dp/159327047X/ https://www.amazon.com/Implementing-SSL-TLS-Using-Cryptography/dp/0470920416/ في بنية الانظمة: https://www.amazon.com/Windows-via-Jeffrey-M-Richter/dp/0735624240/ https://www.amazon.com/Hacking-Art-Exploitation-Jon-Erickson/dp/1593271441/ https://www.amazon.com/Windows-Internals-Part-architecture-management/dp/0735684189/ في البرامج الخبيثة: https://www.amazon.com/Malware-Analysts-Cookbook-DVD-Techniques/dp/0470613033/ https://www.amazon.com/Practical-Malware-Analysis-Hands-Dissecting/dp/1593272901/ https://www.amazon.com/Art-Memory-Forensics-Detecting-Malware/dp/1118825098/ في الويب: https://www.amazon.com/Web-Application-Hackers-Handbook-Exploiting/dp/1118026470/ بالاضافة الى البرمجة وقواعد البيانات ايضاً. وهناك الكثير ايضاً من الكتب والدورات، والمقصد ان تتعلم كيف تعمل الاشياء وكيف تقوم بعملها اذا اردت، وسوف تعطيك علماً حقيقاً وليس مجرد اداة أو ادوات لكي تشغلها وتقوم بالاختراق وانت لا تدري ماذا تفعل.
عادة مثل هذه التقييمات تعبر عن شيء معين ولا يفترض ان يبنى المرء رأي نهائي حولها، سواء لهذا الموقع او غيره مثلاً TIOBE ، وقد سبق ان اشرت لذلك: https://www.manshar.com/articles/2522/ التصنيف الذي وضعته يقيم على اساس عدد النجوم في Github وعدد الأسئلة المطروحة في موقع Stackoverflow، ويتضح ان ال ASP.NET لا يوجد لديها stars على ال Github بينما تحتل الاكثر اسئلة عل ال StackOverflow، والسبب لأنها تقنية موجودة من عشرة سنوات أو أكثر وبها الكثير من الأمور يندرج تحت هذا
بلا شك هو لا يهتم بالموقع الآن ولم يحدثه منذ وقته كتابته في فترة 2007، لذلك من الطبيعي ان تجد اخطاء، فكل المشاريع ما لم تحدث باستمرار فقد يكون بها مشاكل،، وقبل أن تنتقد المطورين أو تحكم عليهم قم أولاً بتعلم كتابة اسمهم بشكل صحيح يا ديفيرلوبر.
كتبت الكثير من ال Web Scrappers فيما سبق، وولدينا خدمة تعتمد على اعتماداً كلياً على بيانات نجلبها من موقع معروف في مجال الأسهم ونأخذ منه الاسعار، والمشكلة ان الموقع غير تصميمه ربما 3 مرات فاضطرينا اعادة كتابة الكود كلما حصل تغيير في بنية الصفحة. واخر تحديث قام بتطبيق تشفير على الصفحة بحيث ترجع مشفرة وهناك اكواد جافا سكربت تقوم بفكها وعرض البيانات. وطبعاً هذا صعب جداً وقد تحتاج لمعرفة الالية. الحل الاخير الذي قمنا به هو تشغيل متصفح داخل التطبيق
11
لماذا اذا تريد أن تتعملها الان وتنشيء بر امج بسيطة موجودة ومتوفرة؟ فكل البرامج التي تريد انشائها موجودة وبحسب نظريتك فلا داعي لتعلمها ، فلماذا تريد ان تتعب نفسك الان؟
هذه المسميات ليست معياراً حتى تقول مهنة المبرمج بسيطة بينما مهنة المطور ليست كذلك، الاثنين يقوموا بنفس العمل وقد تفرق فقط الخبرة، وفكرة ان هناك شخصاً لا يعرف الا كتابة الأكواد ولا يستطيع تحليل فكرة (ان كان هناك حقاً) فهي ترجع لكونه مبتدءاً وليس لأنه مبرمج ولم يصبح مطور.
المتصفح يعرض الملف على حسب ال Content-Type المحدد من السيرفر. الرابط الأصلي هو: https://lh4.googleusercontent.com/-9gAgmnD0VuQ/AAAAAAAAAAI/AAAAAAAAUFc/eoTEKVjEBJw/ وكما يتضح في ال HTTP Response النتيجة هي : Content-Type: image/gif Content-Disposition: inline;filename="" ويبدوا ان المبرمج تجاهل اسم الملف وترك الأمر للمتصفح لكي يحدد كيف يتم حفظ الملف، مثلاً الرابط: https://lh4.googleusercontent.com/-9gAgmnD0VuQ/AAAAAAAAAAI/AAAAAAAAUFc/eoTEKVjEBJw/aa.png سوف يعرض كل المتصفحات على انه image/gif (بسبب ال content-type) ولو قمت بعمل حفظ في كروم سوف يتم بحفظه بصغية png ، وفي فايرفوكس سوف يتم اضافة هذا الاسم للامتداد الحقيقي ليصبح aa.png.gif وفي انترنت
قم بعمل Scrapping للموقع (اذا لم تجد API) وسحب البيانات مثلاً كل 10 دقائق وخزنها لديك على قاعدة بياناتك، وموقعك يعرض هذا البيانات التي لديك. سبق ان قمنا بعملها في موقع تداول الرئيسي، ولكن عليك القيام بها بطريقة ذكية حتى لا يتم كشف البرنامج وحجب ال API من الوصول للسيرفر.
هل كل جهاز سوف يكون لديه قاعدة بيانات منفصلة عن الأخر ؟ اذا كان يجب أن تكون مركزية ، فالأفضل ان تقوم بعمل جهاز يمثل سيرفر داخل الشبكة وضع عليها ال MySQL واجعل التطبيق يتصل بهذه القاعدة مباشرة عن طريق ال IP، او حتى ان يكون على الانترنت، وفيما بعد قم بتعديل الامور بشكل افضل. اذا كان كل جهاز منفصل عن الاخر، فاذا لم يوجد لديك وقت للتغيير فاستخدم MySQL وهناك أعتقد طريقة لل Silent Installation ابحث عنها بحيث تنزل
12
وعليكم السلام، اخر مرة تحدثت معه كانت قبل 3 سنوات تقريباً، وبعد مشاهدة موضوعك هذا حادثته ولحسن الحظ رقمه ما زال يعمل :).. هو بخير ويعمل في مجال ال Networking في القصيم.. سأرسلك رقم الواتساب الخاص به لكي تتواصل معه وقد اخذت الاذن منه. قبل فترة أعتقد طالت بعض الشيء -ربما 4 سنوات- اجتمعنا مع عبدالله الشمري "مشرف عام"، أحمد صالح "مشرف الالعاب"، محمد نور "مشرف الالكترونيات"، باسم الموجي "عضو شرف"، أحمد عصام "مشرف ال Qt" وايضاً عيسى العنزي "مشرف
الغرض منه هو التسلية او حتى المشاركة في مسابقات خاصة بالأكواد غير المفهومة والتي تقوم بوظيفة يمكنك قرائة هذه المقالة لمعرفة كيف يتم ذلك/ http://informatic-ar.com/obfuscated_code_cpp/
سأكون صريح ال task التي ارسلوها هي بسيطة وليست مشروع مهم وأنهم سيكسبوا من ورائك بهذه الأداة البسيطة، كونك رددت بهذا الشكل فهذا يعني أنك خفت ولم تتوكل على الله وتبدأ العمل بالاضافة الى انه يوضح عدم وجود خبرة كافية أو أنك لم تعمل في بيئة عمل جيدة من قبل. كان الاولى ان تقسم المشكلة breakdowns الى مجموعه من الخطوات: 1) جلب البيانات: كتابة كود يجلب معلومات الموارد من النظام بلغة سي++؟ هل هذا الكود صعب؟ هناك بعض ال win32
اذا كنت تقصد التعليقات comments : فالافضل تقليل ال comments وجعل الكود readable من نفسه، اذا اضطررت الافضل ان تستخدم الانجليزية لأن الكود نفسه مكتوب بها.
العادات والممارسات الصحيحة (أياً كانت patterns, principles, practices) لم توضع حتى يتم تطبيقها بشكل أعمى، وانما هي امور وحلول عامة ولكنها قد لا تفى بمشكلتك لذلك من الخطأ فعلاً ان تقوم بتطبيق كل الممارسات بدون وجود مبرر فعلاً. حتى في العادات البرمجية كما تجد اشياء قد تغير طريقة كودك وقد ترى انها تضيف تعقيداً فهناك مفاهيم تحثك على البساطة مثلاً مفهوم Keep it Simple Stupid (اختصاراً KISS) أو مثلاً You ain’t gonna need it (اختصاراً YAGNI) وغيرها ايضاً. لذلك أرى