قراءات نادرة للقرآن للشيخ :زكي داغستاني

 

 

السلام عليكم

لم أكن أعرف إسم المقريء زكي داغستاني – رحمه الله- إلى أن وجدت الفيديو التالي والذي به قراءة متميزة من سورة آل عمران في افتتاح مؤتمر القمة اﻹسلامي من داخل الحرم المكي – رزقنا الله وإياكم زيارته- ، فتذكرت أنه كان من المقرئين الذي يُفتتح بهم البث التلفزيوني  لقناة السعودية في منتصف ثمانينيات القرن الماضي – وهو الوقت الذي مكثت فيه في جنوب السعودية لفترة من الزمن-، حيث كان يبدأ البث في الساعة الثامنة أو التاسعة صباحاً بقراءة للشيخ زكي داغستاني أو الخياط، ثم بعد ذلك أفلام الكرتون، ثم مسلسلات اﻷطفال التي كنا نتابعها بشغف مثل : مسلسل إسألو لبيبة الذي تكلمت في تدوينة سابقة، ومسلسل زينة ونحول، وجزيرة الكنز.

هذه قراءة لافتتاح القمة اﻹسلامية:

قُلْ صَدَقَ اللَّـهُ ۗ فَاتَّبِعُوا مِلَّةَ إِبْرَاهِيمَ حَنِيفًا وَمَا كَانَ مِنَ الْمُشْرِكِينَ ﴿٩٥ إِنَّ أَوَّلَ بَيْتٍ وُضِعَ لِلنَّاسِ لَلَّذِي بِبَكَّةَ مُبَارَكًا وَهُدًى لِّلْعَالَمِينَ ﴿٩٦ فِيهِ آيَاتٌ بَيِّنَاتٌ مَّقَامُ إِبْرَاهِيمَ ۖ وَمَن دَخَلَهُ كَانَ آمِنًا ۗ وَلِلَّـهِ عَلَى النَّاسِ حِجُّ الْبَيْتِ مَنِ اسْتَطَاعَ إِلَيْهِ سَبِيلًا ۚ وَمَن كَفَرَ فَإِنَّ اللَّـهَ غَنِيٌّ عَنِ الْعَالَمِينَ ﴿٩٧ قُلْ يَا أَهْلَ الْكِتَابِ لِمَ تَكْفُرُونَ بِآيَاتِ اللَّـهِ وَاللَّـهُ شَهِيدٌ عَلَىٰ مَا تَعْمَلُونَ ﴿٩٨ قُلْ يَا أَهْلَ الْكِتَابِ لِمَ تَصُدُّونَ عَن سَبِيلِ اللَّـهِ مَنْ آمَنَ تَبْغُونَهَا عِوَجًا وَأَنتُمْ شُهَدَاءُ ۗ وَمَا اللَّـهُ بِغَافِلٍ عَمَّا تَعْمَلُونَ ﴿٩٩ يَا أَيُّهَا الَّذِينَ آمَنُوا إِن تُطِيعُوا فَرِيقًا مِّنَ الَّذِينَ أُوتُوا الْكِتَابَ يَرُدُّوكُم بَعْدَ إِيمَانِكُمْ كَافِرِينَ ﴿١٠٠وَكَيْفَ تَكْفُرُونَ وَأَنتُمْ تُتْلَىٰ عَلَيْكُمْ آيَاتُ اللَّـهِ وَفِيكُمْ رَسُولُهُ ۗ وَمَن يَعْتَصِم بِاللَّـهِ فَقَدْ هُدِيَ إِلَىٰ صِرَاطٍ مُّسْتَقِيمٍ ﴿١٠١ يَا أَيُّهَا الَّذِينَ آمَنُوا اتَّقُوا اللَّـهَ حَقَّ تُقَاتِهِ وَلَا تَمُوتُنَّ إِلَّا وَأَنتُم مُّسْلِمُونَ ﴿١٠٢ وَاعْتَصِمُوا بِحَبْلِ اللَّـهِ جَمِيعًا وَلَا تَفَرَّقُوا ۚ وَاذْكُرُوا نِعْمَتَ اللَّـهِ عَلَيْكُمْ إِذْ كُنتُمْ أَعْدَاءً فَأَلَّفَ بَيْنَ قُلُوبِكُمْ فَأَصْبَحْتُم بِنِعْمَتِهِ إِخْوَانًا وَكُنتُمْ عَلَىٰ شَفَا حُفْرَةٍ مِّنَ النَّارِ فَأَنقَذَكُم مِّنْهَا ۗ كَذَٰلِكَ يُبَيِّنُ اللَّـهُ لَكُمْ آيَاتِهِ لَعَلَّكُمْ تَهْتَدُونَ ﴿١٠٣ وَلْتَكُن مِّنكُمْ أُمَّةٌ يَدْعُونَ إِلَى الْخَيْرِ وَيَأْمُرُونَ بِالْمَعْرُوفِ وَيَنْهَوْنَ عَنِ الْمُنكَرِ ۚ وَأُولَـٰئِكَ هُمُ الْمُفْلِحُونَ ﴿١٠٤ 

وهذه تلاوة الختام:

آمَنَ الرَّسُولُ بِمَا أُنزِلَ إِلَيْهِ مِن رَّبِّهِ وَالْمُؤْمِنُونَ ۚ كُلٌّ آمَنَ بِاللَّـهِ وَمَلَائِكَتِهِ وَكُتُبِهِ وَرُسُلِهِ لَا نُفَرِّقُ بَيْنَ أَحَدٍ مِّن رُّسُلِهِ ۚ وَقَالُوا سَمِعْنَا وَأَطَعْنَا ۖ غُفْرَانَكَ رَبَّنَا وَإِلَيْكَ الْمَصِيرُ ﴿٢٨٥ لَا يُكَلِّفُ اللَّـهُ نَفْسًا إِلَّا وُسْعَهَا ۚ لَهَا مَا كَسَبَتْ وَعَلَيْهَا مَا اكْتَسَبَتْ ۗ رَبَّنَا لَا تُؤَاخِذْنَا إِن نَّسِينَا أَوْ أَخْطَأْنَا ۚ رَبَّنَا وَلَا تَحْمِلْ عَلَيْنَا إِصْرًا كَمَا حَمَلْتَهُ عَلَى الَّذِينَ مِن قَبْلِنَا ۚ رَبَّنَا وَلَا تُحَمِّلْنَا مَا لَا طَاقَةَ لَنَا بِهِ ۖ وَاعْفُ عَنَّا وَاغْفِرْ لَنَا وَارْحَمْنَا ۚ أَنتَ مَوْلَانَا فَانصُرْنَا عَلَى الْقَوْمِ الْكَافِرِينَ ﴿٢٨٦

 

وهذه تلاوة من سورة لقمان كان يُفتتح بها البث التلفزيوني:

وَلَقَدْ آتَيْنَا لُقْمَانَ الْحِكْمَةَ أَنِ اشْكُرْ لِلَّـهِ ۚ وَمَن يَشْكُرْ فَإِنَّمَا يَشْكُرُ لِنَفْسِهِ ۖ وَمَن كَفَرَ فَإِنَّ اللَّـهَ غَنِيٌّ حَمِيدٌ ﴿١٢ وَإِذْ قَالَ لُقْمَانُ لِابْنِهِ وَهُوَ يَعِظُهُ يَا بُنَيَّ لَا تُشْرِكْ بِاللَّـهِ ۖ إِنَّ الشِّرْكَ لَظُلْمٌ عَظِيمٌ ﴿١٣ وَوَصَّيْنَا الْإِنسَانَ بِوَالِدَيْهِ حَمَلَتْهُ أُمُّهُ وَهْنًا عَلَىٰ وَهْنٍ وَفِصَالُهُ فِي عَامَيْنِ أَنِ اشْكُرْ لِي وَلِوَالِدَيْكَ إِلَيَّ الْمَصِيرُ ﴿١٤ وَإِن جَاهَدَاكَ عَلَىٰ أَن تُشْرِكَ بِي مَا لَيْسَ لَكَ بِهِ عِلْمٌ فَلَا تُطِعْهُمَا ۖ وَصَاحِبْهُمَا فِي الدُّنْيَا مَعْرُوفًا ۖ وَاتَّبِعْ سَبِيلَ مَنْ أَنَابَ إِلَيَّ ۚ ثُمَّ إِلَيَّ مَرْجِعُكُمْ فَأُنَبِّئُكُم بِمَا كُنتُمْ تَعْمَلُونَ ﴿١٥ يَا بُنَيَّ إِنَّهَا إِن تَكُ مِثْقَالَ حَبَّةٍ مِّنْ خَرْدَلٍ فَتَكُن فِي صَخْرَةٍ أَوْ فِي السَّمَاوَاتِ أَوْ فِي الْأَرْضِ يَأْتِ بِهَا اللَّـهُ ۚ إِنَّ اللَّـهَ لَطِيفٌ خَبِيرٌ ﴿١٦ يَا بُنَيَّ أَقِمِ الصَّلَاةَ وَأْمُرْ بِالْمَعْرُوفِ وَانْهَ عَنِ الْمُنكَرِ وَاصْبِرْ عَلَىٰ مَا أَصَابَكَ ۖ إِنَّ ذَٰلِكَ مِنْ عَزْمِ الْأُمُورِ ﴿١٧ وَلَا تُصَعِّرْ خَدَّكَ لِلنَّاسِ وَلَا تَمْشِ فِي الْأَرْضِ مَرَحًا ۖ إِنَّ اللَّـهَ لَا يُحِبُّ كُلَّ مُخْتَالٍ فَخُورٍ ﴿١٨ وَاقْصِدْ فِي مَشْيِكَ وَاغْضُضْ مِن صَوْتِكَ ۚ إِنَّ أَنكَرَ الْأَصْوَاتِ لَصَوْتُ الْحَمِيرِ ﴿١٩أَلَمْ تَرَوْا أَنَّ اللَّـهَ سَخَّرَ لَكُم مَّا فِي السَّمَاوَاتِ وَمَا فِي الْأَرْضِ وَأَسْبَغَ عَلَيْكُمْ نِعَمَهُ ظَاهِرَةً وَبَاطِنَةً ۗ وَمِنَ النَّاسِ مَن يُجَادِلُ فِي اللَّـهِ بِغَيْرِ عِلْمٍ وَلَا هُدًى وَلَا كِتَابٍ مُّنِيرٍ ﴿٢٠

.

وهذه تلاوة من سورة البقرة: آيات فيها إعجاز وبلاغة ومعاني عظيمة:

