10 Best HTML5 Tools You Need to Create An Amazing Website | Codementor

10 Best HTML5 Tools You Need to Create An Amazing Website

– May 6th 2015

Introduction

For any web developer or designer, HTML5 tools prove to be a great help when it comes to step up their workflow and perform repetitive tasks. These tools are blessed with all the richness and power that help webmasters to augment the value of their work and improve the usability of their web designs. They are compelling enough to build beautiful and responsive websites in the quickest possible manner. The majority of HTML5 tools is available for free and they are popular because they take less time and efforts to fabricate a commendable website.

Using HTML5 tools, developers can easily incorporate eye-catching animation effects, videos, fonts, and graphics to their websites. If you are interested in HTML5 tools, then you have come to the right place. Here, we have handpicked a list of some 10 HTML5 tools that are considered best of breed and are famous for their promising nature. You can pick any one of them to manage and build the code for your website.

1. Font dragr

 

Font dragr is all what you need to preview custom web fonts in the browser. It’s a very simple tool that comes with a drag and drop interface allowing you to drop your typefaces, scalable vector graphics, and Web Open Fonts on the web page to test all of them instantly. Use Font Dragr to instantly load your font and know whether it’s appropriate or not.

2. HTML5 Maker

Animations make a dynamic visual impact on the appearance of a website, and HTML5 Maker is a richly different take on this aspect. Being the finest online animation tool, HTML5 Maker makes it easy for developers to add interactive content to their website with the help of HTML, CSS and JavaScript. The tool is extremely easy to use and helps developers to attain desirable results efficiently. HTML5 Maker also allows you to develop cross-compatible animated content such as Slideshows, HTML5 animation, sliders and more.

 3. HTML Kickstart

HTML Kickstart is a set of HTML, CSS, jQuery elements, and layouts that together help you to start your HTML5 venture while saving you a lot of precious time and efforts.

If you are looking for a tool that speed up your work, then HTML Kickstart is all what you need. It is also compatible across all the major browsers and calls for zero configuration.

4. Initializer

 

Initializer is a high-end HTML5 tool and template generator to help you kick start your next HTML5 boilerplate project quickly. It’s a nice tool for developing impressive and customizable template to suit your project needs.

5. Liveweave

 

Liveweave is yet another exemplary HTML5 tool that comes packed with context-sensitive autocompletion for both HTML and CSS. The tool provides you a playground to play around different codes and tag elements to structure your project. Liveweave is a highly sough-after tool among front-end developers as it helps them generate HTML and CSS tags automatically. Once you are done, simply set the live viewer either vertically or horizontally to preview the front-user experience.

6. Adobe Edge Animate

Adobe Edge Animate is a compelling tool for HTML5 developers for creating interactive HTML animations. If you are a part of digital publishing, web, or advertisement, then Adobe Edge Animation will surely appease you. The tool lets them build beautiful animations that run flawlessly across a range of devices. Also, its cross-compatible nature makes sure you never lose your audience.

7. Modernizr

 

Modernizr is an advanced, open-source JavaScript library that allows designers to create pleasurable website experiences, on the basis of visitor’s browser. Using this tool, you can easily detect whether the current browser supports CSS3 and HTML5 features. This way you can make your website suitable as per the browser.

8. CrossWalk

 

Create cutting-edge HTML5 applications using CrossWalk. In its bare bones, CrossWalk is a web runtime tool that comes complete with outstanding features of a modern browser. Compatible with both Android and Tizen, CrossWalk is a tool that deserves your attention for constructing interactive mobile applications.

9. Online 3D Sketch

  

Online 3D Sketch is a remarkable tool that makes the process of creating sketches and drawings absolutely fun and easy. It’s a free online tool that allows developers to create and share their drawing experiences among their friends and team members while encouraging their valuable feedbacks.

10. Patternizer

As the name suggests, Patternizer is a tool that enables developers to develop inspiring patterns for their website. The tool is available for free and allows you to integrate clean codes to generate impressive patterns that are sure to please your website visitors.

المصدر: 10 Best HTML5 Tools You Need to Create An Amazing Website | Codementor

العوامل المؤثرة فى نجاح اي دورة تدريبية برجاء الافادة

ما هي العوامل التي تؤثر فى نجاح اي دورة تدريبية بالنسبة للمتدرب بالنسبة المحاضر بالنسبة الجو العام المحيط بكليهما

العوامل التى تؤثر فى نجاح الدورة التدريبية

أولاً بالنسبة للمتدرب

– تحديد الفجوة التدريبية بشكل جيد
– الإقتناع بأهمية التدريب
– توافر الرغبة والدافع للتدريب
– الإستعداد قبل الدورة التدريبية

ثانياً :المدرب الناجح- أثناء التدريب

اذهب إلى مكان التدريب مبكرا للتأكد من ترتيب المكان، وعمل الوسائل المساعدة، وتجهيز الحاسوب، ولكي تكون هادئا عند بدء التدريب. تأكد من أنك قد نِلت قسطاً من الراحة في اليوم السابق للتدريب. ارتد ملابس لائقة بمكان ووقت التدريب وثقافة المتدربين. الملابس اللائقة تختلف حسب الموقف فقد تكون زي العمل في حالة التدريب الداخلي، وقد تكون ملابس نصف رسمية، وقد تكون ملابس رسمية جدا.البداية ابدأ التدريب بالترحيب بالمتدربين والتعريف بنفسك، ومن الجيد أن تطلب منهم التعريف بأنفسهم كي تتعرف على خبراتهم ومراكزهم. حاول النظر إلى المتدربين باستمرار موزعا نظرك بينهم جميعا، وحاول ألا تكون عبوسا أو متجهما بل كن بشوشا. حاول كسر الحواجز بينك وبين المتدربين وبين بعضهم البعض، وقد يكون تعريفهم بأنفسهم وتعريفك بنفسك كافيا، وقد تلجأ إلى القيام ببعض التمارين الجماعية في البداية وهذا يتوقف على وقت التدريب ومدى رسميته وعلى أعمار ومراكز المتدربين.من المهم أن تتحدث في البداية عن نظام التدريب من حيث إمكانية طرح أسئلة أثناء الشرح، استخدام الهاتف المحمول، الخروج والدخول من القاعة، مواعيد الراحات، وأي خدمات أخرى متاحة للمتدربين. من المُفضَل عدم السماح باستخدام الهاتف المحمول داخل القاعة ومن المعتاد السماح بطرح الأسئلة أثناء الشرح. حاول الحفاظ على النظام في قاعة التدريب ولكن بشيء من اللطف والحكمة.تحدث عن موضوع التدريب وحدد ما سوف يتناوله وحاول التعرف على ما يتوقعه المتدربون. إن كانت توقعاتهم مشابهه لما أعددته فهذا جيد، وإن كانت مختلفة فإما أن يكون بالإمكان تلبيتها أو أن توضح أن هذا البرنامج التدريبي لن يغطي بعض التوقعات. فمثلا قد يُطلَب منك إعداد دورة تدريبية عن مبادئ تخطيط الإنتاج ثم تجد من يتوقع أن تحدثه عن تخطيط المبيعات فلا يكون معقولا أن تغير الموضوع تماما. ولكن في حالة عدم القدرة على تغطية بعض التوقعات فمن المُستحسَن أن تَدل المتدرب على مصدر مثل كتاب أو موقع إلكتروني قد يجد فيه بعض المعلومات التي تفيده، أو أن تعطيه بعض المواد التدريبية التي قد تساعده.
أيضا عليك توضيح أهمية الموضوع للمتدربين في البداية وأثناء التدريب، فأحيانا يكون الموضوع مهما جدا للمتدربين ولكن نظرا لأن المدرب لم يوضح ذلك في البداية فإن المتدربين لا يدركون تلك الأهمية إلا بعد انقضاء فترة التدريب، ولذا فإنهم يفتقدون الحافز أثناء التدريب.
التعامل مع المتدربين
عند التعامل مع المتدربين ينبغي أن تحترم خبراتهم وعلمهم وألا تعاملهم كتلامذة في المدرسة. لا أقول إن عليك أن تصطنع الاحترام ولكنني أعني أن تكون مقتنعا بذلك في نفسك فيكون الاحترام طبيعيا. من الممكن أن تصادف بعض المتدربين الذين يعرضون آراءً تبدو سفيهة ولكن عليك أن تعالج الأمر بدون أن تُسفه آراءهم. ركِّز على مهمتك وهي التدريب وخروج المتدربين وقد اكتسبوا مهارات أو معارف جديدة.
لا تخرج عن موضوع التدريب وحاول توجيه المتدربين الذين يخرجون عن الموضوع إلى موضوع التدريب مرة أخرى بشيء من اللطف. احذر الخروج عن الموضوع إلى مواضيع خارجية وخاصة المواضيع الدينية أو السياسية، واحذر تحول الدورة التدريبية إلى مجرد شكاوى من العمل ومن المديرين. احرص على أن تتيح الفرصة للجميع للمشاركة والاستفادة من التدريب. لاحظ المتدربين وتعبيرات وجوههم لمعرفة ما إذا كانوا متحمسين للتدريب أم لا، وحاول أن تجعل التدريب خبرة ممتعة للمتدربين بخلق بيئة جيدة ومريحة داخل قاعة التدريب.
توقع أن تجد تفاوتاً في خلفية المتدربين السابقة عن موضوع التدريب وكذلك في قدراتهم على الاستيعاب. عليك أن تتعامل مع هذا الموقف بأن تُظهِر تقديرك لخبرات من له خبرة في الموضوع وبألا تجعل من يسمع الموضوع لأول مرة يشعر بالحرج ويتمنى لو لم يحضر التدريب أصلا. فمثلا قد تستخدم بعض العبارات التي تُظهر تقديرك لمن له خبرة في الموضوع بأن تقول “ربما بعض حضراتكم له خبرة في هذا المجال” أو تقول عند مشاركة أحدهم “هذه معلومة هامة”. وأحيانا تطلب ممن له خبرة توضيح بعض المواقف التي استخدم فيها موضوع التدريب فهذا يضيف أمثلة واقعية ويفيد المتدربين الآخرين ويُشعر هذا المتدرب بأنه مشارك فعال في عملية التدريب. فمثلا قد تسأل “هل لك أن توضح لنا ما هي الصعوبات التي واجهتها عند تطبيق هذا الأسلوب؟” أو “ما هي الفوائد التي حصلت عليها المؤسسة من تطبيق هذا النظام؟” وهكذا.
عليك أيضا أن تدعم الشخص الذي يسمع الموضوع لأول مرة بمزيد من الشرح بحيث يستطيع أن يفهم بدون أن تُظهِره بمظهر التلميذ الفاشل، فمثلا يمكنك التعليق بـ “ربما بعضكم يعلم معنى التسويق ولكن دعونا نسترجع الموضوع معا ونتعرف على الجديد فيه”. وقد تسمح للمتدربين بالمشاركة وبالتالي فإن الشخص الذي لا يعرف معنى التسويق سوف يفهمه من شرحك ومن مداخلات الآخرين دون أن يشعر بحرج. عليك كذلك مساندة المتدربين أثناء القيام ببعض التمارين بأن تساعدهم بنفسك أو أن تشكل مجموعات تقوم بحل التمارين من اثنين فأكثر بحيث تكون كل مجموعة خليط من ذوي الخبرة في الموضوع مع من لا علم له بالموضوع من قبل. بهذه الطريقة تستفيد من ذوي الخبرة ولا تُحرج الأقل خبرة، ولكن عليك متابعة التعامل بينهم لكي لا يقوم أحد المشاركين بازدراء الآخر.
التعامل مع الصعاب
قد تجد أن أحد المتدربين لا يرغب في المشاركة وآخر يتحدث كثيرا وآخر يرفض التدريب أصلا. عليك أن تتعامل مع هذه المواقف بما يؤدي إلى نجاح الدورة واستفادة أكبر عدد من المتدربين.فالشخص الثرثار يأخذ وقتا أطول من الباقين وبالتالي يستهلك وقت التدريب ويؤثر على مشاركة الآخرين. لذلك فعليك أن تحاول تلخيص كلامه عندما يبدأ في التقاط أنفاسه ثم افتح الباب لمشارك آخر مُشعِرا المشارك الأول بتقديرك لكلامه. كذلك لا تكثر من طرح الأسئلة عليه ولا تكثر من النظر إليه عندما يتحدث لكيلا تشجعه على الاستمرار. هذا لا يعني أن تُهمِله أو أن تتجنب النظر إليه لأن هذا سيُشعِره بأنه غير مرغوب فيه ويتحول إلى شخص رافض للمشاركة وللتدريب. يمكنك أن تستخدم اللطف والحكمة فتقول “السيد فلان لديه نقاط كثيرة جيدة ولكن أستَأذِنك أن نُتيح الفرصة للآخرين”. هناك نوع آخر وهو الثرثار الذي يتكلم في غير موضوع التدريب فهذا عليك أن توضح له أهمية ما يتحدث فيه وأن تطلب منه بلباقة العودة إلى موضوع التدريب.
قد تجد شخصا كارها للتدريب نتيجة لشعوره بالضيق من أمر ما. استمع له لتتعرف على سبب ضيقه وإحباطه وبناءً عليه تُحدد أسلوب التعامل مع المشكلة. فإما أن تكون المشكلة خارجية ولا دخل لك بها فقد تتعاطف مع مشكلته وتشجعه على الاستمرار بجدية في التدريب وإما أن تحاول حل المشكلة إن كان لها علاقة بالتدريب نفسه كمكان جلوسه أو شعوره بأنك لا تهتم بمشاركته أو ما شابه.
قد تجد أن أحد المتدربين خجول أو يشعر بأن معلوماته أقل من معلومات الآخرين. إن تشجيعك لهذا الشخص بالحديث يبدأ بسلوكك مع المجموعة عموما ومعه خاصة. فكلما أظهرت احترامك ورغبتك في الاستماع للمتدربين ولآرائهم مهما كانت بسيطة كلما تشجع هذا المتدرب على المشاركة. تجنب أي تعليقات سلبية على آراء المتدربين. إن كان السبب هو ضعف مستوى المتدرب مقارنة بالآخرين فحاول تنمية ثقته وشعوره بمساندتك وذلك بمساعدته أثناء التمارين الفردية أو الجماعية والاهتمام بأسئلته.
اللغة
استخدم اللغة المناسبة للمتدربين وثقافتهم وطبيعة عملهم. المقصود باللغة هنا لغة كتابة المادة التدريبية. كثيرا ما تُستخدم اللغة الإنجليزية في التدريب بدون سبب وهو ما يتسبب في ضياع مجهود المتدربين في فهم الكلمات الغريبة عليهم بالإضافة إلى فهم موضوع التدريب نفسه، فمثلا ما الداعي أن تستخدم اللغة الإنجليزية في موضوع التحفيز أو التقييم أو التوظيف؟ أما في بعض الحالات التي تكون فيها مصطلحات الموضوع معلومة لدى المتدربين بالإنجليزية أكثر منها بالعربية ففي هذه الحالة يصبح التدريس باللغة الإنجليزية أفضل مثل أن تقوم بتدريب أطباء في موضوع متقدم في الطب وكذلك الحال بالنسبة لكثير من المواضيع الهندسية. تُستخدم العربية كلغة الحوار – في جميع الأحوال – وتُستخدم اللغة الإنجليزية في المصطلحات الخاصة فقط. هذا إن كان لك حرية اختيار لغة الكتابة ولغة الحوار ولكن في بعض الأحيان يُطلب منك إعداد المادة التدريبية بلغة بعينها.
الحركة أثناء التدريب
تحرك داخل قاعة التدريب ولا تجلس خلف المكتب أو تقف ثابتا لفترات طويلة. اقترب من المتدربين وتفاعل معهم. في حالة استخدام الشرائح في العرض فلا تجعل كل جملة في الشرائح تظهر عند ضغطك على الفأرة لأن هذا سيجعلك تقف بجوار الحاسوب طوال الوقت. قبل بداية التدريب تأكد من وجود ممرات يُمكنك التحرك بها بحرية بمعنى أن تكون هناك ممرات واسعة ولا يعوقك فيها أسلاك ممتدة في الهواء أو وضع عارض البيانات. إن اضطررت لاستخدام مكبر الصوت فحاول استخدام المكبر اللاسلكي لكي لا يعوق حركتك وإن اضطررت لاستخدام المكبر السلكي أي التقليدي فحاول أن يكون السلك طويلا بحيث يسمح لك بالحركة.
الأسئلة
عليك ان تَسعَد بالأسئلة وأن تستمع لها باهتمام لأنها توضح اهتمام المتدربين وتساعد على توضيح الأمور للجميع. حاول الإجابة بوضوح والتأكد من أن السائل قد فهم الإجابة وذلك بسؤاله أو من خلال تعبيرات وجهه وما إلى ذلك. بعض الأسئلة قد يكون بسيطا أو تافها بعض الشيء، ولكن على أي حال فإنه يوضح لك أن أحد المتدربين لم يفهم تلك المعلومة البسيطة فاستغل الفرصة للتوضيح. الأسئلة التي لا علاقة لها بالموضوع ينبغي تجنب الخوض فيها مع توضيح تقديرك لأهميتها. قد لا تعرف الإجابة على بعض الأسئلة فيمكنك أن تعِد السائل بان ترد عليه لاحقا بأي وسيلة من وسائل الاتصال، أو أن تفتح المجال لكي يرد من يعرف من الحاضرين إن وجد. وفي حال أنك أعطيتَ وعدا بالرد في وقتٍ لاحق فعليك الوفاء بوعدك.
تقديم عرض أو محاضرة
تحدثت في مقالة سابقة عن كيفية تقديم عرض تقديمي فعليك الرجوع إليها لأن بها الكثير من الملاحظات الأساسية في استخدام أسلوب المحاضرة ولا مجال لتكرارها هنا.
الختام
اشكُر المتدربين على مشاركتهم وشجعهم على الاستفادة من التدريب في عملهم. تبادل التحية مع المتدربين، ويمكنك أن تُخبرهم بعنوان بريدك الإلكتروني لكي يتواصلوا معك بخصوص موضوع التدريب. يفضل أن تتعرف على رأي المتدربين عن طريق استبيان قصير لأن هذا يفيدك في إعداد الدورات التدريبية المقبلة.
بعد التدريب فكر في الأشياء التي نجحت وتلك التي لم تنجح. حلل أسباب فشل بعض أساليب التدريب لكي تستطيع تحسين نفسك في كل مرة. خذ رأي المتدربين في الاعتبار وحاول تدارك الأخطاء في المستقبل. إن كانت لك صلة بالمتدربين بعد التدريب فحاول معرفة ما إذا كانوا استطاعوا تطبيق شيء مما تدربوا عليه، وإن لم يكن فحاول معرفة ما إذا كان السبب راجعا لعدم قدرتهم على التطبيق أم لظروف خارجة عن إرادتهم.
أهم النصائح
لعلك تريد النصائح الهامة…
سألتُ مجموعة من الزملاء الذين حضروا دورات تدريبية عديدة في الدول العربية والأجنبية عن أكثر ما يعجبهم وما لا يعجبهم في الدورات التدريبية وكانت إجاباتهم تدور حول ثلاث نقاط:
أولا: الدورات الناجحة ترَكِز على التطبيق بمعنى أن يخرج المتدرب من التدريب وقد أتقن تطبيق شيء ما. أما الدورات الفاشلة فهي دورات يتحدث فيها المدرب عن أمور جميلة ولا يقوم بتمرين المتدربين على تطبيقها في واقع عملهم بل وأحيانا يخبرهم المدرب بأن عليهم اكتشاف كيفية تطبيقها في واقعهم.
ثانيا: الدورات الناجحة يتفاعل فيها المدرب مع المتدربين ويجعلهم يشتركون بحماس في التدريب ويكون ذلك من خلال أسلوبه ومن خلال تنوع طرق التدريب فيكون هناك مناقشات ودراسة حالات وتمثيل أدوار ومحاكاة ومحاضرات. أما الدورات الفاشلة فتتسم باتباع أسلوب المحاضرة (الإلقاء) معظم الوقت.
ثالثا: الدورات الناجحة يستخدم فيها المدرب أمثلة واقعية ويكون لديه خبرة نظرية وعملية. أما الدورات الفاشلة فتكون الامثلة فيها بعيدة عن الواقع وتكون خبرة المدرب نظرية فقط.
ولو تأملت في النقاط الثلاث لوجدت نقطة مشتركة بينهم وهي “التطبيق” أو “الناحية العملية”. وذلك قد يكون مرجعه إلى ضعف هذه النقطة في كثير من الدورات التدريبية المحلية. فانتبه لهذه النقطة واستخدم كل الوسائل التي تمكنك من ربط التدريب بواقع عمل المتدربين وتأكد من أن المتدربين أصبحوا ماهرين في استخدام ما تعلموه في واقعهم. لذلك فإنه يمكن القول أننا نحتاج لزيادة استخدام التمارين والمحاكاة وتمثيل الأدوار وكل وسائل التطبيق العملية. هذه النصيحة تلمس القصور المعتاد في الدورات التدريبية ولكنها لا تكفي وحدها لنجاح التدريب فلابد من تضافر كل العوامل لنجاح التدريب.

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

