RSS

Category Archives: Operating systems

Windows, Unix, Linux

Windows, Unix, Linux

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

اما انا فسأتحدث عنهم من منظور التطوير والشكل والتسهيلات الموجوده بداخل كل نظام تشغيل.

اللينوكس


 بداية لتصحيح المفاهيم اللينوكس عبارة نواه او كيرنل فقط ونصف نظام التشغيل الاخر هو جنو وهو عبارة عن برمجيات تستعمل لسد مطالب معينه مثل:
GCC – GNU Compiler Collection
GDB – GNU Debugger
LD – GNU Linker…etc
حصل اللينوكس على شهره خياليه وذلك فضلا عن كونه بيئه جيده جدا للمطورين ، انه حرفيا أول نظام تشغيل مفتوح المصدر يطلق على الاطلاق وتبنته الكثير من الشركات مثل  Redhat وهى من أوائل الشركات التى تبنت نظام التشغيل جنو لينوكس..
يسمي اللينوكس ب Unix-like وذلك لانه يشابة نظام التشغيل يونكس فى مظهره وبرمجياته وما يسمي باستدعاءات النظام System calls. وذلك وفر لبرمجيات اليونكس العمل على اللينوكس. مما جعل تغيير نظام التشغيل امر سهلا. وتعتبر اللينوكس كيرنل معتمده فى جزء كبير منها او مشابها ل Minix والذي صاحبها هو Andrew Tanenbaum وهو مدرس جامعي وباحث مشهور و ايضا مولف لعديد من الكتب الرائعه فى مجال علوم الحاسب مثل Modern Operating systems , Computer Networks..etc

من نظرة مطور، تنتمي اللينوكس كيرنل الى عائلة ال Monolithic kernel وهى عبارة عن كيرنل تدريجيه متالفه وتوضح الصوره شكل النواه المتالفه

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

اما اللينوكس كانظمه تشغيل مختلفه فتم تعديله بشكل كبير ليناسب الانظمه والسيرفرات المتقدمه ويتقدمها شركه redhat. وبرغم اعتقادي ان اللينوكس ليس من افضل الانظمه التى قد يمكن استخدامها للسيرفرات الا انى اخترت ان اسأل بعض مهندسي ومديري الانظمه وغيرهم من المهتمين بالمجال. وقال البعض ان السبب وراء تفضيل الناس اللينوكس على الانظمه الاخري هو كونه بلا مقابل (وبالطبع ذلك ليس فى جميع الاحيان). وقال اخرون ان السبب هو سهوله الاستخدام وكونه صديق للمستخدم (الذي هو مهندس النظام فى تلك الحاله).

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

ويندوز


اما الويندوز فهو بيئه متكامله وممتازه للمستخدمين العاديين وهو مايمنحه الاولويه فى السوق. الجميع يعلم ان الويندوز يحتل المرتبه الاولي فى نظم التشغيل المستخدمه وذلك لان كثير من البرمجيات تدعمه مثل برمجيات الجرافيكس والالعاب. وايضا لانه اكثر صداقه للمستخدم العادي. وعلى المستوي الشخصي اعتبره النظام الافضل للمستخدم العادي ولكن ايضا على مستوي الامن استبعده تماما.
قد تتلخص مميزات الويندوز فى التالي
أ- يعتمد الويندوز فى برمجته على ثقافه التوازي فهناك مقوله فى الويندوز تقول – Everything is a thread – فهو Multi-threaded وهو ما لا اعتقد ان اللينوكس يوفره.
ب- يعتبر الويندوز هو الاختيار الافضل لل(بزنس) او بشكل اخر الكسب السهل فهو لايكلفك الكثير لادارته والتحكم فيه كما قد يكلفك اللينوكس.
جـ – كثيرا من البرمجيات التجاريه تدعم الويندوز وذلك ايضا بسبب (البزنس) وهذا يجعل الويندوز بيئه (اسهل) فى التعامل.
اما عيوب الويندوز فانا اراها كثيره من وجهه نظري
أ- اولها واخطرها هو عدم الامن. فكثيرا من البرمجيات والخدمات التى يوفرها الويندوز سهله الاختراق. كما ينطبق ذلك على الويندوز ذاته!
ب- نظام الويندوز نظام سريع وسهل الانهيار -Crashy- وقد يفهم وجهه نظري من استخدم او طور دريفرات للويندوز او استخدم ال DDK/WDK.
جـ- الويندوز نظام مليئ بالاخطاء والتى تساعد على زيادتها ثقافه البرمجيات المغلقه التى يتبناها ويندوز واخرها كان ال ms-12020 والذي احدث ضجه كبيره وقد ينهي وجود كثير من سرفرات الويندوز.
د- وهناك العديد من العيوب الاخري والتى لا اريد ان اخوض فيها حتي لاننحرف عن مسار الموضوع.