وَإِذِ ابْتَلَىٰ إِبْرَاهِيمَ رَبُّهُ بِكَلِمَاتٍ فَأَتَمَّهُنَّ ۖ قَالَ إِنِّي جَاعِلُكَ لِلنَّاسِ إِمَامًا ۖ قَالَ وَمِن ذُرِّيَّتِي ۖ قَالَ لَا يَنَالُ عَهْدِي الظَّالِمِينَ ﴿١٢٤ وَإِذْ جَعَلْنَا الْبَيْتَ مَثَابَةً لِّلنَّاسِ وَأَمْنًا وَاتَّخِذُوا مِن مَّقَامِ إِبْرَاهِيمَ مُصَلًّى ۖ وَعَهِدْنَا إِلَىٰ إِبْرَاهِيمَ وَإِسْمَاعِيلَ أَن طَهِّرَا بَيْتِيَ لِلطَّائِفِينَ وَالْعَاكِفِينَ وَالرُّكَّعِ السُّجُودِ ﴿١٢٥ وَإِذْ قَالَ إِبْرَاهِيمُ رَبِّ اجْعَلْ هَـٰذَا بَلَدًا آمِنًا وَارْزُقْ أَهْلَهُ مِنَ الثَّمَرَاتِ مَنْ آمَنَ مِنْهُم بِاللَّـهِ وَالْيَوْمِ الْآخِرِ ۖ قَالَ وَمَن كَفَرَ فَأُمَتِّعُهُ قَلِيلًا ثُمَّ أَضْطَرُّهُ إِلَىٰ عَذَابِ النَّارِ ۖ وَبِئْسَ الْمَصِيرُ ﴿١٢٦وَإِذْ يَرْفَعُ إِبْرَاهِيمُ الْقَوَاعِدَ مِنَ الْبَيْتِ وَإِسْمَاعِيلُ رَبَّنَا تَقَبَّلْ مِنَّا ۖ إِنَّكَ أَنتَ السَّمِيعُ الْعَلِيمُ ﴿١٢٧ رَبَّنَا وَاجْعَلْنَا مُسْلِمَيْنِ لَكَ وَمِن ذُرِّيَّتِنَا أُمَّةً مُّسْلِمَةً لَّكَ وَأَرِنَا مَنَاسِكَنَا وَتُبْ عَلَيْنَا ۖ إِنَّكَ أَنتَ التَّوَّابُ الرَّحِيمُ ﴿١٢٨ رَبَّنَا وَابْعَثْ فِيهِمْ رَسُولًا مِّنْهُمْ يَتْلُو عَلَيْهِمْ آيَاتِكَ وَيُعَلِّمُهُمُ الْكِتَابَ وَالْحِكْمَةَ وَيُزَكِّيهِمْ ۚ إِنَّكَ أَنتَ الْعَزِيزُ الْحَكِيمُ ﴿١٢٩ وَمَن يَرْغَبُ عَن مِّلَّةِ إِبْرَاهِيمَ إِلَّا مَن سَفِهَ نَفْسَهُ ۚ وَلَقَدِ اصْطَفَيْنَاهُ فِي الدُّنْيَا ۖ وَإِنَّهُ فِي الْآخِرَةِ لَمِنَ الصَّالِحِينَ ﴿١٣٠ إِذْ قَالَ لَهُ رَبُّهُ أَسْلِمْ ۖ قَالَ أَسْلَمْتُ لِرَبِّ الْعَالَمِي

 

في الحقيقة هذه التلاوات مميزة لا يمل الشخص من سماعها وتكرار سماعها مرات ومرات.

نسأل الله أن يتقبله ويغفر له ويمتعنا بالقرآن وأن نعمل به.

آثار السودان

 

السلام عليكم ورحمة الله

توجد آثار كثيرة في السودان وترجع لعصور مختلفة، لكن لا يشتهر السودان بأنه بلد للآثار أو أنه بلد للسياحة لأجل زيارة المعالم التاريخية واﻷثرية. عندما تذهب لمكان أثري نادراً ما تجد شخص آخر، بل قد لا تجد به مرشد أو مكتب لإدارة تلك المناطق اﻷثرية. وهذا في نظري ليس شيء سلبي دائماً، فبالنسبة لي شخصياً أُفضّل الأمكنة الطبيعية البكر، سواءً كانت مناطق أثرية أو طبيعية، حيث إن تدخل البنيان وتدخل اﻹنسان عموماً لهذه الأمكنة يؤثر عليها سلباً في تحويلها من منطقة طبيعية محفوظة كما هي ترجع لتاريخ معين إلى أخرى يشوبها بعض التداخل في الحضارات.

المناطق اﻷثرية في السودان معظمها بعيد عن العاصمة، ومعظمها يقع في الشمال، وأقرب منطقة للعاصمة هي منطقة البجراوية والتي بها بعض الإهرامات القديمة والتي تقع شمال مدينة شندي، وتبعد البجراوية عن الخرطوم حوالي 230 كلم. وإهرامات مروي وآثار البركل تقع تقريباً على بعد 500 كلم أو أكثر شمال الخرطوم، لذلك تجد أكثر من يعيش في السودان لا تتاح له الفرصة أن يرى تلك الآثار كثيراً. بالنسبة لي فأول آثار رأيتها كانت أهرامات البجراوية عندما بلغت من العمر حوالي 27 عاماً، ويوجد من يفوت عمره الثلاثون ولا يكون قد رأي أي من تلك اﻵثار.

  • آثار البركل

هذه صور قمت بتصويرها أثناء مروري بجبل البركل بالقرب من مدينة كريمة شمال السودان حيث كُنت في طريقي إلى قرية الكرفاب والتي هي مسقط رأس والدي :

تتطلب عرض الشرائح هذه للجافا سكريبت.

  • المتحف القومي

المتحف القومي في الخرطوم أيضاً زرته لأول مرة مع أولادي قبل بضعة أعوام، وقد قمت بإعادة زيارته العام الماضي. به آثار تم تجميعها من عدة مناطق في السودان وأغلبها من الشمال، وهذه بعض الصور من المتحف:

تتطلب عرض الشرائح هذه للجافا سكريبت.

  • المباني القديمة

توجد مباني قديمة في الخرطوم بُنيت في عهد اﻹحتلال اﻹنجليزي للسودان عمرها أكثر من مائة عام، مثل القصر الرئاسي ووزارة المالية التي إتيحت لي زيارتها بسبب مشروع كُنت أعمل عليه، وهذه بعض الصور التي التقطتها أثناء تواجدي هناك:

تتطلب عرض الشرائح هذه للجافا سكريبت.

  • فلم وثائقي عن آثار السودان

ما دفعني لكتابة هذا الموضوع هو فلم وثائقي في قناة الجزيرة بعنوان الفراعنة السود، حضرته قبل عدة أعوام، وبحثت عنه في اليوتيوب ولم أجده، وقبل عدة أيام وجدته بنفس اﻷسم، لكن عندما شاهدته أدركت في النهاية أنه يختلف عن الفلم اﻷول، بل أنه من قناة ناشيونال جيوغرافك، أي يختلف عن فلم قناة الجزيرة الوثائقية. هذا هو الفلم الوثائقي:

 

 

توجد آثار أخرى في مدينة سواكن والتي هي ميناء أقدم من ميناء بورتسودان اشتهر في عهد الدولة العثمانية، ربما أتكلم عنها إذا زرتها بإذن الله

الحياة اليومية مع البرامج واﻷدوات

السلام عليكم ورحمة الله

هذه المقالة هي استجابة لمبادرة من اﻷخ عبدالله المهيري في مدونته كمسابقة للتكلم عن البرامج واﻷدوات التي نستخدمها في حياتنا وكيفية سير يوم العمل. المسابقة موجهة لمن لديهم مدونات ومن ليس لديهم مدونات، ونخبرهم بأنه ربما آن لهم أم يمتلكو واحدة.  وأتمنى أن تكون لهذه المقالة الفائدة المرجوّة  من نشري المفصّل لهذه المعلومات الموجودة فيها.

مقدمة

قبل البداية بسرد البرامج واﻷودات التي استخدمها، أحب أولاً التعريف بنفسي وبالمؤسسة التي أعمل بها:

في الحقيقة أجمع بين أكثر من وظيفة أو أكثر من صفة في عملي الحالي، وعملي ينقسم إلى قسمين: اﻷول واﻷساسي هي الصفة اﻹدارية، والصفة الثانية هي الصفة الفنية. العمل اﻹداري يشمل اﻹدارة العامة للشركة، واﻹدارة المالية، وإدارة شؤون اﻷفراد، و إدارة المشاريع. أما القسم الثاني فهو العمل الفني والذي يشمل عملي كمبرمج، ومعماري أنظمة، ومسؤول عن اﻷبحاث والتطوير (لا أعرف هل هذه اﻷخيرة وظيفة فنية أم إدارية). وكل هذه الوظائف ربما تتطلب عدد من الموظفين في الشركات الكبرى، لكن بما أني أعمل في شركة ناشئة صغيرة فمن الطبيعي أن تكون كل هذه المهمام موكلة لشخص أو شخصين فقط. كذلك سوف أتكلم بإذن الله عن استخدامي للبرامج واﻷدوات في الحياة اليومية خارج العمل.

الجزء الثاني من التعريف هو التعريف بالشركة: كود لبرمجيات الكمبيوتر هي مؤسسة برمجية لتطوير البرامج عموماً ومتخصصة  في العمل مع شركات اﻹتصالات. بدأت هذا العمل بعد أن تركت الوظيفة في بداية عام 2012، ثم التحق بي عدد من الموظفين في عام   2013، حيث سجلته رسمياً كإسم عمل تجاري في مجال برامج الكمبيوتر، لكن اصطلاحاً نسميه شركة.  وقد وصل عددنا اﻵن – بفضل الله- إلى 15 موظف ومن يعملون معي هم من خيرة الشباب، كلهم في تخصص تطوير البرامج، حتى الوظائف اﻹدارية يقوم بها المبرمجون. والعمل في مجال الإتصالات يتطلب مهنية وأداء ونوعية وجودة عالية في العمل والبرامج، لذلك نحرص على أن يلتحق معنا الأشخاص المميزين، وأقوم  فقط بتعيين الخريجين الجدد وذلك لسرعة تعلمهم وتقبلهم التغييروالتوجيه، وقد أُختيرت وفُضًلت برامجنا – في عدد من المرات- مقابل برامج وأنظمة مقدمة من شركات كبرى كشركة هواوي وأوراكل.

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

 

القسم اﻷول: البرامج واﻷدوات القياسية التي استخدمها:

  • اللابتوب

، أول وهم أداة استخدمها هي اللابتوب وهو من نوع Dell Core I3 اشتريته قبل عامين، به ذاكرة 8 قيقا وقرص SSD 512 قيقا بايت. وهذه المواصفات كافية للبرامج التي استخدمها كما سيأتي تفصيلها في هذه المقالة. وأتوقع أن استخدمه لعامين قادمين بإذن الله إن مد الله في العمر.

IMG_20190306_170444

 