رابط المصدر:https://hrdiscussion.com/hr47683.html

المصدر: العوامل المؤثرة فى نجاح اي دورة تدريبية برجاء الافادة

جهاز الاستثمار المحلي

 لقد تضمن قانون المالية التكميلي لسنة 2015 أحكاما متعلقة بأملاك الدولة فيما يخص تشجيع الاستثمار. ) المادة 48 لقانون المالية التكميلي لسنة 2015 التي تعدل و تتمم المادة 05 من الأمر رقم 08 – 04 المؤرخ في 01 سبتمبر 2008 الذي يحدد شروط و كيفيات منح الامتياز على الأراضي التابعة للأملاك الخاصة للدولة و الموجهة لإنجاز مشاريع استثمارية(.

بموجب هذه الأحكام يمنح الامتياز على العقارات الموجهة للاستثمار حصريا عن طريق التراضي، بموجب قرار من الوالي :

  • على أساس اقتراح من المدير الولائي المكلف بالاستثمار المختص إقليميا، فيما يخص الأراضي التابعة للأملاك الخاصة للدولة، الأصــول المـتــبــقــيـة الـتـابعــة لـلـمـؤسـسـات الـعـمـومـيـة المنحــلـة والأصـول الفائضة التابعة للمؤسسات العمومية الاقتصادية و كذا الأملاك الواقعة على مستوى المناطق الصناعية و مناطقالنشاط
  • بناءا على اقتراح هيئة تسيير المدينة الجديدة بالنسبة للأملاك الواقعة داخل محيط المدينة الجديدة بعد موافقة الوزير المكلف بالمدينة
  • بعد رأي موافق للوكالة الوطنية للتنمية السياحية (ANDT) بالنسبة للعقارات الواقعة داخل مناطق التوسع السياحي وبعد موافقة الوزير المكلف بالسياحة

 

     إجراءات منح الامتياز على الأملاك العقارية للدولة لإنجاز المشاريع الاستثمارية تبينها التعليمة الوزارية المشتركة رقم 01 المؤرخة في 06 أوت 2015.

تشرح هذه التعليمة الكيفيات  الجديدة و الإجراءات المتبعة للحصول على حق الامتياز بالتراضي وكذا الآجال الجديدة لمعالجة الملفات.

 طريقة عملية لمعالجة ملفات طلب الامتياز على العقار الموجه لانجاز مشاريع

  1

=>

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

  2

=>

يكلف المدير الولائي المكلف بالاستثمار بدراسة الملف، كما يستشير المديريات الولائية المعنية بالمشروع. ) يلزم المديرون الولائيون، الذين تتم استشارتهم، رأسهم في أجل لا يتعدى ثمانية )08( أيام(

  3

=>

يتم تحويل الملف للوالي مع تقرير تقييمي معلل، في أجل ثمانية )08( ايام من تاريخ تلقي آراء المديريات التي تمت استشارتها.

  4

=>

يتخذ الوالي قراره بخصوص الملف، و في حالة الموافقة فإنه يقوم بإصدار قرار بالقابلية للحصول على امتياز بالتراضي.

  5

=>

تلزم إدارة أملاك الدولة باستكمال إجراءات التوقيع مع المستفيد على دفتر أعباء في اجل ثمانية أيام من تلقي الملف.

يحدد أجل شهر واحد لإنجاز عقد الامتياز

  6

=>

في حالة رفض الملف، يلتزم المدير الولائي المكلف بالاستثمار بإعلام المعني، في اجل خمسة عشر (15) يوم، عن طريق مراسلة مبررة.

شروط منح الامتياز

يمنح الامتياز لمدة دنيا قدرها 33 سنة قابلة للتجديد  وقصوى قدرها 99 سنة. ويخول لصاحبه الحقوق التالية:

  • الحصول على رخصة بناء.
  • التماس الحصول على قرض لدى المؤسسات المالية قصد تمويل مشروعه.

حق الامتياز مضمون و لايمكن إلغاؤه إلا في حالة إخلال صاحب الامتياز بالتزاماته و عن طريق العدالة.

الامتيازات المالية التي يخولها الامتياز

يتم منح تخفيضات على ثمن الامتياز حسب النسب المحددة وفقا لموقع المشروع:

1-ولايات الشمال:

  • 90% خلال فترة انجاز المشروع التي تمتد من سنة واحدة (01) إلى ثلاث (03) سنوات.
  • 50% خلال فترة الاستغلال التي تمتد من سنة واحدة (01) إلى ثلاث (03) سنوات.

2- ولايات الجنوب و الهضاب العليا :

  • بالدينار الرمزي للمتر المربع خلال فترة عشر سنوات و 50% من مبلغ الإتاوة المستحقة لأملاك الدولة بعد هذه الفترة، بالنسبة للمشاريع الاستثمارية المتواجدة بولايات الجنوب و الهضاب العليا
  • بالدينار الرمزي للمتر المربع خلال فترة خمسة عشر (15) سنة و 50% من مبلغ الإتاوة المستحقة لأملاك الدولة بعد هذه الفترة بالنسبة لولايات الجنوب الكبير.

المصدر: جهاز الاستثمار المحلي

التحضير الانتخابات المحلية 2017

الانتخابات المحلية 2017، أي رهانات؟

انتخاب المجالس الشعبية البلدية والولائية

انتخاب المجالس الشعبية البلدية والولائية:

  • ينتخب المجلس الشعبي البلدي والمجلس الشعبي الولائي لعهدة مدتها 5 سنوات بطريقة الاقتراع النسبي على القائمة.
  • تجرى الانتخابات في ظرف الأشهر الثلاثة (3) التي تسبق انقضاء العهدة الجارية.

المرجع القانوني: المادة 65 من القانون العضوي رقم 16-10 المؤرخ في 22 ذي القعدة عام 1437 الموافق 25 غشت سنة 2016، يتعلق بنظام الانتخابات.

انتخاب رئيس المجلس الشعبي البلدي:

يعلن رئيسا للمجلس الشعبي البلدي متصدر القائمة التي تحصلت على أغلبية أصوات الناخبين.

و في حالة تساوي الأصوات، يعلن رئيسا المرشحة أو المرشح الأصغر سنا.

المرجع القانوني: المادة 65 من القانون رقم 11-10 المؤرخ في 20 رجب عام 1432 الموافق 22 يونيو سنة 2011 والمتعلق بالبلدية.

انتخاب رئيس المجلس الشعبي الولائي:

ينتخب المجلس الشعبي الولائي رئيسه من بين أعضائه للعهدة الانتخابية.

يقدم المترشح لانتخاب رئيس المجلس الشعبي الولائي من القائمة الحائزة الأغلبية المطلقة للمقاعد.

في حالة عدم حصول أي قائمة على الأغلبية المطلقة للمقاعد، يمكن القائمتين الحائزتين خمسة و ثلاثين بالمائة 35% على الأقل من المقاعد تقديم مرشح.

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

يكون الانتخاب سريا. و يعلن رئيسا للمجلس الشعبي الولائي المترشح الذي تحصل على الأغلبية المطلقة للأصوات.

وإذا لم يحصل أي مترشح على الأغلبية المطلقة للأصوات يجري دور ثان بين المترشحين الحائزين المرتبتين الأولى والثانية، ويعلن فائزا المترشح المتحصل على أغلبية الأصوات.

في حالة تساوي الأصوات المحصل عليها، يعلن فائزا المترشح الأكبر سنا.

المرجع القانوني: المادة 59 من القانون رقم 12-07 المؤرخ في 28 ربيع الأول عام 1433 الموافق 21 فبراير سنة 2012 والمتعلق بالولاية.

متى و أين تصوت ?

الدوائر الانتخابية:

يجري الاقتراع على مستوى الدائرة الانتخابية. يقصد بالدوائر الانتخابية، شطر بلدية، أو من بلدية أو من عدة بلديات. (المادة 26 من القانون العضوي رقم 16-10 المؤرخ في 22      ذي القعدة عام 1437 الموافق  25 أوت 2016 والمتعلق بنظام الانتخابات).

بالنسبة لانتخاب المجلس الشعبي الولائي، تحدد الدائرة الانتخابية بالحدود الإقليمية للولاية.

وبالنسبة لانتخاب المجلس الشعبي البلدي، تحدد الدائرة الانتخابية بالحدود الإقليمية للبلدية.

مكاتب التصويت:

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

مراكز التصويت:

عندما يكون مكتبين أو عدة مكاتب تصويت في نفس المكان، فتشكل “مركز تصويت” موضوعة تحت مسؤولية رئيس مركز، يعين و يسخر بقرار من الوالي.

مكاتب التصويت المتنقلة:

تلحق مكاتب التصويت المتنقلة بأحد مراكز التصويت في الدائرة الانتخابية.

 

الدوائر الانتخابية:

يجري الاقتراع على مستوى الدائرة الانتخابية. يقصد بالدوائر الانتخابية، شطر بلدية، أو من بلدية أو من عدة بلديات. (المادة 26 من القانون العضوي رقم 16-10 المؤرخ في 22      ذي القعدة عام 1437 الموافق  25 أوت 2016 والمتعلق بنظام الانتخابات).

بالنسبة لانتخاب المجلس الشعبي الولائي، تحدد الدائرة الانتخابية بالحدود الإقليمية للولاية.

وبالنسبة لانتخاب المجلس الشعبي البلدي، تحدد الدائرة الانتخابية بالحدود الإقليمية للبلدية.

مكاتب التصويت:

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

مراكز التصويت:

عندما يكون مكتبين أو عدة مكاتب تصويت في نفس المكان، فتشكل “مركز تصويت” موضوعة تحت مسؤولية رئيس مركز، يعين و يسخر بقرار من الوالي.

مكاتب التصويت المتنقلة:

تلحق مكاتب التصويت المتنقلة بأحد مراكز التصويت في الدائرة الانتخابية.

end faq

رزنامة العملية الانتخابية

 

 

        استدعاء الهيئة الانتخابية:

  • المرجع القانوني:

تنص المادة 25 من القانون العضوي رقم 16-10 المؤرخ في 22 ذو القعدة عام 1437 الموافق 25 أوت سنة 2016 والمتعلق بنظام الانتخابات على أن الهيئة الانتخابية تستدعى بموجب مرسوم رئاسي في غصون الثلاثة أشهر التي تسبق تاريخ الانتخاب.

 

  • تاريخ استدعاء الهيئة الانتخابية:

في يوم 26 غشت 2017، قام السيد رئيس الجمهورية باستدعاء الهيئة الانتخابية عن طريق المرسوم الرئاسي رقم 17-246 المؤرخ في 4 ذي الحجة عام 1438 الموافق 26 غشت 2017 المتضمن استدعاء الهيئة الانتخابية لانتخاب أعضاء المجالس الشعبية البلدية   والولائية (الجريدة الرسمية العدد 50 لسنة 2017). حيث تم استدعاء الهيئة الانتخابية لانتخاب أعضاء المجالس الشعبية البلدية والولائية يوم الخميس 23 نوفمبر 2017.

 

ج- المراجعة الاستثنائية للقوائم الانتخابية:

المرجع القانوني:

تنص المادة 14 من القانون العضوي رقم 16-10 المؤرخ في 22 ذو القعدة عام 1437 الموافق 25 أوت سنة 2016 والمتعلق بنظام الانتخابات على أن القوائم الانتخابية يمكن مراجعتها استثنائيا بمقتضى المرسوم الرئاسي المتضمن استدعاء الهيئة الانتخابية، والذي يحدد فترة افتتاحها واختتامها.

تاريخ المراجعة الاستثنائية:

طبقا لأحكام المرسم الرئاسي رقم 17-246 المؤرخ في 4 ذي الحجة عام 1438 الموافق 26 غشت سنة 2017 والمتضمن استدعاء الهيئة الانتخابية لانتخاب أعضاء المجالس الشعبية البلدية والولائية.

إن تواريخ افتتاح و اختتام المراجعة الاستثنائية تحددت على النحو التالي:

تاريخ الافتتاح: الأربعاء 30 غشت 2017.

تاريخ الاختتام: الأربعاء 13 سبتمبر 2017.

تاريخ الاقتراع 

المرجع القانوني والتنظيمي:

تنص المادة 25 من القانون العضوي رقم 16-10 المؤرخ في 22 ذو القعدة عام 1437 الموافق 25 أوت سنة 2016 والمتعلق بنظام الانتخابات على أن تاريخ الانتخابات يحدد بموجب المرسوم الرئاسي المتضمن استدعاء الهيئة الانتخابية، والمتمثل في المرسوم الرئاسي رقم 17-246 المؤرخ في 4 ذي الحجة عام 1438 الموافق 26 غشت سنة 2017 والمتضمن استدعاء الهيئة الانتخابية لانتخاب أعضاء المجالس الشعبية البلدية و الولائية      ( الجريدة الرسمية العدد 50 لسنة 2017).

 

تاريخ و توقيت الاقتراع:

يبدأ الاقتراع يوم الخميس 23 نوفمبر 2017، ابتداء من الساعة الثامنة (8) صباحا ويختتم في نفس اليوم على الساعة السابعة (19) مساءا ( المادة 32 الفقرة الأولى من القانون العضوي رقم 16-10 المؤرخ في 22 ذو القعدة عام 1437 الموافق 25 أوت سنة 2016 المتعلق بنظام الانتخابات).

و بصفة استثنائية:

تقديم ساعة افتتاح الاقتراع أو تأخير ساعة اختتامه:

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

( المادة 32 الفقرة 2 من القانون العضوي رقم 16-10 المؤرخ في 22 ذو القعدة عام 1437 الموافق 25 أوت سنة 2016 والمتعلق بنظام الانتخابات).

تقديم تاريخ افتتاح الاقتراع:

بالنسبة للبلديات التي يتعذر فيها إجراء عمليات التصويت في يوم الاقتراع نفسه، لأسباب مادية تتصل بعدد مكاتب التصويت وتشتت السكان ولأي سبب استثنائي في بلدية ما، يمكن لوزير الداخلية والجماعات المحلية والتهيئة العمرانية أن يرخص الولاة وبطلب منهم، بتقديم تاريخ افتتاح الاقتراع باثنين و سبعين (72) ساعة على الأكثر ( المادة 33 الفقرة 2 من القانون العضوي رقم 16-10 المؤرخ في 22 ذوالقعدة عام 1437 الموافق 25 أوت سنة 2016 والمتعلق بنظام الانتخابات).

كيف تصوت ؟

كيفية التصويت يوم الاقتراع

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

يوضع تحت تصرف الناخب على مستوى مكتب التصويت ظرف واحد وأوراق التصويت   ( ورقة خاصة بكل قائمة مترشحين) بغرض التصويت.

يتوجه الناخب إلى المعزل للتعبيرعن اختياره بوضع ورقة تصويت واحدة داخل الظرف      وإدخال هذا الأخير في الصندوق.

تعتبر ورقة التصويت ملغاة في الحالات التالية:

  • الظرف المجرد من الورقة أو الورقة من دون الظرف،
  • عدة أوراق في ظرف واحد،
  • الأظرفة أو الأوراق التي تحمل أية علامة أو المشوهة أو الممزقة،
  • الأوراق المشطوبة كليا أو جزئيا،
  • الأوراق أو الاظرفة غير النظامية.

التصويت بالوكالة:

يمكن للناخب أن يصوت بالوكالة إذا كان:

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

المرجع القانوني:

المواد من 53 إلى 64 من القانون العضوي رقم 16-10 المؤرخ في 22 ذوالقعدة عام 1437 الموافق 25 أوت سنة 2016 والمتعلق بنظام الانتخابات.

كيف تترشح لانتخابات أعضاء المجالس الشعبية البلدية والولائية؟

شروط الترشح

يشترط في المترشح لانتخابات أعضاء المجالس الشعبية البلدية والولائية:

  • أن يستوفي الشروط المنصوص عليها في المادة 3 من القانون العضوي رقم 16-10 المؤرخ في 25 أوت 2016 والمتعلق بنظام الانتخابات وهي :
  • أن يكون متمتعا بحقوقه المدنية والسياسية،
  • لم يوجد في إحدى حالات فقدان الأهلية المحددة في التشريع المعمول به،
  • أن يكون مسجلا في الدائرة الانتخابية التي يترشح فيها.
  • أن يكون بالغا ثلاثا وعشرين (23) سنة على الأقل يوم الاقتراع،
  • أن يكون ذا جنسية جزائرية،
  • أن يثبت أداءه الخدمة الوطنية أو إعفاءه منها،
  • أن لا يكون محكوما عليه بحكم نهائي لارتكابه جناية أو جنحة سالبة للحرية و لم يرد اعتباره باستثناء الجنح غير العمدية.

المرجع القانوني: المادة 79 من القانون العضوي رقم 16-10 المؤرخ في 22 ذو القعدة عام 1437 الموافق 25 أوت سنة 2016 و المتعلق بنظام الانتخابات.

تكوين ملف الترشح

وفقا لأحكام القانون العضوي رقم 16-10 المؤرخ في 25 أوت 2016 والمتعلق بنظام الانتخابات، يلحق باستمارة التصريح بالترشح ملف لكل مترشح أساسي ومستخلف، مذكورون في القائمة يتكون من الوثائق الآتية:

  • بطاقة أداء الخدمة الوطنية أو شهادة الإعفاء منها،
  • شهادة الجنسية الجزائرية،
  • مستخرج رقم 3 من صحيفة السوابق القضائية،
  • صورة شمسية واحدة (1)،
  • مستخرج من شهادة الميلاد بالنسبة للمترشحين المولودين في الخارج وغير مقيدين في السجل الوطني الآلي للحالة المدنية،
  • نسخة من المحضر المعد من قبل رئيسي اللجنة الإدارية الانتخابية المختصة إقليميا بالنسبة لانتخاب أعضاء المجالس الشعبية البلدية، أو أحد رؤساء اللجان الإدارية الانتخابية للبلديات التابعة للولاية بالنسبة لانتخاب أعضاء المجلس الشعبي الولائي، عندما تكون قائمة المترشحين معنية باكتتاب التوقيعات الفردية للناخبين،
  • شهادة تزكية من قبل الحزب أو الأحزاب السياسية لقائمة المترشحين المقدمة تحت رعاية حزب أو عدة أحزاب سياسية،
  • نسخة من البرنامج الانتخابي الخاص بالحملة الانتخابية بالنسبة للقوائم الأحرار.

تطلب إدارة الولاية من الجهات القضائية المختصة مستخرج من صحيفة السوابق القضائية رقم 2 للمترشحين.

ملاحظة هامة:

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

التوقيعات الفردية لقوائم المترشحين

يجب أن تدعم على الأقل بخمسين (50) توقيعا من ناخبي الدائرة الانتخابية المعنية لكل مقعد مطلوب شغله بالنسبة:

  • للحزب السياسي الراغب في تقديم قائمة مترشحين ولا يتوفر فيه أحد الشرطين المذكورين في المطتين الأولى والثانية من الفقرة الأولى من المادة 73 من القانون العضوي رقم 16-10 المؤرخ في 25 أوت 2016 والمتعلق بنظام الانتخابات أي إما الحصول على أكثر من أربعة في المائة (%4 + (من الأصوات المعبر عنها في الدائرة الانتخابية المترشح فيها خلال الانتخابات المحلية الأخيرة (أي سنة 2012) حسب الحالة مجلس شعبي بلدي أو مجلس شعبي ولائي، و إما توفر عشر (10) منتخبين على الأقل في المجالس الشعبية للولاية المعنية،
  • قائمة تحت رعاية حزب سياسي يشارك لأول مرة في الانتخابات،
  • قائمة مترشحين بعنوان قائمة حرة.

توقع الاستمارات مع وضع السبابة اليسرى ويجب أن يصادق على التوقيعات المدونة في استمارات اكتتاب التوقيعات الفردية لدى ضابط عمومي.

و يقصد بالضابط العمومي في هذه الحالة:

  • رئيس المجلس الشعبي البلدي وبتفويض منه نوابه والأمين العام للبلدية ومندوبو البلديات والمندوبون الخاصون،
  • الموثق،
  • المحضر القضائي.

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

  • إلى رئيس اللجنة الإدارية الانتخابية المختصة إقليميا بالنسبة لانتخاب أعضاء المجالس الشعبية البلدية،
  • إلى أحد رؤساء اللجان الإدارية الانتخابية للبلديات التابعة للولاية بالنسبة لانتخاب أعضاء المجلس الشعبي الولائي.

وذلك أربعة وعشرين ساعة (24 سا) على الأقل قبل انتهاء الأجل المخصص لإيداع قوائم الترشيحات المنصوص عليه في المادة 74 من القانون العضوي رقم 16-10 المؤرخ في 25 أوت 2016 والمتعلق بنظام الانتخابات أي يوم السبت 23 سبتمبر 2017 قصد مراقبة التوقيعات والتأكد من صحتها ويعد محضرا بذلك من أجل اعتمادها وتسلم نسخة منه إلى ممثل قائمة المترشحين المؤهل قانونا.

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

احترام النسب المخصصة لتمثيل المرأة في القوائم الانتخابية

عملا بأحكام القانون العضوي رقم 12-03 المؤرخ في 12 يناير 2012 المحدد لكيفيات توسيع حظوظ تمثيل المرأة في المجالس المنتخبة، يجب أن يكون عدد النساء المترشحات الذي تتضمنه قوائم الترشيحات المقدمة من طرف حزب أو عدة أحزاب سياسية و كذا قوائم المترشحين الأحرار مطابقا للنسب التي حددتها المادة 2 من هذا القانون العضوي، حسب نوع المجلس كما يأتي:

 

بالنسبة لانتخابات المجالس الشعبية الولائية:

  • نسبة 30% عندما يكون عدد المقاعد يساوي 35، 39، 43 و 47 مقعدا.
  • نسبة 35% عندما يكون عدد المقاعد يساوي 51 و 55 مقعدا.

 

 بالنسبة لانتخابات المجالس الشعبية البلدية:

 

  • نسبة 30% بالنسبة للمجالس الشعبية البلدية الموجودة بمقرات الدوائر وبالبلديات التي يزيد عدد سكانها عن عشرين ألف (20000) نسمة.

وتم ضبط عدد المترشحات ( النساء) في كل مجلس ( مجلس شعبي بلدي أو مجلس شعبي ولائي) وفي كل دائرة انتخابية بحسب عدد المقاعد المطلوب شغلها والنسب المحددة في القانون العضوي رقم 12-03 المؤرخ في 12 يناير سنة 2012 المذكور أعلاه كما هو موضح في الجداول أدناه، ويتم تحديد العدد بتطبيق قاعدة الكامل الأعلى كلما فاقت النسبة النصف. مع العلم أنه يجب أن تدرج عدد النساء المترشحات باحترام النسبة المطلوبة ضمن قائمة المترشحين الأساسيين.

 

          بالنسبة للمجالس الشعبية الولائية:

عدد المقاعد المطلوب شغلها النسبة المئوية نتيجة النسبة المئوية عدد النساء
35 مقعد 30% 10.5 10
39مقعد 30% 11.7 12
43 مقعد 30% 12.9 13
47 مقعد 30% 14.1 14
55 مقعد 35% 19.2 19

 

          بالنسبة للمجالس الشعبية البلدية:

عدد المقاعد المطلوب شغلها النسبة المئوية نتيجة النسبة المئوية عدد النساء
13 مقعد 30% 3.9 04
15مقعد 30% 4.5 04
19 مقعد 30% 5.7 06
23 مقعد 30% 6.9 07
33 مقعد 30% 9.9 10
43 مقعد 30% 12.9 13

 

وعلى هذا الأساس، ترفض كل قائمة ترشيحات مخالفة لأحكام المادة 2 من القانون العضوي رقم 12-03 المؤرخ في 12 يناير 2012 والذي يحدد كيفيات توسيع حظوظ المرأة في المجالس المنتخبة.

غير أنه، يمنح أجل لتطابق قوائم الترشيحات مع أحكام المادة 2، على ألا يتجاوز هذا الأجل الشهر الذي يسبق تاريخ الاقتراع.

تشكيل قوائم المترشحين

عملا بأحكام المادة 71 من القانون العضوي رقم 16-10 المؤرخ في 25 أوت 2016 و المتعلق بنظام الانتخابات التي تنص أنه يجب أن تتضمن قائمة المترشحين للمجالس الشعبية البلدية والولائية عددا من المترشحين يساوي عدد المقاعد المطلوب شغلها وعدد من المستخلفين لا يقل عن ثلاثين في المائة (%30+ ( من عدد المقاعد المطلوب شغلها.

مع مراعاة الأحكام المنصوص عليها في القانون العضوي رقم 12-03 المؤرخ في 12 يناير 2012 المحدد لكيفيات توسيع حظوظ المرأة في المجالس المنتخبة.

 

يبين الجدوليين الآتيين عدد المترشحين الأساسيين والمستخلفين حسب عدد المقاعد المطلوب شغلها:

 

          بالنسبة للمجالس الشعبية الولائية:

 

عدد المقاعد عدد المترشحين الأساسيين عدد المترشحين المستخلفين العدد الاجمالي للمترشحين
35 مقعد 35 10 45
39 مقعد 39 12 51
43 مقعد 43 13 56
47 مقعد 47 14 61
55 مقعد 55 16 71

 

بالنسبة للمجالس الشعبية البلدية:

 

عدد المقاعد عدد المترشحين الأساسيين عدد المترشحين المستخلفين العدد الاجمالي للمترشحين
13 مقعد 13 04 17
15 مقعد 15 04 19
19 مقعد 19 06 25
23 مقعد 23 07 30
33 مقعد 33 10 43
43 مقعد 43 13 56

كيفيات و آجال إيداع الترشيحات

  • كيفيات إيداع الترشيحات:

يسبق التصريح بالترشح سحب استمارة التصريح بالترشح لدى المصالح المعنية للولاية.

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

تسلم استمارة التصريح بالترشح في شكل حافظة ملف تحتوي على الوثائق التالية:

  • استمارة ايداع قائمة المترشحين،
  • استمارة المعلومات الخاصة والمتعلقة بكل مترشح مذكور في القائمة،
  • استمارة تحتوي على ترتيب المترشحين،
  • استمارات التوقيعات الفردية لقوائم المترشحين:

* المنتمين لأحزاب سياسية لايتوفر فيها أحد الشرطين المذكورين في المادة 73 (المطتين الأولى والثانية من الفقرة الأولى) من القانون العضوي رقم 16-10 المؤرخ في 25 أوت 2016 والمتعلق بنظام الانتخابات.

* قوائم المترشحين الأحرار.

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

  • آجال إيداع الترشيحات:

تنص المادة 74 من القانون العضوي رقم 16-10 المؤرخ في 25 أوت 2016 و المتعلق بنظام الانتخابات على ما يلي: ” يجب تقديم التصريحات بالترشح قبل ستين يوما (60) يوما كاملة من تاريخ الاقتراع”.

  • بداية سحب وثائق تكوين ملفات الترشيحات : السبت 26 أوت 2017.
  • بداية ايداع ملفات الترشيحات: السبت 26 أوت 2017.
  • الأجل المحدد لإنتهاء إيداع ملفات الترشيحات : الأحد 24 سبتمبر 2017 على الساعة منتصف الليل (00:00 سا).

 

وبناء على أحكام المادة 75 من القانون العضوي المتعلق بنظام الانتخابات، لا يجوز القيام بآي إضافة آو إلغاء أو تغير للترتيب بعد إيداع قوائم المترشحين ما عدا في حالة الوفاة أو حصول مانع شرعي.

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

 

  • قبل انقضاء أجل الأربعين (40) يوما قبل يوم الاقتراع:

إذا توفي أو حصل مانع شرعي لمترشح، يستخلف حسب الحالات الآتية:

  • بالنسبة للقوائم المودعة تحت رعاية حزب سياسي، يتم استخلافه بمبادرة من الحزب
  • الذي ينتمي إليه.
  • و بالنسبة لقوائم المترشحين الأحرار يستخلف المترشح بإعادة ترتيب المترشحين في القائمة دون إضافة مترشح جديد.

 

  • بعد انقضاء أجل الأربعين (40) يوما قبل يوم الاقتراع:

 

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

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

دراسة ملفات الترشيحات

  • كيفيات إيداع الترشيحات:

يسبق التصريح بالترشح سحب استمارة التصريح بالترشح لدى المصالح المعنية للولاية.

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

تسلم استمارة التصريح بالترشح في شكل حافظة ملف تحتوي على الوثائق التالية:

  • استمارة ايداع قائمة المترشحين،
  • استمارة المعلومات الخاصة والمتعلقة بكل مترشح مذكور في القائمة،
  • استمارة تحتوي على ترتيب المترشحين،
  • استمارات التوقيعات الفردية لقوائم المترشحين:

* المنتمين لأحزاب سياسية لايتوفر فيها أحد الشرطين المذكورين في المادة 73 (المطتين الأولى والثانية من الفقرة الأولى) من القانون العضوي رقم 16-10 المؤرخ في 25 أوت 2016 والمتعلق بنظام الانتخابات.

* قوائم المترشحين الأحرار.

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

 

  • آجال إيداع الترشيحات:

تنص المادة 74 من القانون العضوي رقم 16-10 المؤرخ في 25 أوت 2016 و المتعلق بنظام الانتخابات على ما يلي: ” يجب تقديم التصريحات بالترشح قبل ستين يوما (60) يوما كاملة من تاريخ الاقتراع”.

  • بداية سحب وثائق تكوين ملفات الترشيحات : السبت 26 أوت 2017.
  • بداية ايداع ملفات الترشيحات: السبت 26 أوت 2017.
  • الأجل المحدد لإنتهاء إيداع ملفات الترشيحات : الأحد 24 سبتمبر 2017 على الساعة منتصف الليل (00:00 سا).

 

وبناء على أحكام المادة 75 من القانون العضوي المتعلق بنظام الانتخابات، لا يجوز القيام بآي إضافة آو إلغاء أو تغير للترتيب بعد إيداع قوائم المترشحين ما عدا في حالة الوفاة أو حصول مانع شرعي.

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

 

  • قبل انقضاء أجل الأربعين (40) يوما قبل يوم الاقتراع:

إذا توفي أو حصل مانع شرعي لمترشح، يستخلف حسب الحالات الآتية:

  • بالنسبة للقوائم المودعة تحت رعاية حزب سياسي، يتم استخلافه بمبادرة من الحزب
  • الذي ينتمي إليه.
  • و بالنسبة لقوائم المترشحين الأحرار يستخلف المترشح بإعادة ترتيب المترشحين في القائمة دون إضافة مترشح جديد.

 

  • بعد انقضاء أجل الأربعين (40) يوما قبل يوم الاقتراع:

 

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

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

دراسة ملفات الترشيحات

  • حالات عدم القابلية لانتخاب أعضاء المجالس الشعبية البلدية :

تنص المادة 81 من القانون العضوي رقم 16-10 المؤرخ في 25 أوت 2016 والمتعلق بنظام الانتخابات على ما يلي: ” يعتبر غير قابلين للانتخاب، خلال ممارسة وظائفهم و لمدة سنة بعد التوقف عن العمل في دائرة الاختصاص حيث يمارسون أو سبق لهم أن مارسوا فيها وظائفهم:

  • الوالي،
  • الوالي المنتدب،
  • رئيس الدائرة،
  • الأمين العام للولاية،
  • المفتش العام للولاية،
  • عضو المجلس التنفيذي للولاية،
  • القاضي،
  • أفراد الجيش الوطني الشعبي،
  • موظف أسلاك الأمن،
  • أمين خزينة البلدية،
  • المراقب المالي للبلدية،
  • الأمين العام للبلدية،
  • مستخدمو البلدية.
  • حالات عدم القابلية لانتخاب أعضاء المجلس الشعبي الولائي:

تنص المادة 83 من القانون العضوي رقم 16-10 المؤرخ في 25 أوت 2016 و المتعلق بنظام الانتخابات على ما يلي: ” يعتبر غير قابلين للانتخاب، خلال ممارسة وظائفهم و لمدة سنة بعد التوقف عن العمل في دائرة الاختصاص حيث يمارسون أو سبق لهم أن مارسوا فيها وظائفهم:

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

 

– رفض ترشيح أو قائمة المترشحين:

تكلف مصالح الولاية بدراسة ملفات الترشح المبدأ العام: تنص المادة 78 من القانون العضوي رقم 16-10 المؤرخ في 25 أوت 2016 و المتعلق بنظام الانتخابات ” يجب أن يكون رفض أي ترشيح آو قائمة مترشحين بقرار من الوالي معلل تعليل قانونيا و صراحة”.

 

أجل تبليغ الرفض:  

تطبيقا لأحكام المادة 78 المذكورة أعلاه، حدد أجل تبليغ الرفض المحتمل من طرف مصالح الولاية بعشرة (10) أيام كاملة ابتداء من تاريخ إيداع التصريح بالترشح ويجب أن يبلغ قرار الرفض تحت طائلة البطلان خلال هذا الأجل.

و يكون قرار الرفض الصادر عن الوالي قابلا للطعن أمام المحكمة الإدارية المختصة إقليميا خلال ثلاثة (3) أيام كاملة ابتداء من تاريخ تبليغ القرار.

 

 الفصل في الطعون:

تفصل المحكمة الإدارية في الطعن في أجل خمسة (5) أيام كاملة من تاريخ رفع الطعن.

يبلغ الحكم تلقائيا وفور صدوره إلى الأطراف المعنية وإلى الوالي قصد تنفيذه.

يكون حكم المحكمة الإدارية غير قابل لأي شكل من أشكال الطعن.

 

المرجع القانوني:

المادة 78 (الفقرات 3،4،5 و6) من القانون العضوي رقم 16-10 المؤرخ في 22 ذو القعدة عام 1437 الموافق 25 أوت سنة 2016 والمتعلق بنظام الانتخابات.

وفي حالة ما تعلق الاستخلاف بمترشحة، يتم هذا الاستخلاف في ظل احترام أحكام القانون العضوي رقم 12-03 المؤرخ في 12 يناير 2012 والذي يحدد كيفيات توسيع حظوظ المرأة في المجالس المنتخبة.

 

تنظيم عملية استلام ملفات الترشح:

يكون استلام ملفات الترشح كل أيام الأسبوع، ما عدا يوم الجمعة، من الساعة التاسعة (9) صباحا إلى غاية الساعة الرابعة ونصف ( 16سا و 30د) مساء.

 

تاريخ اختتام عملية إيداع الترشيحات:

ينتهي اجل استلام ملفات الترشح يوم 24 سبتمبر 2017 على الساعة منتصف الليل

(الساعة 00سا00).

الدليل

 

المصدر: التحضير الانتخابات المحلية 2017

انضمام الجزائر إلى المنظمة العالمية للتجارة| وزارة التجـارة الجزائرية

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

المهام الموكلة لفوج العمل هي تقديم تقرير بخصوص أعماله، بروتوكول الانضمام وكذا مشروع قرار الانضمام إلى هيئة  اتخاذ القرار و التي هي المؤتمرالوزاري

تولى رئاسة فوج العمل خلال الفترة 1994 – 1998  السيد Sanchez ARNAU ، سفير الأرجنتين، بعدها سفيري الأروغواي، السيد Carlos Perez DEL CASTILLO خلال الفترة 1998 – 2004 و السيد Guillermo VALLES خلال الفترة 2004 – 2010. و منذ نوفمبر 2011 أسندت إلى السيد  François ROUX سفير مملكة بلجيكا،  و يرأسه حالياً سفير الأرجنتين السيد Alberto D’ALOTTO. حيث يشارك في أعمال هذا الفوج أزيد من 40 عضوا
منذ تأسيسه سنة 1995، عقد فوج عمل المنظمة العالمية للتجارة المكلف بانضمام الجزائر عشرة (10) اجتماعات رسمية و اجتماعين (02) غير رسميين أخرها كان في 30 مارس 2012. ويصبو إلى عقد الاجتماع الحادي عشر مطلع  أفريل 2013
أثناء هذه الفترات، قام بدراسة  النظام التجاري الجزائري. وقد تم إعداد أول مشروع تقرير سنة 2006 وتمت مراجعته في 2008. و اخر مراجعة لمشروع التقرير سيتم توزيعها بمناسبة الاجتماع الحادي عشر من جهة أخرى، تم إمضاء ستة (06) اتفاقيات ثنائية مع كل من كوبا، فنزويلا، البرازيل، كما تتواصل دراسة نظام التجارة الجزائري بخصوص نظام رخص الاستيراد، العوائق التقنية للتجارة، وضع حيز التنفيذ إجراءات الصحة و الصحة النباتية، تطبيق الرسوم الداخلية، المؤسسات العمومية و الخصخصة، الإعانات و بعض من جوانب حقوق الملكية الفكرية المتصلة بالتجارة. كما أن حوالي عشرون مشاريع فقرات التزامات خاصة بالمسائل المنهجية هي بصدد المحادثات.

أما بخصوص المفاوضات الثنائية فهي متواصلة مع ثلاثة عشر (13) دولة. سجلنا تقدما معتبرا مع أكثر من نصف هذه الدول. لأروغواي، سويسرا و الأرجنتين.

 

المصدر: انضمام الجزائر إلى المنظمة العالمية للتجارة| وزارة التجـارة الجزائرية

إنشاء مؤسستك| وزارة التجـارة الجزائرية

إنشاء مؤسستك
 
أنت متعامل اقتصادي أو ممثل شركة تريد إنشاء مؤسستك الخاصة بمفردك أو في إطار شراكة أو حتى توسيع نشاطك ، ستجد على مستوى مصالحنا إطارات تصغي  باهتمام لانشغالاتك في مجال التسجيل في السجل التجاري وإنشاء المؤسسات ، وذلك انطلاقا من فكرتك الخاصة.
سنقدم لك فضلا عن ذلك المساعدة والتوجيهات اللازمة والإسثتمارات ذات الطابع القانوني ، الاقتصادي والتجاري المتعلقة بإنشاء المؤسسة كما نساعدك على إتمام الإجراءات الخاصة بالتسجيل في السجل التجاري ونعلمك بالالتزامات المترتبة عن ذلك (جمعية عامة عادية ، جمعية عامة غير عادية ، إجراءات متعلقة بالمحل التجاري ، الحجز التحفظي، الرهن الحيازي ، الاعتماد ألإيجاري، الإيداع القانوني للحسابات الاجتماعية…..)كما هو محدد أدناه:
I  -المعايير الخاصة بك:
 
أنت متعامل اقتصادي حامل للجنسية الجزائرية، يستوجب عليك التمتع بالأهلية القانونية وحقوقك المدنية، وعلى هذا:
  –  أن تكون راشدا أو قاصرا مرشدا،
          – أن لا تكون تحت أي مانع قانوني يحول دون ممارستك للنشاط تجاري كما هو منصوص عليه في أحكام المادة 08 من القانون رقم 04-08 المتعلق بشروط ممارسة الأنشطة التجارية، “لا يمكن أن يسجل في السجل التجاري أو يمارس نشاطا تجاريا، الأشخاص المحكوم عليهم الذين لم يرد لهم الاعتبار لارتكابهم الجنايات و الجنح الآتية:
–         اختلاس الأموال
–         الغدر,
–         الرشوة
–         السرقة و الاحتيال
–         إخفاء الأشياء
–         خيانة الأمانة
–         الإفلاس
–         إصدار شيك بدون رصيد
–         التزوير و استعمال المزور
–         الإدلاء بتصريح كاذب من اجل التسجيل في السجل التجاري
–         تبييض الأموال
–         الغش الضريبي
–         الاتجار بالمخدرات
–         المتاجرة بمواد و سلع تلحق أضرار جسيمة بصحة المستهلك.

المصدر: إنشاء مؤسستك| وزارة التجـارة الجزائرية

طلب الأذونات من المستخدم واستخدام موارد الهاتف في تطبيقات أندرويد – برمجة أندرويد – أكاديمية حسوب

الأساسيات الخاصة بالحصول على الأذونات من المستخدم واستغلال كافة موارد النظام والهاتف

 طلب الأذونات من المستخدم واستخدام موارد الهاتف في تطبيقات أندرويد


أحمد النوبي

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

android-11.png

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

تطبيق 1

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

001.png

كما نفعل دومًا نبدأ بصنع واجهة المستخدم الخاصة بالتطبيق، وتتكون من زر من النوعImageButton -وهو زر يستطيع أن يحتوي على صورة -لتصبح الشيفرة الخاصة بملف activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
>

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/power_on"
        android:id="@+id/btn"
        android:background="@null"/>
</LinearLayout>

بعد ذلك نقوم بالتعديل في ملف AndroidManifest.xml وإضافة الأذونات المطلوبة لكي نستطيع التحكم في ضوء الكاميرا.

<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.Camera"/>

باستخدام الوسم الخاص بالأذونات <uses-permissions> وتحديد الاسم الخاص به في الخاصية android:name، وأيضًا إضافة الوسم <uses-feature> لإعلام الهاتف أن التطبيق يحتاج إلى وجود كاميرا كي يعمل.
ويوجد العديد من الأذونات التي تمكنك من القيام بالعديد من المهام من داخل التطبيق كالاتصال بالإنترنت أو القراءة والكتابة في الذاكرة ويمكنك التعرف عليها من هنا ويتم تعريفها داخل الملف AndroidManifest.xml كما سبق.
إذا لم يتم تعريف الأذونات المستخدمة في التطبيق داخل ملف AndroidManifest.xml فإن التطبيق لن يعمل.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="apps.noby.flashlight">

    <uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.Camera"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

ننتقل الآن إلى كتابة شيفرة التحكم الخاصة بالتطبيق في ملف MainActivity.java وتنقسم إلى
1-التأكد من توفر ضوء للكاميرا في الهاتف أولًا.

if(!getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH))
    finish();

وإذا لم يتواجد ضوء الكاميرا في الهاتف فسيتم غلق التطبيق في الحال.
2-الحصول على كائن يُمكننا من التحكم في ضوء الكاميرا وذلك عن طريق فتح الكاميرا ثم الحصول على الخصائص والمعاملات الخاصة بها وتغيير المتغير الخاص بضوء الكاميرا.

camera = Camera.open();
param = camera.getParameters();

3-برمجة الزر المتواجد في الواجهة الرئيسية لكي يُضيء ضوء الكاميرا عند الضغط عليه ويغلقه عن الضغط مرة أخرى.

 btn = (ImageButton) findViewById(R.id.btn);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(!isTorchON){
                    turnONTorch();
                }else
                    turnOFFTorch();
            }
        });

لتُصبح شيفرة التحكم الرئيسية هي

package apps.noby.flashlight;

import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;

public class MainActivity extends Activity {


    ImageButton btn;
    boolean isTorchON;
    Camera camera;
    private Parameters param;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        btn = (ImageButton) findViewById(R.id.btn);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(!isTorchON){
                    turnONTorch();
                }else
                    turnOFFTorch();
            }
        });
    }


    @Override