Unix


حتي لا تختلط  المفاهيم. اختفي اليونكس من ساحه تكنولوجيا المعلومات منذ سنين او يكاد يكون.. فيما عدا ماتبقي منه ومازال يحتفظ بمواصفاته، مثل ال BSD بتوزيعاتها المختلفه و AIX و Solaris. ويعتبر اليونكس أب لجميع انظمه تسمي بال *Nix وتوضع الصوره التاليه مفهومي.

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

فإذا وضعنا نظام freeBSD فى مقارنه مع Linux.
نجد ان ال BSD كما ذكرت ديناميكي جدا على عكس اللينوكس الى حد ما.. وايضا البي اس دي يتهم بشكل كبير بالامن الخاص بنظام التشغيل نفسه.
كما يوفر ال BSD العديد من التسهيلات التى وجدت حديثا فى اللينوكس بل وبشكل افضل مثل BSD jails و SeLinux. وعديد من المزايا المتقدمه.
وايضا يتشابه الاثنان فى كثير من المميزات ولكن مايميز اللينوكس هو سهوله الاستخدام الى حد ما عن ال BSD او AIX.
وايضا انا اعلم ان كثيرا ممن كتب (موديولز) لنظامي التشغيل لينوكس ويونكس يعلم الفرق فى الديناميكيه و الحدود التى توضع على المطور.

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

وبالطبع انا ارحب بأي مناقشه او اعتراض.

 

Pthreads Part [2]

Pthreads Part [2]

 

The previous part introduced the basic usage of Pthreads , If you didn’t read it please refer to this link before you continue reading this topic…

Now what are threads without synchronization 😉 , the threads library offers 3 synchronization techniques : Mutexes , joins and conditional variables , this topic will handle mutexes , the rest will be in another topic.

Mutexes are used to prevent data inconsistencies that can happen due to operations of multiple threads on the same memory area , It can be also used to prevent race conditions , where and order of an operation is expected..meaning that the result of an operation depends on the order of the threads , and to protect what we call “critical memory” from other threads, anytime a global resource is accessed by more than one thread the resource should have a Mutex associated with it.

Note that mutexes are only applied to threads in a single process not to different processes .

Now let’s hop on to the code

The code is pretty much straight forward but it shows how you must always be extra careful when using global variables , you want to add 1 to counter then multiply it by 5

compile and run
-$ gcc -o mutex1 mutex1.c -lpthread
-$./mutex1

you should get
Counter value: 1
Counter value: 5

now if you comment out the mutexes and recompile try running it couple of times and you’ll notice the error
$ ./mutex1
Counter value: 0
Counter value: 1

** as you see thread2 operated before thread1 yielding a wrong result.

 
1 Comment

Posted by on February 14, 2012 in Featured, Linux, Operating systems, Programming, Software

 

Tags:

DalviK Virtual Machine (DVM)

DalviK Virtual Machine (DVM)

Dalvik is the process virtual machine (VM) in Google’s Android operating system. It is the software that runs the apps on Android devices. a register-based architecture designed and written by Dan Bornstein with contributions from other Google engineers as part of the Android mobile phone platform.

Dalvik is thus an integral part of Android, which is typically used on mobile devices such as mobile phones and tablet computers. Programs are commonly written in a dialect of Java and compiled to bytecode.
then they are converted from Java Virtual Machine-compatible .class files to Dalvik-compatible .dex (Dalvik Executable) files before installation on a device.

The compact Dalvik Executable format is designed to be suitable for systems that are constrained in terms of memory and processor speed. It is optimized for low memory requirements, and is designed to allow multiple VM instances to run at once, relying on the underlying operating system for process isolation, memory management and threading support.

Dalvik is often referred to as a Java Virtual Machine, but this is not strictly accurate, as the bytecode on which it operates is not Java bytecode. Instead, a tool named dx, included in the Android SDK, transforms the Java Class files of Java classes compiled by a regular Java compiler into another class file format (the .dex format).

