Thursday, March 06, 2008

Static vs. Dynamic vs. Automatic Variable

Static memory allocation refers to the process of allocating memory at compile-time before the associated program is executed, unlike dynamic memory allocation or automatic memory allocation where memory is allocated as required at run-time.

An application of this technique involves a program module (e.g. function or subroutine) declaring static data locally, such that these data are inaccessible in other modules unless references to it are passed as parameters or returned. A single copy of static data is retained and accessible through many calls to the function in which it is declared. Static memory allocation therefore has the advantage of modularising data within a program design in the situation where these data must be retained through the runtime of the program.

The use of static variables within a class in object oriented programming enables a single copy of such data to be shared between all the objects of that class.

Object constants known at compile-time, like string literals, are usually allocated statically. In object-oriented programming, the virtual method tables of classes are usually allocated statically.

From Wikipedia

Tuesday, February 12, 2008

المعرض

رغم أنه المعرض الأضخم على مستوى العالم إلا أنه يشهد تراجعا نسبيا طبقا لإحصائية الهيئة حيث كان العام 2004 هو الرقم القياسي الذي حققه المعرض من حيث عدد الكتب والناشرين حيث كان منحنى الزيادة بمعدل طبيعي ثم هبط من بعدها دون سبب واضح.
 
عدد سنوات المعرض
عدد الدول المشتركة
عدد الناشرين
عدد الكتب
عدد السرايات
1969
47 دولة
462
100.000
2
1970
40 دولة
700
500.000
3
1971
34 دولة
750
380.000
4
1972
45 دولة
431
300.000
5
1973
35 دولة
300
220.000
4
1974
30 دولة
141
250.000
6
1975
30 دولة
140
250.000
6
1976
27 دولة
139
250.000
6
1977
27 دولة
148
400.000
8
1978
30 دولة
50
450.000
8
1979
32 دولة
150
450.000
9
1980
32 دولة
400
500.000
9
1981
18 دولة
100
700.000
9
1982
32 دولة
133
930.000
9
1983
46 دولة
583
1.450.000
9
1984
42 دولة
1177
2.500.000
9
1985
51 دولة
1200
3.000.000
9
1986
49 دولة
1200
3.550.000
9
1987
57 دولة
1700
3.700.000
10
1988
52 دولة
1700
1.250.000
17
1989
52 دولة
1700
1.300.000
17
1990
54 دولة
1750
3.800.000
17
1991
62 دولة
1750
4.200.000
17
1992
65 دولة
1850
4.300.000
17
1993
68 دولة
1850
4.500.000
22
1994
72 دولة
2175
5.200.000
25
1995
76 دولة
2300
1.600.000
25
1996
76 دولة
2400
2.250.000
27
1997
79 دولة
2400
3.400.000
27
1998
79 دولة
2450
3.600.000
27
1999
83 دولة
2693
3.700.000
28
2000
85 دولة
2715
3.920.000
30
2001
85 دولة
2765
3.950.000
35
2002
93 دولة
2825
3.950.000
35
2003
97 دولة
3125
5.000.000
37
2004
97 دولة
3150
5.000.000
38
2005
25 دولة
516
3.000.000
17
2006
32 دولة
623
3.000.000
18
وبيانات هذا العام 2008 كالتالي
 عــدد الســرايــا : 17 سراى
عــدد الدول المشتركة : 25 دولة
عــدد الكتـــــب : 3000000 كتاب
عــدد الناشريـــن : 516 ناشرا
عــدد المنظمـــات : 14 منظمة

أنا والمجتمع والناس

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

Sunday, January 13, 2008

كفاحي - مقتطفات

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

Saturday, January 12, 2008

مش هي دي مصر يا عبلة

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

ما ينفعش الأدب يكون نظيف؟

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

Friday, January 11, 2008

ويكيبيديا ثانية

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

المتاجرة بأحلام البسطاء

من هو أول الأنبياء و أبو البشر الذي خلقه الله بيديه؟
هل هو سيدنا آدم؟
نعم أم لا؟
 
اتصل الآن على 09009999 لتربح معنا في مسابقة اليانصيب الإسلامي الجديدة.
اتصل لتربح زيارة لأراضي الحجاز المباركة، لتزور الكعبة المشرفة، وتزور سيدنا النبي عليه الصلاة و السلام و الروضة الشريفة.
الرحلة شاملة السفر على عبارات ممدوح إسماعيل (سطح مجهز) و الإقامة في مخيمات متميزة.
 