protected void onStart() {
    super. onStart();

    if(!getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH))
        finish();

    if (camera == null) {
        isTorchON = false;
        camera = Camera.open();
        param = camera.getParameters();
    }
}


    @Override
    protected void onPause() {
        super.onPause();
        if (camera != null) {
            camera.release();
            camera = null;
        }
    }
}

يتبقى تعريف ما هي الوظيفة الخاصة بالدالة turnONTorch()وTurnOFFTorch().
تقوم الدالة turnONTorch() بتشغيل الضوء وذلك عن طريق تمرير المعاملFLASH_MODE_TORCH كإحدى معاملات الكاميرا ثم تفعيل الكاميرا بالمعاملات الجديدة عند استدعاء startPreview().

    private void turnONTorch() {

        param.setFlashMode(Parameters.FLASH_MODE_TORCH);
        camera.setParameters(param);
        camera.startPreview();
        isTorchON = true;
        btn.setImageResource(R.drawable.power_off);

    }

وبالمثل نبني turnOFFTorch() كي يتم إطفاء الضوء.

    private void turnOFFTorch() {

        param.setFlashMode(Parameters.FLASH_MODE_OFF);
        camera.setParameters(param);
        camera.stopPreview();
        isTorchON = false;
        btn.setImageResource(R.drawable.power_on);

    }