Dalvik does not align to Java SE nor Java ME class library , Instead it uses its own library built on a subset of the Apache Harmony Java implementation.

About Dex File Format .. 
Android programs are compiled into .dex (Dalvik Executable) files, which are in turn zipped into a single .apk (Android Package) file on the device.
.dex files can be created by automatically translating compiled applications written in the Java programming language.

    –Dex File Format
    –File Header
    –String Table
    –Class List
    –Field Table
    –Method Table
    –Class Definition Table
    –Field List
    –Method List
    –Code Header
    –Local Variable List

    
*File Header
Dex files start with a simple header with some checksums and offsets to other structures

*String Table
This table stores the length and offsets for every string in the Dex file including string constants, class names, variable names and more.

*Class List
A list of all classes referenced or conatined in this dex file

*Field Table
A table of fields of all classes defined in this dex file.

*Method Table
A table of methods of all classes defined in this dex file

*Class Definition Table
A table of class definitions for all classes either defined in this dex file or has a method or field accessed by code in this dex file.

*Field List
Stores data for pre-initialized fields in a class. The list is formed of a 32-bit integer containing the number of entries followed by the entries themselves.

*Method List
A list of methods for a particular class

*Code Header
This header contains information about the code that implements a method

*Local Variable List
A list of local variables for a particular method.
  

About Architecture ..
A tool called dx is used to convert some (but not all) Java .class files into the .dex format. Multiple classes are included in a single .dex file. Duplicate strings and other constants used in multiple class files are included only once in the .dex output to conserve space. Java bytecode is also converted into an alternative instruction set used by the Dalvik VM. An uncompressed .dex file is typically a few percent smaller in size than a compressed .jar (Java Archive) derived from the same .class files

About Performance .. 
Generally, stack-based machines must use instructions to load data on the stack and manipulate that data, and, thus, require more instructions than register machines to implement the same high level code, but the instructions in a register machine must encode the source and destination registers and, therefore, tend to be larger.
This difference is primarily of importance to VM interpreters for which opcode dispatch tends to be expensive along with other factors similarly relevant to just-in-time compilation.

 

 

 

 

Tags: ,

Into the Low Level: Assembling (0x05)

Into the Low Level: Assembling (0x05)
فى المقاله السابقة شرحنا كيفيه تعامل نظام التشغيل والماكينه مع الكود او الملفات الثنائية، وأنواع طريقة كتابة لغات التجميع.
فى هذا المقال سأبدأ بشرح كيفيه كتابة كود لغة التجميع تحت نظام الـ جنو/لينوكس.
ماسنحتاج اليه فى هذه المقاله هو اي نوع من توزيعات الـ جنو/لينوكس. و nasm. افتح التيرمنال واكتب “sudo apt-get install nasm”.
هذا النوع من كتابه لغة التجميع يعتبر من اكثر الانواع استخداما واشهرها وحديث وقابل للتشكل حسب نوع نظام التشغيل.
افتح ملف نصي جديد بأي محرر نصي وانا شخصياً افضل ال vim ولكن لك حرية الاختيار. واكتب الكود الخاص باستدعاء النظام exit.

بعد كتابه الكود يجب تجميع او ترجمة الكود الى ملف (اوبجكت) عن طريق ال nasm. ولكن ماهو المجمع؟؟
اي كود لغه برمجه ذات مستوي اعلي من لغة التجميع ( السي علي سبيل المثال) تمر بثلاث مراحل. فأي كومبيلر يمر بتلك الثلاث مراحل لانتاج ملف تنفيذي.
اولا مرحله الترجمة او الكومبيل : وخلالها يتم ترجمه كود البرنامج من كود لغه البرمجه الى كود لغه تجميع.  على سبيل المثال اذا ترجمت كود سي مع اضافه الأختيار S الى ال جنو كومبيلر ( gcc -S file.c).
ثانيا مرحله التجميع: وخلالها يتم تجميع وترجمه ملف لغه التجميع الناتج عن مرحله الكومبيل. لينتج ملف يسمي ملف كائن او ملف الاوبجكت. وهو مرحله ماقبل تحويل الملف الى ملف تنفيذي. وإحدي فوائده والتي تهمنا عند هذه النقطه. هو انك تستطيع كتابه اكثر من ملف للكود وترجمتهم الى ملفات كائنه. ومن ثم ربطهم سويا بما يسمي الرابط او اللينكر.
ثالثا مرحله الربط: وفيها يتم ربط الملفات الكائنة سويا لتكوين الملف التنفيذي.

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