استخدم نظام التشغيل أبونتو كنظام أساسي منذ أن تفرغت للعمل الخاص، وهو يحتوي على عدد من البرامج واﻷدوات التي تُساعدني على إنجاز اﻷعمال اليومية، خصوصاً اﻷعمال الفنية من تطوير البرامج ومراجعة المخدمات والشبكة. واختياري له مبني على ميولي الشخصي لهذا النظام (أعني نظام لينكس عموماً) وشغفي به لكن لم تكن لدي فرصة كافية لاستخدامي له في وظائفي السابقة التي كانت تعتمد على نظام التشغيل وندوز ولم تكن هُناك حرية شخصية في استخدام أنظمة التشغيل. بعد اختيار نظام أوبونتو اصبح لدي الحرية في تثبيته على عدد من اﻷجهزة بدون قيود وبدون الحاجة لشراء ترخيص، وفي عملنا هذا يتطلب استخدام عدد كبير من أجهزة للمبرمجين وعدد كبير من المخدمات لتثبيت برامجنا للزبائن. كذلك فإن نظام لينكس يحتوي على عدد من اﻷدوات التي تساعد المبرمج في عمله اليومي والتي تأتي مثبتة مسبقاً على النظام أو يُمكن تثبيتها من مركز البرامج، بالاضافة لأنه غير مستهدف بالفيروسات.

ubuntu

 

  • نظام التشغيل: وندوز

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

 

وهو برنامج لتثبيت أنظمة تشغيل بطريقة افتراضية Virtual داخل النظام اﻷساسي، واستخدمه مع نظام وندوز الذي تكلمت عنه في الفقرة السابقة، كذلك استخدمه لتثبيت أنظمة لينكس أخرى، مثلاً نُسخة جديدة من نظام أوبونتو، فقبل الإنتقال إليها في النظام اﻷساسي، أقوم بتجربتها تحت VirtualBox، كذلك في بعض اﻷحيان احتاج لتشغيل جهاز افتراضي إضافي لأتخاطب معه من النظام الرئيسي بدلاً من استخدام حاسوبين أو استخدام مخدم حقيقي. ويمكن تثبيت عدد من أنظمة التشغيل عليه مثل: Solaries, BSD, Mac, DOS, Netware, OS/2.

VirtualBox

 

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

 

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

 

يُنافس هذا البرنامج متصفح Firefox من حيث استخدامي له، وبالتحديد الفترة الزمنية التي يكون مفتوح فيها هذا البرنامج لاستقبال البريد اﻹلكتروني، حيث أقوم بفتحه من الصباح الباكر بعد صلاة الفجر، إلى قبل أن أنام. وأُفضّل التراسل والتواصل بالبريد على التواصل عن طريق الهاتف، سواءً في التواصل مع الزبائن أم مع الموظفين، حيث أجد أن الهاتف مزعج، يمكن أن يتصل في أوقات لا يكون فيها الشخص متهيأ لاستقبال مكالمة، أما البريد فتقرأه في وقت أكثر تهيأً، ويمكن أن ترد عليه في وقت آخر، أما المتصل بالهاتف فهو يريد منك جواب مستعجل من غير إعداد وتفكير لهذا الجواب ويترتب عنه ضغط نفسي أحياناً خصوصاً عندما يسألك زبون عن التأخر في المشروع أو عن حدوث مشكلة. كذلك البريد يبقى كوثيقة يُمكنك الرجوع لتفاصيلها حتى ولو بعد سنوات، واحتفظ في برنامج البريد هذا والذي هو برنامج سطح مكتب رسال أرسلتها ورسائل استقبلتها منذ عام 2010، كما يظهر في الصورة أدناه. كذلك فإن البريد أكثر رسمية من الهاتف، و يمكن إرفاق وثائق به، ويمكن مشاركته مع أكثر من شخص ممن يعملون في نفس المشروع مثلاً، أو ممن لديهم الصفة اﻹدارية أو الفنية التي تستوجب مشاركتهم هذه المخاطبة.

Thunderbird

 

وهي حزمة متكاملة بديلة لبرنامج أوفيس المُستخدم في نظام التشغيل وندوز، وتوجد منه نسخة لنظام لينكس ويأتي نظام أوبونتو مسبق التحميل بها، وله نُسخة لنظام وندوز ونظام ماكنتوش. استخدم منها عدة برامج: أهمها Writer, ومعها في اﻷهمية Calc المُستخدم للجداول اﻹلكترونية Spreadsheet ، ثم Draw لرسم المخططات، وImpress للعروض المشابه لبرنامج PowerPoint. وسوف نتكلم عنها بالتفصيل:

LibreOffice

 

  • برنامج Writer

وهو ضمن حزمة LibreOffice واستخدمه لكتابة العروض التجارية للمشاريع مع زبائن جدد أو مشاريع جدية لزبائن لنا، كذلك لكتابة أوراق علمية بعد دراسة لبرامج أو تقنيات أو مفاهيم قُمت بدراستها وأريد نشرها لزملائي، أو حتى كتابة كُتب، فقد كتبت بهذا البرنامج خمس كُتب إلى اﻵن. اتسخدم Writer كذلك لكتابة اﻷوراق المطلوبة في شكل مطبوع للإجراءات الإدارية للتعامل مع الجهات الرسمية، مثل البنوك وديوان الضرائب، وفي إصدار الفواتير والمطالبات المالية من الزبائن . في معظم الأحيان أقوم بتحويل الوثيقة إلى هيئة PDF لإرسالها، خصوصاً في التعامل الرسمي ليتسنى فتحها مباشرة للقراءة فقط دون السماح للمتلقي بالتعديل، خصوصاً إذا كان مطلوباً منه إعادة إرسالها لأشخاص آخرين أو جهة أخرى، أو كإبقاءها وثيقة مثل التعادلات، فنحن لا نريد أن يتم تعديلها بعد الاتفاق عليها. وفي بعض اﻷحيان أقوم بإرسالها بصيفة ملف Word إذا كان مطلوب من المستلم التعديل فيها.

 

  • برنامج Calc للجداول الممتدة

استخدم هذا البرنامج خصوصاً كصفتي مدير مالي للشركة في عدد من التقارير والمخططات المالية، مثلاً الميزانية التقديرية لكل عام، وهي عبارة عن الخطة المالية للمنصرفات المتوقعة خلال العام المالي الحالي، واﻹيرادات المتوقعة واﻷرباح، وذلك حتى نكون بأمان مالي ولا نصرف بطريقة تقودنا إلى اﻹفلاس. كذلك استخدمه لبعض المخططات الشهرية والتي تنتج من برنامج الحسابات أو المرتبات لمعرفة المبالغ المطلوب توفيرها في البنك لصرف المرتبات. كذلك استخدمه لعرض بعض التقاريرالتي نُصدرها من بعض اﻷنظمة، من قاعدة البيانات مثلاً في حال أن التقرير غير متوفر في البرنامج، ثم تُرسل لمن طلبها من الزبائن.

 

  • برنامج Draw

وهو برنامج لرسم المخططات، استخدمه كصفتي معماري أنظمة، حيث أقوم بعمل ما يُعرف بالمخطط عالي المستوى High Level Diagram وهو أشبه بالخريطة التي يقوم بتوفيرها المهندس المعماري لإنشاء مبنى جديد، ونستخدمه لتصميم نظام جديد، لمناقشته مع المبرمجين لفهم الصورة العامة والتصميم العام للنظام قبل البداية بالتحليل التفصيلي وقبل تقسيم البرامج المطلوبة ضمن نظام ما. كذلك استخدمه لتوصيف المخدمات المطلوبة وعلاقة اتصالها مع بعضها ومع اﻷنظمة الأخرى ومع المستخدمين وذلك لتوفيرها من قبل الزبون. واستخدمه أيضاً لشرح المفاهيم البرمجية والتقنية لتنتج عنه مخطط توضيحي استخدمه  في مقالة أو كتاب. وأميل لاستخدام الشرح بهذه الطريقة أكثر من الشرح بواسطة الكتابة، حيث أن الكتابة التي بها تفاصيل تشغل المتلقي -أثناء المحاضرة مثلاً- من متابعة ما يقوله المقدم لتلك المادة، كذلك فبدلاً من جعل الشخص يذهب بفكره بعيداً أثناء شرح فكره له فمن اﻷفضل أن يرى تلك الفكرة في شكل رسمة توضيحية لتقريب الصورة. في مشاريع التخرج للطلبة في عامهم اﻷخير في الجامعة دائماً أطلب منهم هذا المخطط العام للنظام حتى نستطيع أن نفهم ماهية المشروع وكيف تم تصميمه ليقوم بالحل المطلوب، ومن لم يقم بتصميم هذا المخطط تجده يجتهد في الشرح ولا يستطيع المتلقين متابعته ولا فهمه بصورة عامة.

Draw

 

  • برنامج Impress

وهو مشابه لبرنامج PowerPoint في نظام وندوز الذي كُنت لا أحب استخدامه، لكن بدأت استخدام Impress مؤخراً في المحاضرات فقط، حيث كُنت قبلها استخدم برنامج Writer أو ملف PDF كُتب ببرنامج writer نفسه، لكن مؤخراً تعودت على استخدام Impress  لما يجمع من توفير مخططات توضيحية كبرنامج Draw و الكتابة كبرنامج Writer. وهو

هذه البرامج اﻷربعة التي استخدمها ضمن حزمة LibreOffice.

 

  • برنامج تحرير الصور والرسوم Gimp

وهو برنامج شبيه ببرنامج Adobe Photoshop استخدمه لتحرير الصور واﻷيقونات المستخدمة في تطوير برامج الويب، كذلك لمعالجة بعض الصور التي استخدمها مع الوثائق المختلفة وأحياناً مع التدوينات. واستخدامي الشخصي لهذا البرنامج ربما يفوق استخدامي له في العمل.

TheGimp

 

واستخدمه للمحادثة الصوتية أو النصية مع بعض الزبائن أو أفراد فريق في مشروع حينما يعمل كل شخص عن بعد، كذلك للاستخدام الشخصي للتواصل مع بعض اﻷصدقاء. وأفضله عن الهاتف لأنه أقرب للبريد، وأفضل من WhatsApp لأنه يعمل في الحاسوب فاستطيع الكتابة فيه بحرية مقارنة بالواتسآب، ولرفع بعض المرفقات من الجهاز خصوصاً في الاستخدام الرسمي في العمل.

skype

 