لتُصبح الشيفرة النهائية لملف MainActivity.java

package apps.noby.flashlight;

import android.content.pm.PackageManager;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;

public class MainActivity extends Activity {
ImageButton btn;
boolean isTorchON;
Camera camera;
private Parameters param;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    btn = (ImageButton) findViewById(R.id.btn);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(!isTorchON){
                turnONTorch();
            }else
                turnOFFTorch();
        }
    });
}

private void turnONTorch() {

    param.setFlashMode(Parameters.FLASH_MODE_TORCH);
    camera.setParameters(param);
    camera.startPreview();
    isTorchON = true;
    btn.setImageResource(R.drawable.power_off);

}

private void turnOFFTorch() {

    param.setFlashMode(Parameters.FLASH_MODE_OFF);
    camera.setParameters(param);
    camera.stopPreview();
    isTorchON = false;
    btn.setImageResource(R.drawable.power_on);

}

@Override
protected void onStart() {
    super. onStart();

    if(! getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH))
        finish();

    if (camera == null) {
        isTorchON = false;
        camera = Camera.open();
        param = camera.getParameters();
    }
}

@Override
protected void onPause() {
    super.onPause();
    if (camera != null) {
        camera.release();
        camera = null;


    }
    }
}

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

تطبيق 2

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