كما توضح الصوره فإنه بعد كتابة nasm -f elf exit.asm -o exit.o يظهر ملف ذو امتداد .o وذلك مايسمي بالملف الكائن.
ولكن ماهو ال Elf؟
ال Elf هو نوع من انواع الملفات التنفيذيه. وهو يعتبر النوع المقياسي والاشهر للانظمه *nix. ويمكن ان يوجد على شكلين، علي شكل ملف تنفيذي او ملف كائن.
هنالك انواع اخري متعدده غير ال ELF كما ستري فى الصوره التاليه.اما الاختيار -o فهو لاختيار اسم الملف الكائن بعد ان يتم تجميعه، وكما تري بعد تنفيذ objdump -h exit.o. يعلمنا ان نوع الملف هو elf32.

بعد ان اتممنا عملية التجميع جاء وقت عمليه الربط لتكوين الملف التنفيذي. وهذه العمليه تنفذ بما يسمي الرابط او ال Linker. وتحت نظام التشغيل جنو/لينوكس يوجد برنامج يسمي ب the GNU Linker(ld). وذلك ماسنستخدمه فى ربط الملفات الكائنه.

كما نري بالصوره فإننا نختار اسم الملف التنفيذي من الاختيار -o، وعند تنفيذ الكود مايتم هو عملية خروج او exit فقط، لذلك لايعتبر ذلك الملف التنفيذي له اي وظيفه.
وعند تحديد نوع الملف التنفيذي ايضا نجده من نوع ELF.

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

لمن لم يستطع ان يتابع السلسله منذ البدايه.

Into the Low Level: Memory Addressing (0x01)

Into the Low Level: VM86 and Real-Mode support(0x02)

Into the Low Level: Registers(0x03)

Into the Low Level: Assembling (0x04)

 
Leave a comment

Posted by on December 13, 2011 in Featured, Operating systems, Software

 

تجربتى فى الانتقال من العالم المغلق الي العالم المفتوح

تجربتى فى الانتقال من العالم المغلق الي العالم المفتوح

لما اتولدت 😀

ياااااااااه انت هتحكي من زمان كده اقفل يا عم الموضوع ده

لا لا خلاص ندخل ف الموضوع

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

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

وزي ما انت اقتنعت بكلام اهلك عن دينك
برده اقتنعك بكلام استاذ الكمبيوتر عن الويندوز
(هوا اينعم نظرية غلط انك تقتنع بكلام الغير من غير ما تفكر فيه) بس وانت ف السن ده كنت بتستمد كل تفكيرك يا من البيت يا من الاساتذه بتوعك وده كان غصب عنك مش بمزاجك

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

كبرت وبدات تتعمق ف التكنولوجيا اكتر واكتر
هنا بقي نقف وقفة

انت عاوز ايه من التكنولوجيا دي ؟
هل عاوزها كشغل ووظيفة وعاوز تبقي انسان تقليدي وخلاص ومش فارق معاك انك تبدع او تعمل حاجة جديدة ف مجالك ؟؟؟ ( مش لازم تكمل الموضوع معلش صدعتلك دماغك )
ولا عاوز تبقي راجل معدي وفاهم انت بتعمل ايه كويس ونفسك تعمل شئ جديد ؟؟؟ ( معلش خليك معانا شوية وليك هدية حباية للصداع لو كملت الموضوع للاخر )
ولا مش فارقة معاك ؟؟؟ ( زيك زي اخوك اول واحد )

مادام كملت
يبقي انت تاني واحد
راجل نفسك تتعمق ف الكمبيوتر وتبقي معدي وفاهم الدنيا ماشية ازاي ف ساعتها هتبدا تفكر
هل الطريق الي انا فيه ده الصحيح ولا ممكن الاقي طريق تاني افضل ؟؟؟

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

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

كفاية كلام عن الديانات بقي عشان منعكش ف الكلام ده ويبقي حرام علينا
المهم التشبيه كان لمجرد التوضيح بس ان دي كانت حاجة اتزرعت جواك وانت صغير واتربيت وكبرت وهيا معاك وانت مقتنع ان مفيش حل تاني غيرها