قبل عدة سنوات كان هذا البرنامج أو اﻷداة اﻷكثر استخداماً بالنسبة لي بعد المتصفح، لكن اﻵن بعدما توجهت للعمل اﻹداري بصورة أكبر قلت ساعاتي التي أقضيها في تطوير وكتابة البرنامج وبالتالي قل استخدامي لأدوات التطوير. استخدم برنامج NetBeans بصورة عامة في كتابة وتطوير برامج لغة البرمجة جافا، كذلك لمراجعة بعض البرامج المكتوبة من زملائنا للتأكد من التزامهم بالطريقة الصحيحة للبرمجة وذلك لأهمية برامجنا لشركات اﻹتصالات والمتطلبات التفنية والجودة العالية لمنافسة الشركات اﻷخرى. كذلك استخدمه لدراسة التقنيات البرمجية مثل Software Principles التي كتبت عنها كتاب قبل عامين، لكن إلى الآن ما زلت أدرس هذه التقنيات وأعدل ذلك الكتاب حسب ما يتغير أو ما أجده من جديد في هذا المجال. كذلك استخدمه للمحاضرات : أثناء المحاضرة لشرح البرنامج و أثناء التحضير لها. كذلك استخدمته في تجربة وتنفيذ اﻷمثلة قبل الاستدلال بها في الكتاب الذي كتبته عن لغة البرمجة جافا. وفي هذا العام والذي يليه كان نصيب الدراسة والتجارب أكثر من نصيبي في المساهمة في تطويرالبرامج التي يستخدمها الزبائن، حيث بعد زيادة عدد المبرمجين للعمل مباشرة في متطلبات الزبائن من البرنامج أصبحت مسؤوليتي مختلفة حيث أن الدراسة والأبحاث من أولوياتي اﻵن.

NetBeans

 

وهي أداة تطوير مخصصة للغة البرمجة Go، والتي اصبحت أستخدمها مؤخراً، واستخدامي للغة البرمجة واﻷداة LiteIDE هو مشابه وبديل في كثير من الأحيان عن استخدام NetBeans، وتختلف LiteIDE بأنها أخف، وتستهلك ذاكرة أقل. وكما ذكرت فهي نفس الاستخدام مع اختلاف لغة البرمجة: في تطوير البرامج، وفي دراسة التقنيات المختلفة، ودراسة لغة Go نفسها. إلا أني لم استخدم لغة Go في كتابة كتاب حول تلك اللغة إلى اﻵن، لكنها من الأهداف والخطط القادمة بإذن الله، أو على الأقل كتابة مقالة عن استخدام وميزات لغة Go.

LiteIDE

 

وهي أداة تطوير للغة البرمجة أوبجكت باسكال، استخدمها اﻵن لتطوير برنامج الحسابات (تسجيل)، وأحياناً لبعض التجارب للغة البرمجة أوبجكت باسكال، وهي أداة تطوير متكاملة بها إمكانية لتطوير برامج الواجهة الرسومية بطريقة أفضل من جافا ومن NetBeans إلا أنها ضعيفة من ناحية تطوير برامج الويب وخدمات الويب، وعملنا يتطلب النوعين اﻷخيرين من البرامج، لذلك انحصر استخدامي لهذه الأداة في برنامج الحسابات والذي بدأت به تأسيس عملي الخاص عام 2012، لكن لم أتوسع فيه مع الزبائن. وهذه اﻷداة واللغة لا يستخدمها مبرمج آخر في الشركة باعتبار أنهم كلهم شباب، ولغة أوبجكت باسكال هي لغة قديمة وعريقة إشتهرت في نهاية تسعينيات القرن الماضي وبدأت بالانحسار في بداية القرن الحالي.

lazarus

 

  • محرر النصوص Gedit

وهو محرر افتراضي للملفات النصية في نظام اوبونتو، واستخدمه بكثرة لقراءة وتحرير الملفات النصية بأنواعها، سواءً كانت مدخلات لبرامج، أو مخرجات، أو ملفات لإعدادات برامج، أو حتى ملفات تصميم صفحات html ، وأحياناً كود لغات البرمجة، حيث يتعرف تلقائياً على نوع الملف ليقوم بتلوينه حسب لغة البرمجة أو الترميز المناسب مع نوع الملف

 

قاعدة البيانات MySQL نستخدمها بكثرة في معظم البرامج، فهي متوفرة بصورة مجانية للاستخدام التجاري، وقد بنينا عليها كثير من اﻷنظمة والحلول لمختلف الشركات والمؤسسات، وتوجد منها نُسخة في اللابتوب استخدمها أثناء تطوير البرامج وتجربتها وتعديلها.  وبرنامج Workbench استخدمه لإدارة قاعدة البيانات سواءً في اللابتوب أو في مخدمات العملاء.

 

  • قاعدة البيانات MariaDB

وهي نُسخة مشتقة من قاعدة البيانات MySQL لكن أكثر حرية منها، حيث أن MySQL مملوكة لشركة أوراكل وبها بعض الشروط في الاستخدام التجاري. نستخدمها في بعض المخدمات بدلاً عن MySQL وهي متوافقة معها، أي يمكن لبرنامج مصمم للعمل مع قاعدة البيانات اﻷولى العمل مع الثانية أو العكس مع وجود اختلاف في بعض اﻷحيان.

 

قاعدة البيانات FireBird غير مشهورة، لكنها معروفة في وسط مبرمجي دلفي وأوبجكت باسكال، حيث كانت قاعدة البيانات Interbase تأتي مع اسطوانة دلفي، وقاعدة البيانات هذه أُشتقت FireBird منها. وقد استخدمتها في برنامج الحسابات (تسجيل) وبعض البرامج التجارية التي تعمل مع العملاء الآن. تمتاز بخفتها وأنها يمكن أن تعمل بدون تثبيت محرك قاعدة البيانات، فقط يمكن نقل المكتبات مع البرنامج، لذلك كانت مناسبة مع نُسخة برنامج تسجل المبسطة والتي تعمل مباشرة عند تحميلها وتشغيلها في بيئة وندوز دون الدخول في تعقيدات تثبيت وتهيأة قاعدة بيانات. وبرنامج TurboBird قمت بكتابته قبل عدة أعوام لإدارة قواعد بيانات FireBird ووضعته كبرنامج مفتوح المصدر، وقد شارك فيه عدد من المبرمجين حول العالم.والجديربالذكر أن صورة واجهة TurboBird قد وُضعت في ويكيبيديا في موضوع قاعدة البيانات FireBird

 

  • قاعدة البيانات غير العلائقية MongoDB

وهو محرك قاعدة بيانات غير علائقي أي من نوع NoSQL الذي اصبح سائد في الوقت الأخير خصوصاً مع التضخم الذي حدث في البيانات. بدأت مؤخراً دراسته واستخدامه في احد البرامج، لكن بصورة محدودة لم نتوسع فيه بسبب أن ترخيصه تغير إلى وجوب شراء نُسخة تجارية أو فتح مصدر البرامج التي تستخدمه، لذلك توقفت قليلاً إلى أن نجد البديل، وكان أحد البدائل التي درستها هو قاعدة البيانات CouchDB التابعة لمؤسسة أباتشي، لكن لم استخدمه في تطبيق حقيقي إلى اﻵن.

 

وهو أشهر مخدم ويب يُستخدم في اﻹنترنت، استخدمه لمشاركة الملفات مع زملائي، حيت أنه مثّبت في اللابتوب، وتوجد مجلدات أضع فيها ما أود مشاركته ليظهر لباقي الزملاء في المتصفح عند كتابة عنوان اللابتوب في الشبكة المحلية. كذلك استخدمه في المخدم الداخلي للشركة برفع صفحات أو ملفات لتحميلها، وهو منصة لعدد من البرامج اﻷخرى مثل WordPress التي تعتمد عليه في العمل واستخدمه كذلك في برامج الويب المختلفة كواجهة رئيسة للمخدم، استخدمها غالباً للتحويل للبرنامج الموجود في هذا المخدم أي لعمل redirection. استخدمه كذلك أثناء دراسة بعض البرامج الأخرى المفتوحة المصدر أو الأدوات التي تعمل عن طريق مخدم، فمعظمها يعتمد على مخدم أباتشي.

 

  • مخدم الويب  Tomcat

وهو مخدم ويب موجه للغة جافا، ومن مؤسسة أباتشي نفسها، وحيث أن معظم برامج الويب التي أكتبها كنت استخدم فيها لغة البرمجة جافا، فلدي برنامج tomcat في جهاز اللابتوب وفي مخدم الشركة، وفي مخدمات العملاء لرفع برامج الويب التي قمت بتطويرها أو شاركت في تطويرها، كذلك يُستخدم لمراقبة سير البرامج وعدد المستخدمين والذاكرة المستخدمة.

 

وهو مخدم لإدارة مصدر البرامج ونُسخها source and revision control ، واستخدمه في مخدم الشركة لحفظ البرامج والتعديلات ويسمح لأكثر من مبرمج أن يعمل على نفس المشروع، فكل واحد منهم يستطيع تحميل ما قام زميله بكابته من الكود ويرفع ما قام بكتابته أو تعديله، وهي مثل برنامج Git إلا أنها أبسط منها، وهي مقدمة من مؤسسة أباتشي أيضاً.

 

وهي منصة للتدوين ولبناء المواقع، استخدمتها في مخدم الشركة الداخلي للتدوين وكتابة مواضيع تقنية نتشاركها في العمل، بدأنا بهذه الفكرة مؤخراً حتى نستطيع دراسة ومشاركة آخر تقنيات وليكون لدينا موقع نستخدمه كمرجع لكيفية تطبيق تلك التقنيات المختلفة بناءً على تجارب زملائنا في العمل، يمكنكم اﻹطلاع علي هذه المدونة في هذا الرابط: http://codesoft.dlinkddns.com/blog/

 

الموبايل

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

 

  • برنامج بنكك

وهو برنامج موبايل خاص ببنك الخرطوم يسمح بإدارة الحساب الشخصي لأي موظف أو بإدارة حساب الشركة، واستخدمه لدفع المرتبات بعد حسابها كل شهر بعد الرجوع لنظام تسجيل.

mBok

 

  • برنامج WhatsApp

استخدمه في التواصل غير الرسمي مع الزملاء والموظفين، واستخدامي له محدود، ولا أحب التواصل باللغة العاميّة خصوصاً في ما يتعلق بالعمل، وأفضل عليه البريد لما له من هيئة رسمية في العمل.،

  • برنامج Google maps

احب استخدام الخرائط والـ GPS، استخدمه أحياناً عندما أذهب لمنطقة جديدة، واستخدمه في السفر بكثرة لمعرفة مكاني في الخريطة وكم تبقى من مسافة للوصول. والخرائط وجغرافية اﻷمكنة هي من الهوايات لدي، و استخدامي لهذا البرنامج استخدام شخصي ونادراً ما يكون للعمل.

  • جهاز راسبري باي

لدي عدد منها تكلمت عنها في تدوينات سابقة، اﻵن واحد منها يعمل كمخدم به عدد من البرامج مثل apache, tomcat, subversion, mySQL, Firebird وقد كان في يوم ما يعمل كمخدم داخلي للشركة، استبدلته بجهاز Dell مكتبي للعمل كمخدم بدلاً عنه بعد أن اصبح اعتمادنا كبير على المخدم الداخلي، واصبح جهاز راسبري باي للنسخ الإحتياطي التلقائي للبيانات المهمة من المخدم الرئيسي، وهو يعمل طوال الوقت، ومنذ العام الفائت لم أقم بالدخول عليه، اﻷن قمت بالدخول عليه وراجعت النسخ اﻹحتياطي وجدته يعمل بطريقة سليمة بفضل الله.