002.png

وتنقسم الأذونات إلى قسمين:

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

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:layout_margin="16dp">

    <EditText
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:hint="Enter Phone Number"
        android:id="@+id/ph_num"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Call"
        android:id="@+id/call_btn"/>
</LinearLayout>

بعد ذلك نحدد الأذونات الخاصة بالتطبيق في AndroidManifest.xml وهنا هو

<uses-permission android:name="android.permission.CALL_PHONE"/>

ويتم تضمينه داخل الملف كما سبق.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="apps.noby.dailer">

    <uses-permission android:name="android.permission.CALL_PHONE"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

الآن يتبقى برمجة الزر كي يقوم بالاتصال ويتم التحكم في ذلك عن طريق استخدامIntent وتمرير له ACTION_CALL لتحديد وظيفته وهي الاتصال، ثم تحديد البيانات التي نرغب في إرسالها بداخل هذا الـ Intent وهي رقم الهاتف الذي تم إدخاله من قبل المستخدم داخل EditText وتسبقه “tel:” لإعلام نظام التشغيل بأنه رقم هاتف.

     String num = et.getText().toString();
     Intent intent =new Intent(Intent.ACTION_CALL);
     intent.setData(Uri.parse("tel:" + num)) ;

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

call_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String num = et.getText().toString();
                Intent intent =new Intent(Intent.ACTION_CALL);
                intent.setData(Uri.parse("tel:" + num)) ;

                    if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {

                        ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.CALL_PHONE},CALL_PHONE_PERMISSIONS_REQUEST);
                    }
                    else
                        startActivity(intent);
            }
        });

للتحقق من الأذونات نستخدم التابع checkSelfPermission() فإذا كان لم يتم الحصول عليه نطلب من المستخدم الموافقة عليه باستخدام التابع requestPermissions() غير ذلك نقوم بالاتصال.
عند طلب الحصول على إذن محدد من المستخدم يظهر أمام المستخدم مربع يطلب منه الموافقة أو الرفض ويقوم بتسجيل اختيار المستخدم لذلك ثم يستدعي التابعonRequestPermissionsResult() بشكل تلقائي ونقوم بداخله من التأكد من موافقة المستخدم على الأذن وإظهار رسالة بذلك.
003.png

    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {

        if (requestCode == CALL_PHONE_PERMISSIONS_REQUEST) {
            if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(this, "Call Phones permission granted", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(this, "Call Phones permission denied", Toast.LENGTH_SHORT).show();
            }
        } else {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }
}

لتُصبح الشيفرة الكاملة لهذا التطبيق في ملف MainActivity.java هي

package apps.noby.dailer;

import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

    private static final int CALL_PHONE_PERMISSIONS_REQUEST = 3;
    private EditText et;
    private Button call_btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        et = (EditText) findViewById(R.id.ph_num);
        call_btn = (Button) findViewById(R.id.call_btn);

        call_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String num = et.getText().toString();
                Intent intent =new Intent(Intent.ACTION_CALL);
                intent.setData(Uri.parse("tel:" + num)) ;

                    if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {

                        ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.CALL_PHONE},CALL_PHONE_PERMISSIONS_REQUEST);
                    }
                    else
                        startActivity(intent);
            }
        });

    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {

        if (requestCode == CALL_PHONE_PERMISSIONS_REQUEST) {
            if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(this, "Call Phones permission granted", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(this, "Call Phones permission denied", Toast.LENGTH_SHORT).show();
            }
        } else {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }
}

لاحظ أنه إذا كان الهاتف يعمل بإصدار سابق لـ Android Marshmallow فسيتم الحصول على الموافقة على كافة الأذونات عند التحميل من المتجر كما كان يحدث سابقًا.
يمكننا الآن تجربة التطبيق على المحاكي أو على هاتف حقيقي.

004.png

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

package apps.noby.dailer;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {

    private EditText et;
    private Button call_btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        et = (EditText) findViewById(R.id.ph_num);
        call_btn = (Button) findViewById(R.id.call_btn);

        call_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String num = et.getText().toString();
                Intent intent =new Intent(Intent.ACTION_DIAL);
                intent.setData(Uri.parse("tel:" + num)) ;
                startActivity(intent);
            }
        });

    }

}

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