دلوقتي انت كحد نفسه يبقي جامد ومعدي
فضلت شغال علي عمو الويندوز بقالك اقل ما فيها تلت سنين ولا حاجة (شغال بجد مش شغال بلاي ستيشن)
مفيش حته فيه مدخلتش فيها وملعبتش فيها
لدرجة انك ممكن تكون وصلت لمرحلة انك بقيت فاهم الويندوز احسن من الي عملوه وبدات تفكر تعمل دكتوراه فى قايمة ستارت

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

بدات تسال حد كبير وقديم ف المجال
C وبعديها تخش علي ال C++يقولك بص يا سيدي انت تتعلم

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

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

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

بعدها بفترة لما بدات تحتك بالناس الي شغالة ف المجال
وتعرف ناس من طبقات مختلفة وثقافات مختلفة
ترمي ودنك كده علي اتنين بيتكلموا
تلاقي واحد بيقول للتاني ايه :  “نزلت التوزيعه الجديدة بتاعت لينكس”

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

تحس ان الدنيا بدات تغيم اكتر
وتقعد تقول من جواك
توزيعه ، لينكس ، بايثون
مين الناس دي!!!!!!!

وبعدين تحاول مع الوقت تسال الناس وتفهم ايه الكلام الغريب ده

تبدا تعرف ان فيه حاجة اسمها Linux وان الحاجة دي عبارة عن Operating System زيها زي ال Windows
وتفضل لفترة من الزمن معتقد ان ده الفرجن الجديد من الويندوز
وبعدين تحاول تدور علي اي اسطوانة ليه عشان تجرب النسخة الجديدة بقي ما هوا انت معدي مينفعش تنزل حاجة جديدة ومتجربهاش

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

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

وبعدها ترجع تقوله ايه طب ما تجيب الاسطوانة كده وتيجي تسطبهالي
ويجي عمنا سيد ويسطب ويزبط ويسيببلك الجهاز صحراء قاحلة ويسيبك ويمشي وانت تايه ف وسط جهازك
تيجي انت تشغل اغنية يقولك الامتداد غير مدعوم مفيش برنامج يشغلها
تقول اه اكيد لازم انزل ال Winamp وتقوم داخل ف فولدر البرامج الجميل وتيجي تسطب
يطلعلك العلامة الحمرا ف وشك بشتيمه علي طول (انت بتعمل ايه يا متخلف انت مش عارف ان ده ملف EXE العب بعيد اجري)

الا هوا البتاع ده بيعمل كدا ليه معايا (دا انا معدي يا ناس ، دنا كنت خاربها ف الويندوز)
وتقعد تضغط عليها مرتين تلاته كمان احسن تكون ضغطت غلط ولا حاجة او يكون الماوس معلق
وبرده مفيش فايدة

تقول طب سيبك م ال Winamp دلوقتي
وتفتكر انك كنت عامل برنامج بالسي شارب بيشغل الاغاني ومقاطع الصوت
فتيجي تفتحه
اله دا هوا كمان بيطلع رسالة حمرا
وبعدين تقول من جواك ( “الويندوز” ده اكيد ضارب ) انا هنزل النسخة القديمة وخلاص بلاش وجع  دماغ

وفعلا تمسح كل حاجة وترجع للعالم القديم بتاعك تاني حيث يوجد Winamp واغاني والحياة حلوة بالاضافة لاحساسك فيه انك جدع
بس ف نفس الوقت تفتح النت وتبدا تبحث يعني ايه Linux والكلام ده
وتلاقي كلام بيقولك ان ده نظام تشغيل مفتوح المصدر وكلام كتيير كده ….. وانت مش فاهم حاجة
مفتوح ايه ومصدر ايه
مين الناس دي !!!!

وبعدين تقعد تعمل علامات استفهام كتيير ف دماغك ؟ ؟؟   ؟؟؟
نظام تشغيل ؟
لينكس ؟
توزيعه ؟
مفتوحة المصدر ؟
يعني ايه اصلا ؟
معني كده ان فيه حاجة تانية مقفولة ؟
طب هوا ايه الفرق اصلا ؟
يعني اللينكس دي مش فرجن جديد من الويندوز ؟
اله ؟
انا مين ؟

و استنونا العدد الجاى

 
16 Comments

Posted by on December 9, 2011 in Featured, Linux, Operating systems