IMG_20190315_081918

 

  • المخدم وراوتر اﻹنترنت

المخدم الداخلي من نوع Dell والمعالج Core I3 وهو أكثر من كافي نسبة لعدد المستخدمين المحدود ومحدودية سرعة النت، حيث استخدمه مع توصيل ADSL عن طريق راوتر D-Link ويمكن الوصول إليه بهذا العنوان: http://codesoft.dlinkddns.com/ وبه عدد من البرامج التي ذكرتها لاستخدامنا الداخلي في الشركة، وهذه الطريقة أقل كُلفة بصورة كبيرة من استأجار مخدم في النت بسعة ربما لا تصل 100 قيقا، لكن هذا المخدم يمكننا وضع الحجم الذي نريده من القرص الصلب، كذلك يمكن إضافة مخدم آخر دون زيادة التكلفة. لكن المشكلة هي السرعة البطيئة عند التحميل منه من الخارج، حيث أن الـ ADSL سرعة التحميل منه أسرع من سرعة الرفع في النت، لذلك هو مناسب للاستخدام العادي للإنترنت والذي يكثر فيه التحميل أكثر من الرفع، أما المخدم فعندما يقوم المستخدم بتحميل ملف منه فهذا يعني أن المخدم يرفع ملف إلى ذلك الشخص، أي أن إتجاهه معاكس من وجهة نظر المخدم، لذلك يكون التحميل بطيء بالنسبة للمستخدم، لكن هذه مشكلة بسيطة إذا قارنا بفارق التكلف التي يمكن أن تصل لأكثر من 10 أضعاف مقارنة بالأستأجار. يوجد خيار آخر هو تحويل الـ ADSL والذي يعني حرف A فيه Asymmetric أي غير متساوي التحميل والرفع، حيث أن اﻷسرع هو التحميل، يمكن تحويله إلى SDSL والذي تتساوي فيه سرعة التحميل والرفع و حرف S يعني symmetric أي متساوي، ربما أفكر فيه لاحقاً لكنه أكبر تكلفة من الـ ADSL وأقل شهرة، و ربما يتطلب راوتر مختلف.

IMG_20190316_162818

IMG_20190316_162958

  • الطابعات:

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

 

القسم الثاني: البرامج الخاصة التي طُورت داخلياً

وهي برامج قمنا بتطويرها لغرض استخدامنا الداخلي فقط، أو برامج قمنا بتطويرها للعملاء لكن استخدمناها أيضاً في عملنا الداخلي.

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

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

النُسخة الثانية من برنامج تسجيل في اللابتوب هي نُسخة تدعم عملي كمدير للحسابات المالية في الشركة، حيث أقوم بإدخال المنصرفات اليومية أو الشهرية، والمرتبات وتفصيلها، ومتابعة دفعها، وتسجيل مستحقاتنا عند العملاء وفواتيرهم، ومستحقات الجهات الدائنة، مثل صندوق التأمينات الاجتماعية والضرائب. كذلك لمتابعة الشيكات الواردة والصادرة من الشركة، والتقارير المالية المتعددة تساعد على اتخاذ القرار، حيث أن اﻷرباح والخسائر يمكن اصدار تقرير تقريبي عنها قبل نهاية العام، كذلك في منتصف العام ويمكن اصدار تقارير ربعية. و المؤشرات المالية يمكن مقارنتها مع أعوام سابقة وبصورة دقيقة. وقد سهّل البرنامج إدارة الموارد والحسابات المالية بطريقة جعلتني لا أحتاج لمدير مالي أو محاسب في هذه الشركة الناشئة إلى اﻵن. في إحدى اﻷيام كانت لدي معاملة مع مكتب حكومي، فطلب مني الموظف استلام ورقة عن دفعية سابقة ثم الرجوع له، فاستلمت الورقة من مكتب في طابق آخر ثم رجعت فلم أجد الموظف، فانتظرت، ففكرت أنه كان بإمكاني أن استفيد من هذا الوقت لتصوير الورقة بالموبايل ثم إرسالها عبر البريد إلى برنامج تسجيل ليقوم بأرشفتها، فقمت بتنفيذ هذه الفكرة بعد فترة، فقمت بعمل برنامج بلغة جافا يقرأ البريد كل فترة للبحث عن رسائل جديدة مرسلة إلى عنوان معين، فإذا وجد رسالة بها مرفقات قام بإدخالها في قاعدة بيانات تسجيل في قسم الوثائق، وعنوان الرسالة يصبح عنوان الوثيقة، فصرت كلما استلم ورقة مهمة أقوم بتصويرها بالموبايل في المكان الذي استلمتها فيه وإرسالها إلى عنوان معين لأجد هذه الوثيقة موجودة في نظام تسجيل عندما أعود للمكتب.

 

tasjeel

 

 

  • برنامج HoursTrack

وهو برنامج طُور داخلياً ليُمكن الموظفين من تسجيل ساعاتهم ونستفيد منه عدة فوائد: منها أن المرتب مرتبط بعدد الساعات المُنجزة، فيكون مرتب كل موظف مرتبط بعدد ساعاته التي قضاها في العمل، والفائدة الثانية أن لدينا عقود مع بعض العملاء مبنية على الحساب بالساعة، فبذلك نتمكن في نهاية كل شهر من حساب المرتبات لكل موظف وفي نفس الوقت من إصدار فاتورة للعملاء الذين نتعامل معهم بالساعة، والفائدة الثالثة هي متابعة سير العمل بمراجعة الساعات التي قام بتسجيلها الموظفون، والفائدة الرابعة أنه أصبح برنامج لحساب تكلفة أي مشروع نقوم بتنفيذه. وقد بدأ كبرنامج بسيط أنجزته في ثلاث أيام، كانت أيام عيد، لا أذكر عيد اﻷضحى أم عيد الفطر في عام 2014، بعد ذلك قمنا بعمل إضافات حسب احتياجنا من تقارير ومن تسهيل للاستخدام ومن ميزات إضافية أخرى. استخدم البرنامج بصفتي مسؤول عن شؤون الموظفين، فأقوم بمتابعة اﻹدخال كل يوم لمتابعة سير البرامج، بذلك استفيد منه في إدارة المشروعات، ثم إصدار تقارير المرتبات لكل موظف بصورة تلقائية من البرنامج. و يتضمن البرنامج كذلك إرسال تفاصيل المرتب بالبريد ليقوم الموظف بمراجعتها قبل القيام بالدفع له عبر البنك أو عبر برنامج بنكك الذي تكلمنا عنه، بعد ذلك أقوم بإدخال مخرجات هذا البرنامج بالنسبة لمرتبات الشهر كمدخلات في نظام الحسابات حتى يصبح الموظفين دائنين بقيمة مرتباتهم إلى أن يُدفع لهم، وفي قيد الدفع المحاسبي يكون الموظف مديناً، فإذا دُفع مرتبه كاملاً تصبح قيمة حسابه في نظام تسجيل صفراً. وتأخذ عملية إرسال تفاصيل المرتبات من نصف ساعة إلى ساعة كل شهر، وفي آخر شهر كنت في سفر فقمت بإرسال تفاصيل المرتبات باستخدام هذا البرنامج بواسطة الموبايل أثناء سفري بالبص، واليوم التالي قمت بإدخالها في نظام الحسابات، ثم دفع المرتبات عن طريق الموبايل. وهذا البرنامج قمنا بتطويره حسب متطلباتنا وطريقة عملنا، وقد سهل عليّ إدارة المرتبات والترقيات وإدارة المشاريع، فلم نحتاج لتعين شخص مسؤول عن شؤون اﻷفراد ومرتباتهم وترقياتهم.  ولم نفكر أن نطور هذا البرنامج بطريقة عامة للاستخدام العام، حيث أن باقي المؤسسات لديها طريقة مختلفة وغير مبنية على التعاقد بالساعات مع الموظفين أو مع العملاء. لكن هذا لا يمنع في المستقبل أن نفكر بتسويقه أو نشره لجهات إذا كانت تعمل بنفس الطريقة.

hourstrack

 

  • برنامج الطقس weather

وهو برنامج ويب قمت بتطويره في وقت الفراغ حيث أن لدي هواية مع حالة الطقس وما يتعلق بالطبيعة، استخدمت لغة Go وعدة تقنيات منها معرفة مكان المستخدم ومدينته لعرض حالة الطقس له، واستخدم خدمة ويب مجانية من موقع https://openweathermap.org/ لمعرفة حالة الطقس حسب المدينة أو الموقع الجغرافي، وحالة الطقس مرتبطة بهوايات أخرى ربما أتكلم عنها في تدوينة منفصلة بإذن الله. ويمكنكم تجربته في هذا الموقع: http://codesoft.dlinkddns.com/weather والذي يُمثل مخدم الشركة الداخلي، وهو موجود في الإنترنت لكن استخدامه داخلي. سوف تجدون تحذير من المتصفح أن الموقع غير آمن ، وذلك لاستخدام تشفير SSL محلي غير مرتبط بمزود عالمي للشفرة، وقد احتجت لهذا التشفير بسبب أن الدالة التي تعطي موقع المُستخدم لا تعمل إلا إذا كان اﻹتصال مشفر بين المستخدم والمخدم حتى لا يتعرف شخص في وسط اﻹتصال على بيانات موقع المستخدم.

weather

 

أدوات غير برمجية

  • الدفتر أو المفكرة الورقية

الدفتر أو المفكرة هي أداة بسيطة سهلة الاستخدام، استخدمها كثيراً في التخطيط، مثلاً عند بداية مشروع جديد أقوم بعمل رسومات وعلاقات بين أجزاء المشروع حتى تتضح الفكرة، أحياناً الفكرة لا تكون واضحة إلى أن يُكتب شيء ملموس عنها أو يُرسم هيكل تخطيطي لها. كذلك استخدم الدفتر أو أوراق منه لشرح فكرة ما لمن يعمل معي في مشروع مثلاً، ثم أقوم بقطع الورقة من الدفتر وإعطائها له ليبدأ في تنفيذ الخطة أو للرجوع للرسم التخطيطي. وجدت عندي مفكرات قديمة كنت استخدمها للتخطيط للبرامج والمحاضرات منذ عام 1998 م.

تتطلب عرض الشرائح هذه للجافا سكريبت.

 

  • الساعة