005.png

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

بهذا نكون قد وصلنا إلى نهاية هذا الدرس، في انتظار تجربتكم وآرائكم.

المصدر: طلب الأذونات من المستخدم واستخدام موارد الهاتف في تطبيقات أندرويد – برمجة أندرويد – أكاديمية حسوب

هل أنت مبرمج مخترق Hacker أم مصمّم Designer ؟ – مقالات عامّة – أكاديمية حسوب

أي صنف من المبرمجين أنت؟ تقليدي أم معاصر؟ مخترق أم مصمّم؟

هل أنت مبرمج مخترق Hacker أم مصمّم Designer ؟


محمد طاهر الموسوي

  • 24 أغسطس
قبل عشرين عامًا، كان المبرمج الجيّد هو ذلك الذي يكون قادرًا على أن يحشر تطبيقًا كاملًا في ملف بامتداد .COM وبحجم 64 كيلوبايت، أما من كان قادرًا على الإتيان بأفضل أداء مع معالج Intel 80386 الضعيف فكان يعدّ واحدًا من أساطين عالم البرمجة.

سبب ذلك أنّ الحواسيب كانت في تلك الفترة غالية ومكلفة في حين أن أجور المبرمجين كانت زهيدة، وكانت تلك فترة “عقلية المخترق Hacker mentality”، وقد ولّى ذلك الزمن من غير رجعة، ولم تعد هذه العقلية تلقى أي قبول أو احترام في وقتنا الحاضر، ذلك لأنّ حالة السوق اليوم على النقيض تمامًا.

فاليوم أصبحت الحواسيب رخيصة الثمن وأجور المبرمجين مرتفعة، ودخلنا في عصر جديد تسود فيه “عقلية المصمم Designer Mentality” حيث تكون مقروئية الشفرة البرمجية أهمّ بكثير من أدائها.

الأسعار مقابل المرتّبات

انظر إلى هذا الرسم البياني.

pic-001.png
يمثّل هذا الرسم البياني مقارنة بين نوعين من التوجهات خلال العقدين الماضيين (1994-2014). ويمكنك أن تلاحظ أن التوجّه الأوّل في تضاؤل تدريجي حيث تصبح ذواكر الحواسيب وأقراص التخزين الصلبة أرخص ثمنًا مع تقدم الزمن.

أما التوجّه الثاني فيبين كيف أنّ مرتّبات مطوري البرمجيات في تصاعد مستمر خلال الفترة ذاتها – تضاعفت ثلاث مرّات إن توخّينا الدقة -. ومع أنّي لم أعثر على تقرير رسمي حول هذا الموضوع، إلا أنّي متأكّد بأنّه ليس خافيًا على أحد أنّ مرتّبات المبرمجين في تصاعد مستمر، إذ لم تعد وظيفة مطوّر رئيسي براتب 200,000 دولار في السنة وظيفة الأحلام، في حين أنّ أفضل العروض كانت تصل إلى 60,000 دولار قبل عشرين عامًا.

هذا يعني أنّ نفقات إنشاء موقع إلكتروني بلغة PHP سنة 1994 أكثر بـ 1000 مرة من نفقات شراء الأجهزة سنة 2014، وأقلّ بثلاث مرات من نفقات المبرمجين، مع الأخذ بالاعتبار أنّنا نستخدم التكنولوجيا ذاتها، إذ لا نزال نستخدم نظام Linux مع خادومApache.

الفرق هنا أنّه في سنة 1994 إن كان تطبيقك يواجه مشاكل في الأداء بسبب محدودية الأجهزة، فإنّك ستدفع 35,000 دولار مقابل كل غيغابايت من الذاكرة العشوائية، أما في 2014 فستدفع 10$ فقط.

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

في سنة 1994 كان أفضل المبرمجين والمهندسين هم أولئك الذين يمتلكون “عقلية المخترق” أما في 2014 فالتقدير أصبح من نصيب كل من يملك “عقلية المصمم”.

عقلية المخترق

لو سألت صاحب عقلية المخترق عن رأيه في دالة توليد متسلسلة فابيوناتشي هذه والمكتوبة بلغة Java لأجابك بأنّها “شفرة أنيقة” (هل تظنّ ذلك؟):

public int f(int n) { return n>2?f(n-1)+f(n-2):n; }

عادة ما يتّصف المخترق الجيّد بالصفات التالية:

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

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

وعندما أتوجه بالسؤال التالي إلى أحد أصدقائي المخترقين: “من سيفهم العمل الذي ستؤدّيه هذه الشفرة؟” يكون الجواب الذي أسمعه بصورة شبه دائمة: “سيسألونني!” – عادة ما ترافق الإجابة نبرة استعلاء مصحوبة بابتسامة صادقة.

عقلية المصمّم

أما صاحب عقلية المصمّم فسيعيد ترتيب الشفرة السابقة لجعلها سهلة القراءة، وستكون “الشفرة الأنيقة” في نظره بالصورة التالية (ما رأيك أنت؟):

public int fibo(final int pos) {
  final int num;
  if (pos > 2) {
    num = fibo(pos - 1) + fibo(pos - 2);
  } else {
    num = pos;
  }
  return num;
}

أعتقد أن المصمّم الجيّد يمتاز بالصفات التالية:

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

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

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

المستقبل

إن كنت تعتبر نفسك مخترقًا، فأعتقد أنّه قد حان وقت التغيير، فعصر المخترقين في أفول.

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

وفي الوقت نفسه، سيتطلّب التعامل مع مهندس للبرمجيات أموالًا أكثر، وقد يطلب 500$ أو أكثر للساعة الواحدة مقابل تفحّص البرنامج وتشخيص المشكلة، كما هو الحال مع المحامين وأطباء الأسنان.

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

المصدر: هل أنت مبرمج مخترق Hacker أم مصمّم Designer ؟ – مقالات عامّة – أكاديمية حسوب

كيفية ضبط تشفير SSL/TLS للاتصالات إلى قواعد بيانات MySQL على خادوم أوبنتو 16.04 – MySQL – أكاديمية حسوب

يشرح هذا الدرس كيفية ضبط اتصال العملاء البعيدين اتصالًا آمنًا إلى خادوم MySQL، إضافةً إلى التحقق من الشهادات من سلطة الشهادات

تمهيد

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

تُضبَط MySQL مبدئيا لقبول الاتصالات المحلية فقط، فلو أردتَ السماح بالاتصالات «البعيدة» فمن المهم أن تكون تلك الاتصالات آمنة؛ وسنشرح في هذا الدرس كيفية السماح بالاتصالات البعيدة إلى خادوم MySQL على أوبنتو 16.04 مع تشفيرSSL/TLS.

المتطلبات المسبقة

إذا أردتَ المتابعة مع هذا الدرس، فستحتاج إلى خادومَي أوبونتو 16.04، إذ سنستخدم أحدها لاستضافة خادوم MySQL وسيلعب الآخر دور العميل. عليك أيضًا إنشاء مستخدم ليس جذرًا لكنه يمتلك امتيازات الجذر عبر الأمر sudo، راجع درس الإعداد الابتدائي لخادوم أوبنتو 14.04 للمزيد من المعلومات حول الضبط المبدئي لخادومك.

يجب أن تثبّت على الجهاز الأول خادوم MySQL وتضبطه؛ يمكنك العودة إلى درستثبيت وإعداد نظامي إدارة قواعد البياناتMySQL وPostgreSQL على أوبنتولمزيدٍ من المعلومات حول تثبيت وضبط هذه البرمجية.
أما على الجهاز الثاني، فعليك تثبيت حزمة عميل MySQL، إذ تستطيع استخدام الأمرapt لتحديث فهرس الحزم ثم تثبيت البرمجيات الضرورية وذلك بتنفيذ الأمرين الآتيين:

sudo apt-get update
sudo apt-get install mysql-client

يُفتَرَض أن يعمل خادومك وعمليك عملًا سليمًا.

التحقق من حالة تشفير SSL/TLS الراهنة على خادوم MySQL

علينا قبل البدء أن نتحقق من الحالة الراهنة لتشفير SSL/TLS على خادومنا.
سجِّل دخولك إلى خادومك MySQL عبر المستخدم root التابع لقواعد MySQL. سنستخدم في الأمر الآتي الخيار ‎-h لتحديد عنوان IP للجهاز المحلي لكي يتصل العميل باستخدام بروتوكول TCP بدلًا من استخدام ملف socket محلي؛ وهذا سيُمكننا من التحقق من حالة تشفير SSL لاتصالات TCP:

mysql -u root -p -h 127.0.0.1

ستُسأل عن كلمة مرور مستخدم root التي اخترتها أثناء عملية تثبيت خادوم MySQL؛ وبعدئذٍ ستنتقل إلى جلسة MySQL تفاعلية.

يمكننا إظهار حالة متغيرات SSL/TLS عبر كتابة التعليمة الآتية:

SHOW VARIABLES LIKE '%ssl%';

الناتج:

+---------------+----------+
| Variable_name | Value    |
+---------------+----------+
| have_openssl  | DISABLED |
| have_ssl      | DISABLED |
| ssl_ca        |          |
| ssl_capath    |          |
| ssl_cert      |          |
| ssl_cipher    |          |
| ssl_crl       |          |
| ssl_crlpath   |          |
| ssl_key       |          |
+---------------+----------+
9 rows in set (0.01 sec)

لاحظ أنَّ قيمة المتغيرين have_openssl و have_ssl تساوي DISABLED، وهذا يعني أنَّ دعم تشفير SSL مبنيٌ داخل الخادوم لكنه ليس مفعلًا بعد.
لنتحقق من حالة الاتصال الحالي للتأكد من النتائج السابقة، وذلك بإدخال:

\s

الناتج:

--------------
mysql  Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using  EditLine wrapper

Connection id:      30
Current database:   
Current user:       root@localhost
SSL:         Not in use
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server version:     5.7.17-0ubuntu0.16.04.1 (Ubuntu)
Protocol version:   10
Connection:      127.0.0.1 via TCP/IP
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:       3306
Uptime:         3 hours 38 min 44 sec

Threads: 1  Questions: 70  Slow queries: 0  Opens: 121  Flush tables: 1  Open tables: 40  Queries per second avg: 0.005
--------------

يمكننا أن نلاحظ من الناتج السابق أنَّ الاتصال غير مشفر عبر SSL، حتى لو كنّا قد اتصلنا عبر بروتوكول TCP.

أغلق جلسة MySQL عندما تنتهي:

exit

يمكننا الآن البدء بضبط MySQL لتستعمل تشفير SSL للاتصالات القادمة إليها.

توليد شهادات ومفاتيح SSL/TLS

لتفعيل اتصالات مشفرة عبر SSL إلى MySQL، فعلينا أولًا توليد الشهادات والمفاتيح المناسبة.

هنالك أداةٌ باسم mysql_ssl_rsa_setup متوافرة مع MySQL 5.7 وما بعدها مهمتها تبسيط هذه العملية؛ وهنالك إصدار MySQL متوافق معها متوافر في أوبنتو 16.04، لذا سنستخدم هذا الأمر لتوليد الملفات اللازمة.

ستُنشَأ الملفات في مجلد ملفات MySQL الموجود في المسار ‎/var/lib/mysql؛ وعلينا السماح لعملية MySQL (أي MySQL process) بقراءة الملفات المولّدة، لذا سنُمرِّر القيمة mysql اسمًا للمستخدم الذي سيملك الملفات المولّدة:

sudo mysql_ssl_rsa_setup –uid=mysql

سيكون ناتج عملية التوليد مشابهًا لما يلي:

Generating a 2048 bit RSA private key
...................................+++
.....+++
writing new private key to 'ca-key.pem'
-----
Generating a 2048 bit RSA private key
......+++
.................................+++
writing new private key to 'server-key.pem'
-----
Generating a 2048 bit RSA private key
......................................................+++
.................................................................................+++
writing new private key to 'client-key.pem'
-----

تحقق من إنشاء الملفات الذي جرت عملية توليدها بالأمر find:

sudo find /var/lib/mysql -name '*.pem' -ls

الناتج:

   256740      4 -rw-r--r--   1 mysql    mysql        1078 Mar 17 17:24 /var/lib/mysql/server-cert.pem
   256735      4 -rw-------   1 mysql    mysql        1675 Mar 17 17:24 /var/lib/mysqlsql/ca-key.pem<^>
   256739      4 -rw-r--r--   1 mysql    mysql         451 Mar 17 17:24 /var/lib/mysqlsql/public_key.pem<^>
   256741      4 -rw-------   1 mysql    mysql        1679 Mar 17 17:24 /var/lib/mysqlsql/client-key.pem<^>
   256737      4 -rw-r--r--   1 mysql    mysql        1074 Mar 17 17:24 /var/lib/mysqlsql/ca.pem<^>
   256743      4 -rw-r--r--   1 mysql    mysql        1078 Mar 17 17:24 /var/lib/mysqlsql/client-cert.pem<^>
   256736      4 -rw-------   1 mysql    mysql        1675 Mar 17 17:24 /var/lib/mysqlsql/private_key.pem<^>
   256738      4 -rw-------   1 mysql    mysql        1675 Mar 17 17:24 /var/lib/mysqlsql/server-key.pem<^>

آخر عمود من الناتج السابق يُظهِر أسماء الملفات المولّدة، أما العمود الرابع والخامس فيؤكدان أنَّ المستخدم المالك والمجموعة المالكة هو mysql.

تُمثِّل هذه الملفات مفاتيح وشهادات لسلطة الشهادات Certificate authority (للملفات التي تبدأ بالسابقة «ca»)، ولعملية خادوم MySQL (للملفات التي تبدأ بالسابقة «server»)، ولعملاء MySQL (للملفات التي تبدأ بالسابقة «client»). إضافةً إلى ما سبق، هنالك الملفان private_key.pem و public_key.pem اللذان تستعملهما MySQL لنقل كلمة المرور بأمان دون استخدام SSL.

تفعيل اتصالات SSL الآمنة على خادوم MySQL

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

كل ما علينا فعله هو إعادة تشغيل خدمة MySQL:

sudo systemctl restart mysql