ملحوظة مسابقة اليانصيب الإسلامي هي أحد المسابقات المشروعة و ليست كمسابقات اللوتاري الغربية النجسة.
سعر الدقيقة 5 جنيهات - مدة المكالمة 15 دقيقة على الأقل.
سوف يتم إلغاء المسابقة إذا لم تتجاوز الاتصالات عدد الـ 100 ألف مكالمة.

معاملة أطفال

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

بالنسبة لصناعة البرمجيات كنت فاكر ان أقصى مشاكل ممكن يتعرض لها الـ developer  مننا هي مشاكل الأعمال المكتبية عامة زي الكرش و مشاكل فقرات الرقبة و الظهر و العمود الفقري عامة بالإضافة لمشاكل النظر و اجهاد العين .. و من ثم فتخيلت ان احتياطات الأمان اللى برضه ما حدش هيلتزم بها هي كرسي صحي، ارتفاع مكتب ملائم، وضع جلوس صحيح، تمارين رياضية، فلتر شاشة، نظارة، لوحة مفاتيح صحية (Anti-RSI keyboard)  ... لكن الموضوع طلع اكبر من كدة بكتيرو غير منحصر بس في مشاكل المكتب لما لقوا ان الـ developers  بيجيلهم أعراض مرض التوحد !! التفاصيل في الخبر دة:
و بالذات مجموعة أعراض أسبرجر اللي تعتبر من درجات التوحد؛ لدرجة ان أحد المواقع الطبية بينصح مرضى التوحد انهم يشتغلوا مبرمجين للسبب التالي:
يا ترى احتياطات الأمان دلوقت هتبقى ايه؟ و يا ترى الشركات الكبيرة هيبقى عندها إدارة أمن صناعي لصناعة البرمجيات؟ و هتبقى عاملة ازاي؟ هيكون فيها دكتور نفسي و أخصائي اجتماعي؟ والناس بتوع الجودة و الـ process  هيتأكدوا ان اي مؤسسة بيقيموها بتتبع احتياطات الأمان مع المبرمجين زي ما ببتأكدوا من كل الإجراءات التانية؟ و هيكون شكلها ايه الاحتياطات دي؟

الظاهر ان الأعراض دي الناس بدأوا يلاحظوها على بعض الـ developers الي حواليهم وبقوا بياخدوا بالهم ان دول معاملة أطفال !

Friday, January 04, 2008

الرأسمالية و توظيف الكوارث

The Shock Doctrine: The Rise of Disaster Capitalism

Saturday, November 17, 2007

هل يعمل الدعاة لحساب أجندة ما؟

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

Tuesday, November 13, 2007

نعم.. و لكن.. إذن.. - تساؤلات عن المؤامرة و العلاقة مع الآخر

نعم..

نعم لن ترضى عنا اليهود و النصارى حتى نتبع ملتهم..

نعم هناك مخططات لهدم الدين..

نعم هناك مؤامرات لمحاربة الإسلام..

نعم يضمر أعداء الإسلام له أكثر مما يظهرون..


ولكن..


لماذا لم يستأصل الإسلام شأفتهم من البداية؟

لماذا لم يقتلعهم من جذورهم منذ أول بادرة؟

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

لماذا كان الرسول عليه الصلاة و السلام يتزاور مع اليهود و يقبل دعواتهم؟ أما كانت إحدى هذه الدعوات من امرأة يهودية و كانت الوليمة شاة مسمومة؟

لماذا ظل اليهود يعملون بالتجارة في ظل دولة الإسلام؟ هل كانوا يبيعون لأنفسهم فقط؟ لماذا لم يتم التضييق عليهم اقتصادياً؟

لماذا توفي الرسول عليه الصلاة و السلام و درعه مرهونة ليهودي؟ ألم يكن هناك مسلم و احد يمكن أن يرهن درعه عنده؟


إذن..


لم هذه الحساسية المفرطة تجاه التعامل مع النصارى؟

لماذا يأنف البعض من أن يدخل بيوتهم أو يأكل من طعامهم أو يتعامل معهم؟ أهو خير و أزكى من رسول الله عليه الصلاة و السلام؟

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

لماذا ننظر إليهم بهذه الصورة الاختزالية كأنهم وحدة عضوية واحدة في حين أن الرسول عليه الصلاة و السلام تعامل مع كل منهم حسب موقفه و لم يمنعه خيانة فريق منهم أن يعقد اتفاق مع فريق آخر؟