الساعة قصدت أن اجعلها في نهاية الكلام عن البرامج و اﻷدوات لبيان أهميتها ولكي أختم بها، فسواءً كانت ساعة يدوية أو الساعة الموجودة في الحاسوب أو الموبايل فهي من اﻷهمية بمكان لتنظيم الوقت، وقد اعتمدت على الساعة اليدوية منذ زمن طويل، منذ الصف الرابع ابتدائي، لم أتخل عن لبسها أبداً، وأذكر أني في أحد اﻷيام ذهبت إلى العمل ونسيت الساعة – وهي تقريباً المرة الوحيدة التي أنسى فيها الساعة، حيث أني ألبسها حتى عندما أكون نائماً، وعندما استيقظ بالليل أقوم بإنارة الساعة لمعرفة كم تبقي للصلاة، وأفرح جداً عندما أجد أن الساعة هي الثانية عشر صباحاً ومازال هناك متسع من الوقت للنوم- وعندما نسيت الساعة في البيت ما كان مني إلا أن قمت بالمرور بالسوق لشراء ساعة أخرى لأني لا استطيع إكمال اليوم بدون ساعة ولا أريد إضاعة نصف ساعة بالرجوع إلى البيت. وأُفضل الأنواع الرقمية منها، والتي تتحمل الماء حتى استطيع الوضوء بها، والتي بها التاريخ واليوم من الاسبوع، كذلك ساعة التوقف احياناً استخدمها، لكن قل استخدامي لها اﻵن عندما قل عملي الفني. من شدة ارتباطي مع الوقت اصبحت أعرف الوقت أحياناً دون النظر إلى الساعة، كذلك عندما أنام خصوصاً بالنهار، فعندما أرغب مثلاً أن أنام ربع ساعة أو نصف ساعة و أعزم على أن استيقظ الساعة الثاثة والنصف، فتجدني في بعض اﻷحيان استيقظ بالضبط الساعة 3:30، لكن في معظم اﻷحيان اصحو قبلها. لذلك لا استخدم منبه إلا لسحور رمضان، وفي أغلب اﻷحيان استيقظ قبله مباشرة. هذه الساعة التي ألبسها اﻵن نوعها Casio touch solar اشتريتها من دبي قبل أكثر من ثلاث أعوام:  (بعد كتابة هذه التدوينة، ذهبت للنوم وقلت أجرب لأتكأد من هذه النقطة التي كتبتها، حيث لم أنتبه لهذه الميزة فترة طويلة، فنمت قبل الساعة الثالثة بقليل ونويت أن أصحو الساعة الثالثة والنصف كما كتبت كمثال في هذه الفقرة، فصحوت أول مرة الساعة الثالثة وخمس دقائق تقريباً، ثم نمت مرة أخرى فاستيقظت ونظرت إلى الساعة ووجدتها 3:30 و 16 ثانية 🙂

watch

الارتباط بالزمن ووضع أهمية قصوى له هذه من أهم اﻷدوات والوسائل التي استخدمها حتى استطيع النجاح والتفوق في العمل، فالتفوق ليس بالضرور أن تكون لديك مقدرات أكثر من الباقين، لكن يمكن أن يكون هو أن تعمل أكثر مما يعمله الباقون في نفس الوقت. فكل هذه المهام الموكلة إلي ما كانت لتنجح إذا تهاونت في إدارة الوقت، وأذكر هُنا قصة لشخص من الأزمان السابقة الذي قال لأحد العلماء أو العُبّاد: كلمني، فقال له هذا العالم أو العابد: أمسك الشمس، بمعني أوقف الوقت، وذلك لحرصه على الوقت.  وأهمية الوقت ليست مقتصرة على زمننا هذا المعروف بزمن السرعة بل مرتبطة بالشخص و مقدار ما يُريد إنجازه في هذه الحياة القصيرة. كذلك فإن الساعة مهمة جداً لأداء الصلاة في وقتها، فبفضل الله لا تفوتني صلاة جماعة بسبب أني نسيت الوقت، فدائماً الوقت حاضر معي في كل مكان إلا إذا كُنت نائماً وغلبني النوم. لكن المشكلة أني في معظم اﻷحيان اذهب وقت إقامة الصلاة بالضبط، ونادراً ما أذهب قبلها، وأحياناً أتأخر – نسأل الله أن يغفر لنا-، وفي أحدى المرات رآني احد الجيران ذاهب إلى المسجد، فقال معتز ذاهب إلى المسجد فمعناها قد آن وقت اﻹقامة.

 

 

يوم العمل

يبدأ يوم العمل باكراً بعد صلاة الفجر، حيث نادراً ما أنام بعد الصلاة, حتى في أيام اﻹجازة. لكن لا أبدأ بالعمل مباشرة، بل أهتم بشؤون المنزل واﻷولاد إلى أن يذهبوا للمدارس ثم استطيع أن أباشر العمل من مكتبي في البيت، وهو أكثر تجهيزاً من مكتبي في العمل، وأمكث فيه وقت أطول إذا حسبنا أيام اﻹجازة فيكون الزمن اﻷطول لصالح مكتب المنزل.

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

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

عندما أعمل أكون كثير الحركة، لا أجلس نصف ساعة على الكرسي إلا إذا كنت مندمج في عمل ما، أحب أن أبحث عن اﻷفكار وحلول للمشاكل أثناء الحركة سواءً في المكتب أو في المنزل، وأحياناً عن طريق عمل رسومات أو كتابة في المفكرة، لكن لا أجلس وأنظر للكمبيوتر عندما أبحث عن فكرة أو حل.

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

أيام اﻹجازة أتركها غالباً لدراسة الجديد في التقنية ولغات البرمجة أو في الكتابة، مثل كتابة الكُتب أو تعديل كتاب قديم، أو حتى كتابة تدوينة.

بعد صلاة العشاء أذهب للبقالة لشراء حاجيات البيت، ثم أرجع لمكتبي أو أجلس مع اﻷولاد إذا وجدت فيديو مناسب لهم في اليوتيوب، حيث أقوم بحفظ المواد التي تفيدهم في Watch Later ثم أقوم بحضورها معهم ومناقشتها.

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

 

ما يفوتنا من الحياة بسبب التخصص

السلام عليكم ورحمة الله

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

boat

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

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

مع هذا الإنشغال والتسارع في وتيرة الحياة، هل يجد الشخص متسعاً من الوقت ليجيب عن هذا السؤال المطروح: ماذا فاتني من الحياة بسبب عملي أو تخصصي؟ بل هل يجد المرء وقتاً ليسأل هذا السؤال، ناهيك عن الاجابة!

نفترض أن اﻹنسان سأل نفسه هذا السؤال مبكراً قبل أن يختار الوظيفة أو التخصص، فهل سيوجه تخصصه ليعمل في مجال فيه تنوع وفيه زاوية أكبر من العالم! أم أن التخصص يأتي بالصدفة حسب الدرجة التي يتحصل عليها الطالب للدخول للجامعة!

يوجد مخرج آخر غير تحديد التخصص من البداية، وهو الهوايات ووقت الفراغ والأجازات، فهي تترك للمرء فرصة كبيرة لرؤية ما تبقى من العالم فهو وقت لا يُستهان به يمكن أن ينافس إلى حد ما الوقت الذي يقضيه الإنسان في تخصصه. لكن شريطة أن تكون هذه الهواية مختلفة تماماًعن التخصص والوظيفة، فمثلاً لا يمكن لقبطان سفينة أن تكون هوايتها السفر، ولا لمبرمج أن تكون هوايته ألعاب الكمبيوتر، ولا لمزارع أن تكون هوايته تربية نباتات الزينة بل هذا أمتداد للتخصص. ويمكن للهواية إذا وجد اﻹنسان فيها نفسه أن تغلب على التخصص، مثلاً قصة المحاسب الذي ترك المحاسبة وعمل في مزرعة يمكن أن تكون الزراعة هوايته وأراد أن يتوسع فيها ويستبدل وظيفته التي يقضي فيها وقته الثمين بأن يجعل هذا الوقت لهوايته.

حل آخر هو أن يقوم الإنسان بتغيير وظيفته بعد فترة من الوقت، مثلاً يقول الشخص أنا اكتفيت من هذه الوظيفة ومن هذا التخصص وأريد العمل في تخصص آخر بقية حياتي حتى أرى جانب مختلف في هذه الحياة التي هي أكبر من وظيفة واحدة وأكبر من العيش في بلدة واحدة وأكبر من هواية واحدة.

 

منصة أوراكل جافا اصبحت تجارية

السلام عليكمjava-icon

في خبر قرأناه العام الماضي أن أوراكل سوف توقف الدعم المجاني لمنصة جافا بداية عام 2019 وسوف تقدم دعم تجاري ورخصة تجارية لاستخدام جافا بواقع 25 دولار للمعالج في الشهر أي 300 دولار في العام للمعالج.

قامت شركة صن ميكروسيستمس بإصدار النُسخة رقم 1 من لغة البرمجة جافا ومنصتها عام 1996م، وقامت بفتح مصدرها في نهاية عام 2006، ثم قامت شركة أوراكل بشراء شركة صن ومعها جافا في عام 2010. وفي بداية عام 2019 اصبحت منصة أوراكل جافا غير مجانية للاستخدام التجاري.

يوجد فرق بين اللغة، والمترجم compiler، والمنصة: فاللغة هي عبارة عن معايير قياسية standard specifications تُستخدم لتطبيق تلك اللغة وعمل مترجم لها. مثلاً يمكن لشخص ما أن يقوم بكتابة قواعد لغة برمجة مثلاً على ورق، ثم يقوم آخر بعمل مترجم لها يطبق تلك القواعد. كذلك بالنسبة للغات التي تحتاج لمنصة لتعمل مثل لغة جافا ودوت نت فإنها تحتاج لشيء ثالث يختلف عن اللغة وعن المترجم: وهي المنصة platform والتي تقوم بتشغيل تلك البرامج في أنظمة التشغيل المختلفة.

بالنسبة لمنصة جافا، فتوجد منها عدة منتجات أشهرها منصة أوراكل صاحبة جافا نفسها واسمها OracleJDK ومنصة OpenJDK وهي لمجموعة من الشركات والمجتمعات: منها شركة أوراكل، ومجتمع جافا، وشركة ريدهات وحتى شركة أبل، كلها ساهمت في إنتاج هذه المنصة التي يمكن استخدامها لتشغيل برامج جافا.

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

بما أن شركة أوراكل من المساهمين في مشروع OpenJDK والتي سوف تكون بديل ومنافس لمنصة أوراكل نفسها فهذا يعني أنها ربما توقف دعمها عن هذا المُنتج المنافس في المستقبل ، لذلك لا نستطيع أن نقول أن مستقبل جافا ومستقبل OpenJDK ليس في خطر.

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

من نظرة اخرى وكمستقبل للغة البرمجة جافا والتي اصبح لها منافسين أقوياء وبدائل مثل لغة بايثون وJava Script  في برامج الويب، ولغة Go في خدمات الويب وغيرها من لغات البرمجة والتي يمتاز كل منها في مجال معين، نرى أن هذا القرار سوف يؤثر سلباً خصوصاً عندما لا يفهم التعقيد في الترخيص عدد من المبرمجين أو من يتخوف من المستقبل أن كل المنصات ربما تصبح غير مجانية، فهذا بالتأكيد سوف يقلل من الاعتمادية عليها في البرامج المستقبلة ويفتح المجال لاستخدام البدائل الأخرى.

بالنسبة لنا في الشركة كُنا نستخدم لغة جافا في كثير من البرامج لكن بعد هذا التغيير في الترخيص قررنا التقليل منها والاعتماد على لغات برمجة بديلة هذا بالاضافة أننا واجهنا مشاكل في أداء برامج جافا وكانت الحلول في تحويل بعض الجزئيات المكتوب بلغة جافا إلى لغات برمجة أخرى أخف منها وأسرع في التنفيذ مثل لغة PHP و لغة Go. واﻵن نريد البحث عن لغات اخرى لاختيار الأفضل

لا ندري ماذا يحدث في المستقبل لهذه اللغة التي شغلت أكبر حيز في تطوير البرامج بالنسبة لمجال الـ  Enterprise لعقدين من الزمن، فهل سوف يحل محلها لغة برمجة واحدة أم عدة لغات أم سوف تقاول رغم هذا التغيير أو تتراجع شركة أوراكل عن قرارها

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

سبحانك اللهم وبحمد لا إله إلا أنت، نستغفرك ونتوب إليك

المصادر: بُص بصّة على المصادر 🙂

https://en.wikipedia.org/wiki/Java_(programming_language)

https://en.wikipedia.org/wiki/Java_(software_platform)#History

https://en.wikipedia.org/wiki/OpenJDK

https://www.aspera.com/en/blog/oracle-will-charge-for-java-starting-in-2019/

http://pypl.github.io/PYPL.html

https://www.tiobe.com/tiobe-index/

https://www.quora.com/Will-Java-die-because-of-the-new-Oracle-license-update

التطور الطبيعي للمبرمج: العام الثامن

 

السلام عليكم ورحمة الله

fpide_1-0-10_de.png

في إطار اﻹجابة عن سؤال طرحته قبل أعوام عديدة عن ماهية التطور الطبيعي للمبرمج، ومحاولة للإجابة عليه في كل عام، هذه هي تدوينة العام الثامن:

أود الختصار هذه المرة في ملخص عام 2018 أنني بعد كل هذه الفترة الطويلة والتي استمرت زهاء العشرون عاماً في العمل كمبرمج، وتحولي إلى وظيفة إدارية (إدارة شركة برمجة) مازلت أقتطع جزءاً كبيراً من وقتي في العمل الفني: من تطوير برامج، وتحليل، وتحسين برامج وإضافات وإستلام بعض الشكاوى من العملاء وعلاج المشاكل الفنية، ومراقبة المخدمات والبرامج، ودراسة ماهو جديد في التقنية وقراءة اﻷخبار التقنية، وعمل المحاضرات لباقي زملائنا. وهذا الجهد الفني يأخذ  نصف الوقت تقريباً، أي 50% من زمن العمل، حيث كان من المفترض أن يكون أقل من ذلك بعد كل هذه الفترة الطويلة من العمل مثلاً 80% عمل إداري مقابل 20% عمل فني، وذلك حسبما سمعت من بعض الزملاء في شركات أخرى. لكني مازلت أهرب من العمل الإداري للعمل الفني الذي لي رغبة فيه، والذي يدفعني للمواصلة في مجالي للعمل بكد طول اليوم وطول اﻹسبوع.

النصف اﻵخر من اليوم أو من الوقت يكون للعمل اﻹداري، بحيث تتخلل المهام بعضها، حيث أعمل في عمل فني ثم يأتيني بريد مثلاً لموضوع يتم حله إدارياً أو العكس: أكون في عمل إداري ثم يتخلله عمل فني. كذلك توجد أيام يغلبها الطابع اﻹداري وأيام يغلبها الطابع الفني وهي الطريقة اﻷفضل حسب تجربتي.

العمل اﻹداري ليس سيئاً كما يتصوره معظم المبرمجين، هو مثله مثل العمل الفني به إشياء جيدة ومتجدده وبه أشياء روتينية، وبه نجاحات وإخفاقات، وهو يحتاج إلى تدريب ودراسة وإبداع.

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

بعض اﻷعمال الفنية أشارك في بداياتها لضمان قيامها على أساس صحيح وبمفاهيم جديدة في بعض اﻷحيان ثم إيكالها لغيري من المبرمجين الشباب بعد أن تتضح الفكرة للمواصلة  فيها. هذا يجعلني أركز على أعمال فنية أهم وهي دراسة طرق جديدة ومفاهيم فنية مهمة بدلاً من اﻹنغماس في تفاصيل البرامج وتحولها إلى روتين.

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

بعض المهام الإدارية أقوم بإيكالها كذلك للقدماء من الموظفين لتنمية مهاراتهم اﻹدارية ولتوزيع العمل اﻹداري وحتى لا يتوقف العمل اﻹداري عند المدير فقط.

كان أهم حدث في العام الماضي هو اجتماع مطول في آخر يوم من العام قمنا بمناقشة إنجازات كل فرد من الفريق، ومراجعة خطته في العمل والتدريب للعام الجديد، ثم حصر معيقات العمل و معيقات التقدم وطرح حلول لها. والتحدي اﻵن هو تنفيذ تلك الخطة الطموحة في هذا العام بإذن الله.

قصة برنامج للوصول لمخدم في المكتب من اﻹنترنت

السلام عليكم

بدأت هذه القصة في عام 2016م…

لدينا في المكتب خدمة إنترنت من نوع  ADSL وطريقة إتصاله بالإنترنت تختلف عن باقي خدمات اﻹنترنت اللاسلكية مثل 3G والـ 4G حيث أن أهم ما يميزه أن رقم الـ IP المستخدم لدخول النت يمكن الوصول إليه من أي جهاز في النت وهو يمثل رقم الراوتر أي أنه public، ويمكن عمل ما يُعرف بالـ port forwarding لتحويل رقم بورت معين إلى جهاز لابتوب المتصل مع ذلك الراوتر ، وفي حالتي لدي مخدم صغير في المكتب كنت أود الوصول إليه – وباقي زملائا في العمل- من الخارج من أي مكان في اﻹنترنت. لكن المشكلة أن رقم الـ IP الخاص براوتر الـ ADSL هو غير ثابت ، يتغير مع كل إتصال مع النت، أي أنه dynamic وليس static إلا أنه public.

مثلاً رقم الراوتر اﻵن هو 41.209.65.57 وعند كتابته في المتصفح يقوم مخدم المكتب بإظهار صفحته الرئيسة. لكن غالباً عند قراءتك لهذه التدوينة سوف يتغير إلى رقم جديد بعد يوم أو يومين أو وقت أقل إذا حدث إنقطاع للكهرباء.

لحل هذه المشكلة كان يجب استخدام إسم  domain name بدلاً من استخدام الرقم المتغير، وفي كل مرة يتم ربط هذا الإسم بالرقم الجديد، فبذلك يظل اﻹسم ثابتاً بالنسبة للأجهزة العميلة، مثلاً اﻹسم كان code-server.sd وهو إسم غير موجود في النت، إنما قمت بإضافته في ملف  /etc/hosts في نظام لينكس ، أو ملف

c:\windows\system32\drivers\etc\hosts

  في نظام وندوز. ثم نقوم بكتابة الرقم المتغيير معه، وكلما يتغير الرقم نقوم بتغيير تلك المعلومة في الملف، وبالنسبة للمستخدم لا يحس بأي تغيير لأنه يستخدم الإسم code-server.sd للوصول للمخدم بغض النظر عن رقمه الحالي.

مثلاً هذه محتويات الملف /etc/hosts في جهاز اللابتوب -ونظام تشغيله لينكس- استخدمه اﻵن، لاحظوا السطر اﻷخير به عنوان ورقم المخدم الذي نتكلم عنه:

127.0.0.1       localhost   global.com
127.0.1.1       L40-laptop
#192.168.0.105   L40-laptop
192.168.1.98     raspi2
192.168.0.101  mini-server mini-server.sd
0::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

41.209.65.57          code-server.sd

كانت فكرة الحل هي كتابة برنامج بلغة php في موقع في اﻹنترنت تابع لنا، مثلاً http://www.code.sd ليقوم بندائه المخدم في المكتب كل فترة ليعلمه برقمه الحالي، مثلاً كل ساعة، فيقوم هذا البرنامج أو صفحة php بإنشاء ملف نصي به رقم المخدم الحالي. الخطوة الثانية هي كتابة برنامج أكثر تعقيداً لقراءة هذا الرقم كل فترة ثم تحديث هذه المعلومة في ملف hosts  كما في الشكل التالي:

update-server

قُمت بتسمية البرنامج الذي سوف نضعه في جهاز المستخدم server-update واﻷجهزة هي: لينكس، وجهاز RaspberryPi، ثم لاحقاً بعد كتابة البرنامج تم اﻹحتياج إلى نُسخة تعمل في نظام وندوزأي أنها ثلاث منصات تحتاج لبرنامج تتم كتابته بلغة برمجة متعددة المنصات. كانت الخيارات هي: لغة باسكال، ولغة shell script و لغة جافا، وأخيراً لغة سي أو سي ++

بالنسبة لخيار لغة باسكال متمثلة في FPC/Lazarus كانت موجودة في لينكس وراسبري باي، لكن كانت نُسختان مختلفات من المترجم، ومكتبة التخاطب مع النت HTTP لم تكن موجودة مع المكتبة القياسية للغة، كان لابد من تثبيت ما يُعرف بالـ component وهي تحتاج إلى بيئة لازاراس كاملة أي GUI وبالنسبة لجهاز راسبري باي لم تكن هذه البيئة موجودة فقط المترجم FPC ، لذلك تم استبعادها لعدم إمكانية إنتاج ملف تنفيذي لمنصة RaspberryPi.

أما لغة shell script التابعة لنظام لينكس، كانت متوفرة في المنصتين، لكن لم تكن لدي خبرة  كافية لاستخدامها في برنامج متوسط التعقيد، حيث يحتاج لقراءة معلومة من النت ثم تحديث ملف نصي بهذه المعلومة، وحاولت استخدامها لقراءة معلومة من النت وإظهارها لكن وجدت بها صعوبة كبيرة كما أن ليس لها بيئة تطوير مشجعة. فقمت باستبعادها إيضاً.

الخيار الثالث أو ربما اﻷول كان لغة جافا، لكن لا أتذكر بالضبط لٍم لم أختارها، – كان هذا قبل حوالي ثلاثة أعوام – فهي كانت مناسبة، حيث توجد آلة جافا اﻹفتراضية في كلا المنصتين باﻹضافة إلى أن نُسخة الملف التنفيذي سوف تعمل بدون أي تعديل في نظام لينكس ونظام راسبري باي. لكن ربما إحتياجها لتلك اﻵلة اﻹفتراضية أن تكون موجودة في اللابتوب الذي نريد تشغيل هذا البرناج البسيط فيه لم يشجعني على استخدام جافا، حيث أنها مكتبة كبيرة نقوم بتثبيتها عندما يكون البرنامج يستحق تثبيت آلة جافا اﻹفتراضية، لكن ليس لمثل هذه البرامج البسيطة التي لا تزيد أن تكون عبارة عن script

لا أدري هل كانت لغة بايثون من الخيارات أم لا، حيث أن خبرتي بها قليلة جداً، لكن بها نفس مشكلة جافا حيث تحتاج لتثبيت مفسرها ومكتباته في أي جهاز نريد تثبيت هذا البرنامج به.

في النهاية  وقع الخيار على لغة سي، فهي متعددة المنصات وينتج عنها ملف تنفيذي لا يحتاج لمكتبة أو لأي منصة إضافية لتشغيله، وكنا قد درسناها في السنة الثالثة في الجامعة، أي قبل أكثر من 18 عام! وهو زمن طويل حيث كُنا في السنة الثالثة في جامعة السودان عام 1998 أي نهاية القرن الماضي. وطوال هذه الفترة لم استخدم لغة سي أو سي++ في العمل، مع أننا درسناها لمدة عام تقريباً، لكن الدراسة الأكاديمية مختلفة إلى حد كبير عن اﻹحتياج في بيئة العمل الحقيقية. مع أني عملت في مجال برامج اﻹتصالات والتي تُناسبها لغة سي وسي++ إلا أننا استخدمنا لغة أوبجكت باسكال، متمثلة في بيئة التطوير دلفي نظراً لسهولتها الكبيرة وتوفيرها لبيئة متكاملة للتطوير لم يكن ينافسها إلا بيئة فوجوال بيسك من حيث السهولة وسرعة إنتاج البرامج لكن دلفي كانت تتفوق بأداء أعلى يقارب أداء برامج لغة سي.

في كثير من المرات حاولت إعادة دراسة لغة سي والبحث عن استخدامها لكن كل مرة أفشل إما بسبب عدم وجود بيئة متكاملة مقارنة بدلفي أو بسبب عدم وجود تطبيق مناسب لاستخدامها. لكن هذه المرة وجدت تطبيق سهل مناسب وبيئة مناسبة NetBeans فقررت استخدامها لإنجاز هذا البرنامج البسيط.

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

في النهاية تمكنت – بفضل الله- من كتابة البرنامج وتشغيله بنجاح في بيئة لينكس، ثم إعادة ترجمته في جهاز الراسبري باي – حيث يوجد به مترجم سي أيضاً- فأصبحت هُناك نُسختان تنفيذيان من البرنامج تعملان مباشرة في أي جهاز يحتوي على لينكس أو راسبري باي ولا يحتاج البرنامج للغة سي أو أي مكتبة منها. لكن البرناج كان معقداً قليلاً وذو مقروئية متدنية تصّعب اﻷمر على من يريد فهمه أن تعديله.

في بداية العام الذي يليه قررت لسبب ما إعادة كتابة نفس البرنامج باستخدام لغة البرمجة Go حيث بدأت تعلمها في هذا الوقت، وكان أول تطبيق عملي هو برنامج server-update . فقمت بالبحث عن قراءة معلومة من صفحة في النت بهذه اللغة، وقد كانت سهلة ولا تحتاج لمكتبة خارجية إنما كل ما احتجت إليه وجدته في المكتبات القياسية لها. ولغة Go بها نفس ميزة لغة سي، حيث أنه ينتج عنها ملف تنفيذي يعمل في منصة التشغيل المستهدفة دون الحاجة لمكتبات إضافية أو منصة إضافية لتشغيل البرنامج. وفي النهاية كان البرنامج أكثر سهولة وأكثر وضوحاً من سابقه المكتوب بلغة سي. وكان أحد الميزات المهمة في مترجم لغة Go أنه يدعم ما يُعرف بالـ cross-compilation أي يمكن إنتاج برامج تنفيذية لمنصات مختلفة من منصة واحدة، مثلاً من بيئة لينكس يمكن إنتاج برامج تنفيذية لبيئة وندوز وراسبري باي وماكنتوش وغيرها، دون أن تقوم بنقل مصدر البرنامج إلى منصة أخرى لترجمتها وهذه الميزة لم أجدها في لغة سي أو لغة باسكال – مع أن مترجم فري باسكال به هذه الميزة لكن عملياً تطبيقها صعب.

بعد هذا البرنامج كانت إنطلاقة بالنسبة لي لاستخدام لغة Go في العمل في برامج صغيرة ثم برامج أكثر تعقيداً ومازلت استخدمها إلى اﻵن وكتبت بها عدد من البرامج التي تعمل اﻵن في ضمن عدد من اﻷنظمة. وكانت بديل جيد لعدد من برامج جافا حيث أن برامج Go أسرع في التنفيذ ولا تستهلك موارد كبيرة مثل الذاكرة إلا أن برنامجها التنفيذي أكبر بكثير من نظيرتها لغة جافا ولغة سي. فقد كان حجم الملف التنفيذي لبرنامج server-update حجمه 15 كيلوبايت فقط أما نظيره المكتوب بلغة Go فكان حجمه حوالي 6 ميغابايت!

لم أرجع أو أفكر للرجوع لاستخدام لغة سي بعد هذا البرنامج ولم أفكر باستخدام لغة سي++ واﻵن كلا اللغتين في تراجع مستمر بالنسبة للاستخدام حيث يميل كل من يريد الدخول للبرمجة لتعلم لغة أكثر سهولة كذلك فإن الشركات تستخدم اللغات الحديثة فقط في المشروعات البرمجية الجديدة. ويتم استخدام لغة سي وسي++ في المشاريع القديمة التي لها عشرات السنين والتي يتعذر نقلها إلى لغة برمجة جديدة، كذلك فإن لغة سي تُستخدم في اﻷنظمة المُدمجة والمعالجات الدقيقة micro-controllers.

وقبل الختام هذا مصدر البرنامج بلغة سي:

/* 
 * File:   main.c
 * Author: motaz
 *
 * Created on February 10, 2016, 1:35 PM
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>

char *server;
char *localserver;

function_pt(void *ptr, size_t size, size_t nmemb, void *stream){
    
  //server = malloc(size);
    //strncpy(server, ptr, size);
    server = ptr;
}

// Local net
function_pt_local(void *ptr, size_t size, size_t nmemb, void *stream){
    
    //server = malloc(size);
    //strncpy(server, ptr, size);
    localserver = ptr;
}

int getURL(void){
    
  CURL *curl;
  curl = curl_easy_init();
  if(curl) {
    printf("Reading from site..\n");
    curl_easy_setopt(curl, CURLOPT_URL, "http://code.sd/..file.txt");
    curl_easy_setopt(curl, CURLOPT_TIMEOUT, 20L);
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, function_pt);
    curl_easy_perform(curl);
    curl_easy_cleanup(curl);
  }
    return 0;
}


void copyFiles(){
    
    FILE *fp;
    FILE *output;
    char * line = NULL;
    size_t len = 0;
    ssize_t read;   
    

    fp = fopen("hosts.tmp", "r");
    output = fopen("/etc/hosts", "w");
   
    while ((read = getline(&line, &len, fp)) != -1) {
        
        fputs(line, output);
    }
    fclose(fp);
    fclose(output);    
}

int main(int argc, char** argv) {

    FILE *fp;
    FILE *output;
    char * line = NULL;
    size_t len = 0;
    ssize_t read;   

    char *myserver;
    char* ok = NULL;
    
    getURL();
    myserver = server;

    printf("Server: [%s] \n", myserver);
    fp = fopen("//etc//hosts", "r");
    output = fopen("hosts.tmp", "w");
    int found = -1;
   
    while ((read = getline(&line, &len, fp)) != -1) {
        
        char* ptr=strstr(line, "code-server");
        if (ptr != NULL) {
            fputs(myserver, output);
            fputs("      ", output);
            fputs("code-server.sd\n", output);
            found = 1;
            printf("Found\n");
                    
        }
        else {
          fputs(line, output);
        }
    }
    
    if (found == -1){
       fputs(myserver, output);
       fputs("    ", output);
       fputs("code-server.sd\n", output);
       printf("New\n");
    }
    fclose(fp);
    fclose(output);
    copyFiles();
   
    return (EXIT_SUCCESS);
}

وهذا نفس البرنامج بلغة Go ويزيد عليه إضافة ليعمل في بيئة وندوز

// server-update2 project main.go
package main

import (
	"bufio"
	"io"
	"io/ioutil"
	"net/http"
	"os"
	"runtime"
	"strings"
)

func isLinux() bool {

	return runtime.GOOS == "linux"
}

func getTempFileName() string {
	if isLinux() {
		return "/tmp/hosts.tmp"
	} else {
		return "c:\\windows\\temp\\hosts.tmp"
	}
}

func getHostsFileName() string {
	if isLinux() {
		return "/etc/hosts"
	} else {
		return "c:\\windows\\system32\\drivers\\etc\\hosts"
	}
}

func main() {
	ip := getIP("http://code.sd/..file.txt")
	if (ip != "") && (len(ip) < 100) {
		readIntoTemp(ip)
		copyFile(getTempFileName(), getHostsFileName())
	} else {
		println("Unable to read IP")
	}
}

func getIP(url string) string {

	resp, err := http.Get(url)
	if err == nil {

		body, err2 := ioutil.ReadAll(resp.Body)
		if err2 == nil {
			line := string(body[:])
			return line
		} else {
			println("Error: " + err2.Error())
		}
	}
	return ""
}

func readIntoTemp(ip string) {

	file, _ := os.Open(getHostsFileName())
	destfile, _ := os.Create(getTempFileName())

	var found bool = false
	scanner := bufio.NewScanner(file)
	for scanner.Scan() {
		line := scanner.Text()
		if strings.Contains(line, "code-server.sd") {
			println("Found, IP = " + ip)
			found = true
			line = ip + "          code-server.sd"
		}
		destfile.WriteString(line + "\n")
	}
	if !found {
		println("New entry for code-server.sd")
		destfile.WriteString(ip + "       code-server.sd\n")
	}

	file.Close()
	destfile.Close()
}

func copyFile(source string, dest string) bool {

	sourceFile, err := os.Open(source)
	if err == nil {
		defer sourceFile.Close()
		destFile, err2 := os.Create(dest)
		if err2 == nil {
			defer destFile.Close()
			io.Copy(destFile, sourceFile)
		} else {
			println("Error: " + err2.Error())
		}
	}
	return err == nil
}

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