بعد إعادة التشغيل، افتح اتصالًا إلى خادوم MySQL بالأمر الذي ذكرناه في بداية هذا الدرس؛ وسيحاول عميل MySQL الاتصال عبر تشفير SSL إن كان مدعومًا من الخادوم:

mysql -u root -p -h 127.0.0.1

لننظر مرةً أخرى إلى المعلومات التي طلبناها أوّل مرة، ولنلاحظ القيم المرتبطة بالمتغيرات المتعلقة بتشفير SSL:

SHOW VARIABLES LIKE '%ssl%';

الناتج:

+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| have_openssl  | YES             |
| have_ssl      | YES             |
| ssl_ca        | ca.pem          |
| ssl_capath    |                 |
| ssl_cert      | server-cert.pem |
| ssl_cipher    |                 |
| ssl_crl       |                 |
| ssl_crlpath   |                 |
| ssl_key       | server-key.pem  |
+---------------+-----------------+
9 rows in set (0.00 sec)

نجد أنَّ قيم المتغيرات have_openssl و have_ssl أصبحت YES بدلًا منDISABLED؛ وسنلاحظ وجود قيم مرتبطة بالمتغيرات ssl_ca و ssl_cert وssl_key وهي أسماء ملفات الشهادات المولَّدة.
لنتحقق مجددًا من معلومات الاتصال بتنفيذ:

\s

الناتج:

--------------
. . .
SSL:            Cipher in use is DHE-RSA-AES256-SHA
. . .
Connection:      127.0.0.1 via TCP/IP
. . .
--------------

أصبح الناتج هذه المرة يشير إلى استخدام تشفير SSL لجعل اتصالنا مع الخادوم آمنًا.
لنعد إلى سطر الأوامر بالخروج من MySQL:

exit

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

ضبط الاتصالات الآمنة للاتصالات البعيدة

بعد أن أصبح تشفير SSL متاحًا على الخادوم، يمكننا البدء بضبط الوصول البعيد، وعلينا فعل ما يلي لتحقيق ذلك:

  • جعل استخدام SSL ضروريًا للاتصال.
  • ربط الخادوم ببطاقة شبكية عامة.
  • إنشاء مستخدم MySQL للاتصالات البعيدة.
  • تعديل قواعد الجدار الناري للسماح بالاتصالات الخارجية.

جعل استخدام SSL ضروريًا لإجراء الاتصال

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

عدِّل ملف ‎/etc/mysql/my.cnf باستعمال محررك النصي المفضل لتفعيل هذا الخيار:

sudo nano /etc/mysql/my.cnf

ستجد داخل الملف تعليمتَي ‎!includedir التي تستخدم لقراءة ملفات الضبط الإضافية، علينا وضع الضبط الخاص بنا تحت تلك الأسطر لتجاوز أيّة تعليمات ضبط موجودة داخل ملفات الضبط الإضافية.
ابدأ بإنشاء قسم [mysqld] لاستهداف عملية خادوم MySQL، واضبط تحت ترويسة هذا القسم الخيار require_secure_transport إلى ON:

. . .

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

[mysqld]
# Require clients to connect either using SSL
# or through a local socket file
require_secure_transport = ON

لن نحتاج إلى أكثر من هذا السطر لجعل استخدام الاتصالات المشفرة ضروريًا.
إنَّ خادوم MySQL مضبوطٌ مبدئيًّا للاستماع إلى الاتصالات الآتية من الحاسوب المحلي فقط، وللاستماع إلى الاتصالات البعيدة، فيمكننا ضبط قيمة التعليمة bind-address للإشارة إلى بطاقة شبكية مختلفة.

للسماح لخادوم MySQL بقبول الاتصالات من جميع البطاقات الشبكية، فيمكننا ضبط قيمة التعليمة bind-address إلى 0.0.0.0:

. . .

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

[mysqld]
# Require clients to connect either using SSL
# or through a local socket file
require_secure_transport = ON
bind-address = 0.0.0.0

احفظ الملف وأغلقه بعد أن تنتهي من تعديله.
أعد تشغيل خادوم MySQL لتطبيق الضبط الجديد:

sudo systemctl restart mysql

تأكد أنَّ خادوم MySQL يستمع على 0.0.0.0 بدلًا من 127.0.0.1 بكتابة:

sudo netstat -plunt

الناتج:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      4330/mysqld     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1874/sshd       
tcp6       0      0 :::22                   :::*                    LISTEN      1874/sshd

القيمة 0.0.0.0 في الناتج السابق تُشير إلى أنَّ خدمة MySQL تستمع إلى الاتصالات في جميع البطاقات الشبكية المتاحة.

علينا بعدئذٍ السماح لاتصالات MySQL عبر الجدار الناري، وذلك بإنشاء استثناء كما يلي:

sudo ufw allow mysql

الناتج:

Rule added
Rule added (v6)

يجب أن تتمكن الاتصالات البعيدة من الوصول إلى خادوم MySQL.

إنشاء مستخدم MySQL للاتصالات البعيدة

أصبح خادوم MySQL جاهزًا للاستماع إلى الاتصالات البعيدة، لكننا لا نملك حاليًا أيّ مستخدم مضبوط لكي يتصل من حاسوبٍ آخر.

سجِّل دخولك إلى خادوم MySQL عبر المستخدم root:

mysql -u root -p

يمكننا الآن إنشاء حساب للمستخدم البعيد عبر الأمر CREATE USER، وسنستخدم عنوان IP لجهاز العميل في قسم المضيف من تعليمة تعريف المستخدم الجديد لجعل الاتصال عبر هذا المستخدم محصورًا بذاك الجهاز.
ولضمان الاتصال عبر SSL حتى لو عُطِّلَ الخيارrequire_secure_transport مستقبلًا، فسنُحدِّد في تعليمة تعريف الحساب أنَّه يجب استعمال SSL عند الاتصال باستخدام هذا الحساب بتضمينREQUIRE SSL:

CREATE USER 'remote_user'@'mysql_client_IP' IDENTIFIED BY 'password' REQUIRE SSL;

علينا بعد ذلك أن نمنح المستخدم صلاحيات على قواعد البيانات أو الجداول التي ينبغي له الوصول إليها؛ وسنُنشِئ قاعدة بيانات لشرح هذه الفكرة باسم example وسنمنح مستخدمنا ملكيتها:

CREATE DATABASE example;
GRANT ALL ON example.* TO 'remote_user'@'mysql_client_IP';

علينا تحديث جداول الصلاحيات لتطبيق التعديلات مباشرةً:

FLUSH PRIVILEGES;

أغلِق جلسة MySQL بعد أن تنتهي من تنفيذ الأوامر السابقة:

exit

اختبار الاتصالات البعيدة

لاختبار إمكانية إجراء اتصال من جهاز العميل إلى الخادوم بنجاح، فاستخدم الخيار ‎-uلتحديد اسم المستخدم البعيد، والخيار ‎-h لتحديد عنوان IP لخادوم MySQL:

mysql -u remote_user -p -h mysql_server_IP

بعد كتابتك لكلمة المرور، فستسجل دخولك إلى الخادوم البعيد.
نفذ الأمر الآتي للتأكد من أنَّ اتصالك آمن:

\s

الناتج:

--------------
. . .
SSL:         Cipher in use is DHE-RSA-AES256-SHA
. . .
Connection:      mysql_server_IP via TCP/IP
. . .
--------------

اخرج من عميل MySQL وعد إلى سطر الأوامر:

exit

جرِّب الآن الاتصال بطريقة غير آمنة إلى الخادوم:

mysql -u remote_user -p -h mysql_server_IP ssl-mode=disabled

بعد أن يُطلَب منك إدخال كلمة المرور، فستجد أنَّ الاتصال قد رُفِض:

ERROR 1045 (28000): Access denied for user 'remote_user'@'mysql_server_IP' (using password: YES)

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

ضبط التحقق من الاتصالات الآتية إلى خادوم MySQL

إنَّ خادوم MySQL مضبوطٌ حاليًا مع شهادة SSL موقعة من سلطة شهادات محلية (Local certificate authority)؛ والشهادة والمفتاح الخاصَين بالخادوم كافيان لتشفير الاتصالات القادمة إلى الخادوم.

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

  • نقل ملفات SSL الملائمة إلى جهاز العميل
  • إنشاء ملف ضبط للعميل
  • تعديل حساب المستخدم البعيد لطلب وجود شهادة موثوقة

نقل شهادات العميل إلى جهازه

علينا بادئ الأمر الحصول على شهادة سلطة الشهادات التابعة لخادوم MySQL مع ملفات شهادات العميل ووضعها في جهاز العميل.
سنبدأ بفعل ذلك بإنشاء مجلد باسم client-ssl في جهاز العميل في مجلد المنزل للمستخدم الذي ستستعمله للاتصال:

mkdir ~/client-ssl

ولأنَّ مفتاح الشهادة هو ملفٌ حساس، فعلينا قفل الوصول إلى المجلد لكي لا يتمكن أي شخصٍ سوى المستخدم المالك له من الوصول إليه:

chmod 700 ~/client-ssl

يمكننا الآن نسخ معلومات الشهادة إلى مجلدٍ جديد.
اعرض محتوى شهادة سلطة الشهادات في خادوم MySQL بكتابة الأمر الآتي:

sudo cat /var/lib/mysql/ca.pem

الناتج:

-----BEGIN CERTIFICATE-----

. . .

-----END CERTIFICATE-----

انسخ جميع المحتوى بما فيه الأسطر التي فيها BEGIN CERTIFICATE و END CERTIFICATE إلى الحافظة.
أنشِئ ملفًا جديدًا في جهاز العميل باستعمال الأمر الآتي:

nano ~/client-ssl/ca.pem

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

sudo cat /var/lib/mysql/client-cert.pem

الناتج:

-----BEGIN CERTIFICATE-----

. . .

-----END CERTIFICATE-----

انسخ محتوياته مجددًا، واحرص على تضمين أول وآخر سطر.
أنشِئ ملفًا جديدًا في عميل MySQL بالاسم نفسه ضمن مجلد client-ssl:

nano ~/client-ssl/client-cert.pem

ألصق محتويات الحافظة إلى الملف، ثم احفظه وأغلقه.

ثم اعرض محتويات مفتاح العميل على خادوم MySQL:

sudo cat /var/lib/mysql/client-key.pem

الناتج:

-----BEGIN RSA PRIVATE KEY-----

. . .

-----END RSA PRIVATE KEY-----

انسخ محتوياته مجددًا إلى حافظتك، واحرص على تضمين أول وآخر سطر.
أنشِئ ملفًا جديدًا في عميل MySQL بالاسم نفسه ضمن مجلد client-ssl:

nano ~/client-ssl/client-key.pem

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

تعديل حساب المستخدم البعيد لطلب وجود شهادة موثوقة

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

mysql -u root -p

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

علينا استعمال الأمر ALTER USER لتعديل المتطلبات الخاصة بالمستخدم:

ALTER USER 'remote_user'@'mysql_client_IP' REQUIRE X509;

ثم حدِّث جداول الصلاحيات لتأخذ التعديلات مجراها مباشرةً:

FLUSH PRIVILEGES;

اخرج من سطر أوامر MySQL عندما تنتهي بالأمر:

exit

سنتأكد في الخطوة التالية أننا ما زلنا نستطيع الاتصال.

تجربة التحقق من الشهادة عند الاتصال

من المناسب الآن معرفة أنَّ كلا الطرفين سيستطيع التحقق من شهادة الآخر عند الاتصال.
لنحاول أولًا الاتصال من عميل MySQL دون توفير شهادات له:

mysql -u remote_user -p -h mysql_server_IP

الناتج:

ERROR 1045 (28000): Access denied for user 'remote_user'@'mysql_client_IP' (using password: YES)

سيرفض الخادوم الاتصال إذا لم نوفِّر شهادة للعميل.

حاول الآن الاتصال مع توفير الخيارات ‎--ssl-ca و ‎--ssl-cert و ‎--ssl-key للإشارة إلى الملفات الموافقة لها والموجودة في مجلد ‎~/client-ssl:

mysql -u remote_user -p -h mysql_server_IP --ssl-ca=~/client-ssl/ca.pem --ssl-cert=~/client-ssl/client-cert.pem ssl-key=~/client-ssl/client-key.pem

يجب أن تستطيع تسجيل الدخول إلى خادوم MySQL بنجاح. يمكنك العودة إلى سطر الأوامر بتنفيذ:

exit

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

إنشاء ملف ضبط لعميل MySQL

لتجنب تحديد ملفات الشهادات في كل مرة نتصل فيها إلى الخادوم، فيمكننا إنشاء ملف ضبط بسيط لعميل MySQL.
أنشِئ ملفا مخفيًا في مجلد المنزل في عميل MySQL باسم ‎~/.my.cnf:

nano ~/.my.cnf

أنشِئ في بداية ذاك الملف قسمًا باسم [client]، ويمكننا بعد ذلك السطر إضافة الخيارات ssl-ca و ssl-cert و ssl-key للإشارة إلى الملفات التي نسخناها من الخادوم؛ يجب أن يبدو شكل الملف كالآتي:

[client]
ssl-ca = ~/client-ssl/ca.pem
ssl-cert = ~/client-ssl/client-cert.pem
ssl-key = ~/client-ssl/client-key.pem

يُخبِر الخيار ssl-ca العميل أن يتحقق أنَّ الشهادة التي وفرها خادوم MySQL موقعةٌ من سلطة الشهادات التي أشرنا إلى شهادتها. وهذا يجعل العميل متأكدًا أنه يتصل بخادوم MySQL موثوق.

أما الخياران ssl-cert و ssl-key فيشيران إلى الملفات اللازمة لإثبات أنَّ العميل يملك شهادة موقعة من سلطة الشهادات نفسها. سنحتاج إلى ذلك إذا أردنا في خادوم MySQL التحقق أنَّ العميل موثوق من سلطة الشهادات أيضًا.
احفظ الملف وأغلقه عندما تنتهي من التعديلات عليه.

يمكنك الآن الاتصال إلى خادوم MySQL دون إضافة الخيارات ‎--ssl-ca و ‎--ssl-cert و ‎--ssl-key في سطر الأوامر:

mysql -u remote_user -p -h mysql_server_ip 

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

الخلاصة

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