هل اكتشفنا من الخطط و المكائد و المؤامرات ما كان يجهله الرسول عليه الصلاة و السلام؟ أم هل قد وجدنا تفسيراً جديدا لآية "و لن ترضى عنك اليهود و النصارى" استحدثت أحكاماً جديدة؟ أم هل بمقدورنا أن نطبق الولاء و البراء بأفضل مما كان يطبقه الصحابة؟

إذا كانوا هم عندهم من العنصرية و التمييز ما يدفعهم لأن يقتصروا على التعامل فيما بينهم و لا يبيعوا عقارا أو أرضا إلا لأبناء دينهم و.. و .. ، فهل يأمرنا إسلامنا على أن نعاملهم بالمثل؟


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

Tuesday, October 30, 2007

بعد إزالات المنيل، ما زالت أراضي الغلابة المتاخمة للمعادي تلمع في عيون بتوع البزنس


الأهالي خلال مظاهرة أمس

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

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

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

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

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

Monday, October 29, 2007

strlen() vs. sizeof() Tip

Only use sizeof() for locally allocated buffers.
Always use strlen() for variables passed from outside.

Why: using sizeof() with a pointer to char passed to you will return
the size of the pointer itself (which is 4 always) not the size of the
allocated space to that buffer.

Friday, October 26, 2007

شراء الولاء

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

Thursday, October 18, 2007

string in hex

Sometimes, I need to see characters of a string in Hex values:

void printhex(unsigned char* str)
{
    for (int j=0;j<strlen(str);j++)
        printf("%02X ", str[j] );
}


Thursday, September 20, 2007

pointer to const memory


char * s = "ab";
memset(s, 0 , strlen(s)); //empy string

This code won't run because s is considered pointer to const char.
As well, this applies on a statement like this:

memcpy(s, "\0\0" , strlen(s));

That's because the compiler first reserved a memory space to hold the value "ab" then it returns to you a pointer to it. i.e. this is not considered intialization of the pointer.
Of course, defining s as an array of characters will be ok, where s will be handled as a normal variable that can be inialized not as pointer to const memory.

Monday, September 17, 2007

receiving an SMS status report message

If you set the status report request TP-SRR bit when sending an SMS-SUBMIT message, you'll receive an SMS-STATUS-REPORT message when it is delivered to the recipient.
To be able to receive this message, set the mode of new message indication as the following:

AT+CNMI=3,3,2,1
or just AT+CNMI=,,,1 (as the forth parameter is the one of our concern)
then you'll get the the status report as soon as it is delivered to the recipient:

+CDS: 06000B910221815716F2709021510121807090215101718000

The PDU String consists of the following:
Octet(s)Description
06First octet of this SMS-STATUS-REPORT message.
00
TP-MR. Message-Reference identifying the previously submitted message.
0BAddress-Length. Length of the sender number (0B hex = 11 dec)
91Type-of-address of the sender number
02 21 81 57 16 F2Sender number (decimal semi-octets), with a trailing F
70 90 21 51 01 21 80TP SCTS. Service Center Time stamp (semi-octets)
70 90 21 51 01 71 80TP DT. Discharge Time (semi-octets)
00TP ST. Status of the previously sent message .

Friday, August 31, 2007

لأ، غلط، مش منطق - متلازمة صعاب المراس

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

Wednesday, August 15, 2007

Design: Top-Down or Bottom-Up?

Once, I prepared a session on practices for good design, symptoms of bad design, time given to design, giving considerable attention to interfaces, testable design, loosely coupled design, cohesive design, principles of good design, test-first design...

When I got to real life, I found myself following the same old practices of almost not going into design at all.
As before, I started writing code immediately, doing all things in main() with a just-get-it-done attitude, when things finally work I start to refactor code in the structured old fashion - just putting common behavior into functions, then when things begin to be slightly complex I eventually start ask my self what about classes, responsibilities of them, relations between them, interfaces ...etc.

I don't know how to follow all these practices and design guidelines from the start. Whatever you're aware of problem domain and requirements are neat, you never see things clearly until you get your hands into solving the problem.

It's unreasonable to start designing thing you don't know, or writing test cases (in TDD culture) for something you don't grasp fully. It's natural to improve incrementally, nothing could get perfect from one shot, so there is no one happy design you'll adhere to from the start to the end and your code will be refactored several times until it becomes mature.