المصدر: كيفية ضبط تشفير SSL/TLS للاتصالات إلى قواعد بيانات MySQL على خادوم أوبنتو 16.04 – MySQL – أكاديمية حسوب

كيف تستخدم Gmail أو Yahoo مع دالّة mail() في لغة PHP – البريد الإلكتروني – أكاديمية حسوب

تَستخدِم دالّة mail() البرنامج الموجود في موجِّه التكوين sendmail_path لإرسال رسائل البريد الإلكتروني. وهذا معدٌّ كـَsendmail بشكلٍ افتراضي. ومع أن معظم تنصيبات نظام Linux تملك sendmail مثبتة بشكل مسبق، فإنّك ستواجه بعض الصعوبات في إعداد تسجيلات SPF/PTR وتوليد مفاتيح DKIM وبعضض الأمور الأخرى حتى تتأكد بأن رسالة البريد المرسلة بواسطة سكربت الـPHP لن يتم تعليمه كرسالة بريدٍ ضارة (spam). يمكن استخدام بروتوكول MSMTP – وهو أحد عملاءء SMTP – لإرسال رسائل البريد باستخدام خوادم SMTP من طرف ثالث، ويمكن استخدام ذلك في دالّة mail() عوضاً عن sendmail.

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

حول دالّة mail() في لغة PHP

تَستخدِم دالّة mail() البرنامج الموجود في مسار sendmail_path لإرسال رسائل البريد الإلكتروني. وهذا معدٌّ كـَsendmail بشكلٍ افتراضي.
ومع أن معظم تنصيبات نظام Linux تملك sendmail مثبتة بشكل مسبق، فإنّك ستواجه بعض الصعوبات في إعداد تسجيلات SPF/PTR وتوليد مفاتيح DKIMوبعض الأمور الأخرى حتى تتأكد بأن رسالة البريد المرسلة بواسطة سكربت الـPHP لن يتم تعليمه كرسالة بريدٍ ضارة (spam). يمكن استخدام بروتوكول MSMTP – وهو أحد عملاء SMTP – لإرسال رسائل البريد باستخدام خوادم SMTP من طرف ثالث، ويمكن استخدام ذلك في دالّة mail() عوضاً عن sendmail.

php-mail.png

التثبيت

لتثبيت برتوكول MSMTP على نظام Fedora Linux استخدم yum كالاتي:


yum install msmtp

وبما أن مستودع CentOs  لا يحتوي على حزمة RPM لـMSMTP ، فإننا سنحتاج الى تنصيبها من المصدر:

yum install make gcc pkgconfig
wget http://sourceforge.net/projects/msmtp/files/msmtp/1.4.31/msmtp-1.4.31.tar.bz2/download
tar -xvf msmtp-1.4.31.tar.bz2
cd msmtp-1.4.31
./configure
make
make install

في وقت كتابة هذا المقال فإن آخر إصدار متوفر هو 1.4.31، ولكن قد تتوفر إصدارات أخرى في المستقبل، وللحصول عليها قم بزيارة هذه الصفحة.
على توزيعة Ubuntu/Debian استخدم apt-get :

apt-get install msmtp

ولمستخدمي Arch Linux :


sudo pacman -S msmtp

إعداد بروتوكول MSMTP

إن ملف الإعدادات الخاص ببروتوكول MSMTP محفوظ في ~/.msmtprc لكل مستخدم، وملف الإعدادات الشامل للنظام هو /etc/msmtprc.
قم الآن بفتح ملف الإعدادات في دليلك (directory):


vi ~/.msmtprc

قم بإضافة هذه الأسطر إلى حساب Yahoo:

account yahoo
tls on
tls_starttls off
tls_certcheck off
auth on
host smtp.mail.yahoo.com
user user1
from user1@yahoo.com
password yourYahooPa5sw0rd

وبالنسبة للـGmail استخدم الإعدادات التالية:


account gmail
tls on
tls_certcheck off
auth on
host smtp.gmail.com
port 587
user user1@gmail.com
from user1@gmail.com
password yourgmailPassw0rd

يمكن أن يحتوي هذا الملف على أكثر من حساب، فقط تأكد بأن تكون قيمة accountلكل قسم مختلفة عن الأخرى. قم بحفظ الملف واستعمل chmod لجعل هذا الملف قابلاً للقراءة فقط من قبل المالك لأنه يحتوي على كلمات مرور. الخطوة التالية تعد إجبارية لأن بروتوكول msmtp لن يعمل إذا كانت الصلاحيات أكثر من 600.


chmod 600 ~/.msmtprc

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

echo -e "From: Alice <alice@example.com> \n\
To: Bob <bob@domain.com> \n\
Subject: Hello World \n\
\n\
This email was sent using MSMTP via Gmail/Yahoo." >> sample_email.txt

قم الآن بإرسال البريد:


cat sample_email.txt | msmtp --debug -a gmail bob@domain.com

استبدل كلمة gmail بكلمة yahoo أو ما قمت بإدخاله مسبقاً في خيار account. سوف ترى العديد من الرسائل بسبب المعطى --debug. يُستخدَم هذا لجعل اكتشاف وتصحيح الأخطاء أمراً سهلاً إذا لم تعمل الأمور كما يجب.
إذا تلقّى bob@domain.com هذا البريد فإن كل شيء قد تم تنصيبه بشكل صحيح. لذلك قم بنسخ هذا الملف إلى مُجلّد /etc باستخدام السطر التالي:


cp -p ~/.msmtprc /etc/.msmtp_php

قم بتغيير الملكية إلى اسم المستخدم الذي يعمل الخادوم تحته. قد يكون ذلكapache، www-data أو nobody اعتماداً على توزيعة الـLinux الموجودة في الخادوم الإفتراضي الخاص بك (VPS) وعلى خادوم الويب المثبت:


chown www-data:www-data /etc/.msmtp_php

إعداد وتهيئة PHP

افتح ملف php.ini والذي قد يختلف مكان وجوده باختلاف نظام التشغيل (OS) ونوع PHP المثبت (مثل PHP CGI، mod_php، PHP-FPM …الخ):

vi /etc/php5/php.ini

ابحث عن السطر الاتي:

sendmail_path =

وعندما تجده قم بتعديله عن طريق إضافة المسار الخاص بأمر msmtp ليصبح كما يلي:

sendmail_path = "/usr/bin/msmtp -C /etc/.msmtp_php --logfile /var/log/msmtp.log -a gmail -t"

يدوياً، أنشىء ملف سجل (log file) وقم بتغيير ملكيته (ownership) الى اسم المستخدم الذي يعمل به خادوم الويب:

touch /var/log/msmtp.log
chown www-data:www-data /var/log/msmtp.log

أعد تشغيل خادوم الويب لتطبيق التغييرات:


service httpd restart

في نظام Arch Linux يتم ذلك باستخدام الأمر systemctl:


systemctl restart httpd

اعتماداً على نظام التشغيل وخادوم الويب قم باستبدال httpd بالاسم المناسب. إذا كانت PHP تعمل كعملية منفصلة (مثل PHP-FPM) قم بإعادة تشغيله عوضاً عن ذلك:


service php5-fpm restart

ولإختبار هذه التنصيبة، قم بإنشاء سكربت PHP مع دالّة mail() بسيطة:

<?php
if(mail("receipient@domain.com","A Subject Here","Hi there,\nThis email was sent using PHP's mail function."))
print "Email successfully sent";
else
print "An error occured";
?>

قم بالدخول إلى هذا الملف باستخدام إحدى المتصفحات:
http://www.example.com/file.php
اذا لم يتم إرسال البريد فيمكنك التحقق من وجود أي أخطاء عبر سجل msmtp:


tail /var/log/msmtp.log

أخطاء شائعة

اذا لم يتم إرسال البريد عند استخدام سكربت PHP، فعليك التحقق مما يلي:

  1. تحقق من أنك قد قمت بالتعديل على ملف php.ini الصحيح. يمكن التأكد والتحقق من ذلك عن طريق إنشاء ملف phpinfo(); والتأكد من قسمLoaded Configuration File.
  2. قد يكون المسار الى ملف إعدادات msmtp خاطئًا أو أن الخادوم لا يملك الصلاحية لقراءة هذا الملف.
  3. تحقق اذا ما تم إرسال أي بريد وذلك عن طريق تشغيل السكربت باستخدام سطر أوامر PHP:

php /var/www/html/file.php

المصدر: كيف تستخدم Gmail أو Yahoo مع دالّة mail() في لغة PHP – البريد الإلكتروني – أكاديمية حسوب

دليلك لبدء مشروعك المصغَّر – نصائح وإرشادات – أكاديمية حسوب

يناقش الكاتب أهمية الأعمال المصغّرة أو المشاريع المصغّرة، وكيف يُمكن إدارتها وتحقيق عائد منها.

المصدر: دليلك لبدء مشروعك المصغَّر – نصائح وإرشادات – أكاديمية حسوب

ريادة الأعمال – أكاديمية حسوب

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

المصدر: ريادة الأعمال – أكاديمية حسوب

كيفية نقل المحتوى من موقع ووردبريس إلى موقع آخر خطوة بخطوة – ووردبريس – أكاديمية حسوب

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

المصدر: كيفية نقل المحتوى من موقع ووردبريس إلى موقع آخر خطوة بخطوة – ووردبريس – أكاديمية حسوب

وورد بريس تطلق إضافة برمجية تسهل كتابة التدوينات ونشرها من خدمة مستندات جوجل – صحيفة الأيام البحرينية

أعلنت منصة التدوين وورد بريس عن إطلاق إضافة برمجية جديدة تتيح للمستخدمين كتابة التدوينات في خدمة مستندات جوجل Google Docs، والتي تعد جزءا من خدمة جوجل درايف ال

المصدر: وورد بريس تطلق إضافة برمجية تسهل كتابة التدوينات ونشرها من خدمة مستندات جوجل – صحيفة الأيام البحرينية

مايكروسوفت وفيس بوك تكملان مد كابل الإنترنت البحري Marea – البوابة العربية للأخبار التقنية

مايكروسوفت – أكملت شركتا مايكروسوفت وفيس بوك مد كابل الإنترنت البحري المسمى Marea، حيث يربط الكابل الجديد الممدود تحت سطح البحر بين أمريكا الشمالية مع قارة أوروبا، ويعد

المصدر: مايكروسوفت وفيس بوك تكملان مد كابل الإنترنت البحري Marea – البوابة العربية للأخبار التقنية

اللغة الفرنسية مسابقة الاساتذة مختلف الاطوار ثانوي متو سط تكوين المعلمين

L’origine du document

A l’atteneion des enseignants en formation

Programme de l’année

 

1.1.  Séance 1 :   S’INFORMER

1.2.  Séance 2 :   DISTINGUER

1.3.  Séance 3 :  ANALYSER

1.4. Séance 4 :  INTERPRETER

1.4.  Séance 5 : REALISER

 

Bilan des connaissance

Corriges

Grille d’autoévaluation

Glossaire

Rappel

Séquence 2 : ANALYSER LE RECIT DE PRESSE

 

UNITE 1

  Récit et discours

  L’énonciation

  Récit fictif / Récit réel

  Récit isochrone / récit bouleversé

  Les temps du récit

  Le déroulement de l’action

  La postériorité dans le récit

  L’antériorité dans le récit

  La simultanéité dans le récit

  Bilan de la première unité

UNITE 2

 

  L’organisation du récit

  Le schéma narratif

 La fonction des personnages

  Le rôle des personnages

  Le récit de presse

  L’analyse de la situation de communication

  L’analyse du contenu du récit

  Les titres

  Grammaire des titres

  Le fonctionnement des titres

  Le contenu des titres

  Les figures de style dans les titres

 Les textes rapportés dans les récits

(discours direct et discours indirect)

  Le discours direct dans le récit

  Bilan de l’unité 2

Séquence 3  REALISER L’INTERVIEW

 

Techniques de l’interview

SEQUENCE 4 :

REALISER DES PAGES PULICTAIRES

       CONTENU DE LA SEQUENCE

Séance 1

Les supports iconiques et linguistiques de la publicité

Séance 2

Quelques types de procédés utilisés en publicité

Séance 3

Constructions grammaticales utilisées en publicité

Séance 4

Réaliser une publicité

Grille d’autoévaluation

SEQUENCE 5 :

        REALISER UNE ENQUETE

     

        CONTENU DE LA SEQUENCE

        Séance 1

 

            Lire les enquêtes et les sondages

 

العلوم الطبيعة علوم الطبيعة والحياة مسابقة الاساتذة مختلف الأطوار متوسط ثانوي

تقديم 

 النباتات في وسطها الطبيعي

دراسة الجذور

 دراسة السيقان

دراسة الأوراق والبراعم

دراسة الأزهار

 

 1- مورفولوجيا نباتية

  1. 1.    الصنوبر  Le pin
  2. السراخس   Les fougeres
  3. الطحالب     Les mousses
  4. الأشنيات    Les lichens
  5. الفطريات    Les champignons

2- فيسيولوجيا نباتية

  1. الحاجيات المعدنية لنمو النبات الأخضر
  2. الامتصاص
  3. انتقال النسغ الناقص
  4. طرح النبات للماء( النتح )
  5. التركيب الضوئي

التنفس

 

التخمر

 

التكاثر الجنسي عند النباتات الزهرية

 

التكاثر الخضري

 

التقنيات الزراعية

 

إجابات التقويم الذاتي

 

مســـــــــــا فات

بقلم : بغورة محمد الصديق
جميلة تلك الحالات التي لا نستطيع تبينها

                             أهواه أكثر من صديق تحلو بصحبته طريقي

فالحرف في فمه أغان من مِعزف ورق رقيق

                             إن ضقت صب حنانه في مهجتي فأزال ضيقي

أماه يدفئ ناظـراه قلبي فيلفحني حريقي

                            مالي إذا ما حل يمحى نصح الشقيقة والشقيق

أقسمت أن أنجو بجلدي أفلت من رعد البريـق

                             لكنه يغتال شكي يشنق في شفتيّ ريقي

إذا يحنو علي يغدو دمعي ومن ولهي رفيقي

                               أماه هل جربت مثلي قلـبا أرق من العـقيق

قلبا يدق إذا تراءى صاحت خلاياي أفيقي

                             أعدو إليه كأي طفل يا روعة الحب الحقيق