اذهب إلى المحتوى

E.Nourddine

الأعضاء
  • المساهمات

    1458
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    18

أجوبة بواسطة E.Nourddine

  1. من الجيد متابعة العديد من المدونات العربية والأجنبية، وإن كانت الأجنبية كثيرة،  حيث يحرص أصحاب هذه المدونات أو كتابها على نشر جديد التصميم، بما في ذلك  Photoshop، Illustrator، Gimp، Inkscape.. فتكون مدوناتهم بمثابة المرجع الذي يمكن الإطلاع عليه باستمرار عن طريق الاشتراك بالقائمة البريدية كي تحصل على تنبيهات بريدية بكل جديد عليها.

    كما أن ظهور مواقع التصميم الشهيرة، أصبح يحتم على كل مصمم مهتم بالمجال رؤية الأعمال الخاصة بمصممين محترفين، حتى يبقى على علم بالجديد، ويواكب تطور المجال، من هذه المواقع أذكر:

    المدونات:

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

  2. وظيفة ()Fill خاصة بـ DataAdapter، ونستعملها لملئ جدول مؤقت على DataSet انطلاقا من قاعدة البيانات، بالطريقة التالية:

    adaptadordatos.Fill(conjuntoDatos, "Alumnos")

    لذا يجب عليك إنشاءها:

    Dim myAdapter As MySqlDataAdapter = New MySqlDataAdapter(CadenaSQL, Conexion)
    myAdapter.Fill(conjuntoDatos, "Alumnos")

    وهذا مثال كامل لاستعمال DataSet على تطبيق Vb.net:

    Private m_DataSet As DataSet
    
    Private Sub Form1_Load(ByVal sender As System.Object, _
     ByVal e As System.EventArgs) Handles MyBase.Load
      ' Build the DataSet.
      m_DataSet = New DataSet("Student Scores")
    
      ' Build the Students table.
      Dim dt_students As New DataTable("Students")
      m_DataSet.Tables.Add(dt_students)
      dt_students.Columns.Add("StudentId", GetType(Integer))
      dt_students.Columns.Add("FirstName", GetType(String))
      dt_students.Columns.Add("LastName", GetType(String))
    
      ' Build the TestScores table.
      Dim dt_testscores As New DataTable("TestScores")
      m_DataSet.Tables.Add(dt_testscores)
      dt_testscores.Columns.Add("StudentId", GetType(Integer))
      dt_testscores.Columns.Add("TestNumber", GetType(Integer))
      dt_testscores.Columns.Add("Score", GetType(Integer))
    
      ' Populate the Students table.
      Dim student_data(2) As Object
      student_data(0) = 1
      student_data(1) = "Amy"
      student_data(2) = "Anderson"
      dt_students.Rows.Add(student_data)
    
      student_data(0) = 2
      student_data(1) = "Bob"
      student_data(2) = "Baker"
      dt_students.Rows.Add(student_data)
    
      ' Code for other insertions deleted...
    
      ' Populate the TestScores table.
      Dim testscores_row As DataRow
      ' Student 1.
      testscores_row = dt_testscores.NewRow()
      dt_testscores.Rows.Add(testscores_row)
      testscores_row.Item("StudentId") = 1
      testscores_row.Item("TestNumber") = 1
      testscores_row.Item("Score") = 98
    
      testscores_row = dt_testscores.NewRow()
      dt_testscores.Rows.Add(testscores_row)
      testscores_row.Item("StudentId") = 1
      testscores_row.Item("TestNumber") = 2
      testscores_row.Item("Score") = 94
    
      ' Code for other insertions deleted...
    
      ' Bind the DataGrid to the DataSet.
      DataGrid1.DataSource = m_DataSet
    End Sub

     

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

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

  4. الحل المناسب والأمثل في هذه الحالة، هو تمديد الخلفية حسب حجم القيمة العديدة دون تغيير تنسيق الصفحة، حتى لا تؤثر على باقي العناصر الأخرى في نفس الصفحة.

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

    مثال:

    wU7p8.thumb.png.27c0cf66e7a1382d5d10fdaa

  5. لون Progress bar يمكن تغيره على Vb.Net باستخدام الكود.

    أولاً قم باضافة هذا السطر البرمجي داخل الكلاس :

    <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)>

    الآن أنشئ عداد Timer واضف بداخله الكود التالي:

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
            ProgressBar1.Value += 1
            val -= 1
            Label2.Text = val & " Sec"
            If ProgressBar1.Value = ProgressBar1.Maximum Then
                Timer1.Enabled = False
            End If
            If ProgressBar1.Value > 23 Then
                SendMessage(ProgressBar1.Handle, 1040, 2, 0)
            End If
        End Sub

    ملاحظة: 1 للون الأخضر، 2 للأحمر و3 للأصفر.

  6. هناك العديد من المعايير التي يمكن ترتيب اللغات حسبها، نذكر منها:

    • حسب درجة أهمية اللغة، وأقصد بالأهمية هنا عدد المستخدمين لكل لغة على الموقع.
    • الترتيب حسب اسم اللغة بالانجليزية.
    • ترتيب اللغات حسب الاسم باللاتينية.
    • حسب الترتيب بمعيار Unicode الاسماء.

    هذا الترتيب مثلا تعتمد قناة BBC في إظهار اللغات على موقعها:

    ip2Gk.thumb.png.7c5bca20d54355122ca125b6

    وحسب الترتيب اللاتيني للاسم، نحصل على:

    • العربية [al-ʿarabīyyah]
    • [አማርኛ [amarəñña
    • [বিষ্ণুপ্রিযা় মণিপুরী [Bishnupriya Manipuri
    • English
    • עברית [ivrit]
    • [მარგალური [margaluri
    • [日本語 [Nihongo
    • [Русский [russkiy

    إذن ترتيب اللغة يبقى حسب المعيار المناسب لك أنت-حسب الحاجة-، ومن الأفضل اختيار معيار الترتيب حسب الاسماء باللاتينية.

  7. Non-manifold geometry هي هندسة لا يمكن تواجدها في العالم الحقيقي، وإنما هي خيالية، تستعمل في أغلب الأحيان في أفلام الخيال العلمي، وكذا طابعات 3D، تتميز بـ:

    • إظهار آثار الانكسار.
    • محاكاتها للسوائل.
    • طباعة 3D.

    أمثلة:

    xlpHr_(1).thumb.png.9a6318c471628e2ad455

    58k1h_(1).thumb.png.b2db6f21334ba7897e28

    0f0qp_(1).thumb.png.bc29cd5f1a04cb17af5f

    KMRYd.thumb.png.737c77a3b285cc6ac6adb4ad

    myaps.thumb.png.d5d4368f5d2ebb12b1df4795

    nYRuR.thumb.png.7c4604f79b1f38b13b683d38

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

     

    • أعجبني 1
  9. else تستعمل في الجزء الأخير من دالة التأكد if، ويمكن أيضا استخلاص فائدتها مع try من خلال Handling Exceptions  على الموقع الرسمي لـ Python، حيث أنه من الجيّد استعمالها مع try لتفادي أي exception غير متوقع من قبل المبرمج، ومن الممكن تجاوز try ورفع exception توقف البرنامج أو التطبيق، وهذه طريقة استعمالها:

     try:
            operation_that_can_throw_ioerror()
        except IOError:
            handle_the_exception_somehow()
        else:
             # we don't want to catch the IOError if it's raised
            another_operation_that_can_throw_ioerror()
        finally:
            something_we_always_need_to_do()

    وَ:

    for arg in sys.argv[1:]:
        try:
            f = open(arg, 'r')
        except IOError:
            print 'cannot open', arg
        else:
            print arg, 'has', len(f.readlines()), 'lines'
            f.close()

     

  10. يمكن التأكد من وجود عنصر في مصفوفة أم لا، عبر استخدام  دالة in والتي تُرجع قيمة true أو false، بهذا الشكل:

    3 in [1, 2, 3] # => True
    

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

    matches = [x for x in lst if fulfills_some_condition(x)]
    matches = (x for x in lst if x > 6)

    أو:

    matches = filter(fulfills_some_condition, lst)
    

    البحث عن عنصر، حيث سنحصل على أول نتيجة في حال كان العنصر متكرراً بداخل المصفوفة:

    next((x for x in lst if ...), [default value])
    

    إرجاع مكان تواجد العنصر -index- داخل المصفوفة:

    [1,2,3].index(2) # => 1
    [1,2,3].index(4) # => ValueError
  11. يمكن استعمال هذا الأمر في الطرفية:

    python -m py_compile script.py
    

    حيث أن script.py هو ملف السكريبت، ويقوم الأمر السابق بالتأكد من خلو الكود من أي خطا، عبر تفحصه سطراً سطرا أي أنه يعمل compiling.

    هذه بعض المصادر:

  12. يمكنك استعمال ()is، حيث يمكن التأكّد من مرور مؤشر الفأرة فوق العنصر أو الوسم، حيث تُرجع كقيمة true أو flase، وهذا مثال بسيط عن كيفية استعمالها:

    var isHovered = $('#elem').is(":hover"); //  true أو false

    كما يمكن استعمال :

    var isHovered = !!$('#up,#down').
                        filter(function() { return $(this).is(":hover"); }).length;
  13. أولا سيتوجب عليك المرور على جميع عناصر القائمة المنسدلة، والتأكد عبر البحث عن هذا العنصر انطلاقا من قيمته، ليتم حذفه في حال كان هو العنصر المبحوث عنه، إليك الكود:

    $(".ct option[value='X']").each(function() {
        $(this).remove();
    });

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

    $(".ct option[value='X']").remove();

    * ملاحظة: X هي قيمة العنصر بداخل القائمة المنسدلة.

  14. نعم يمكن إدراج حقل مع امكانية التحقق عن طريق tooltip validation msg.

    المثال على JSFiddle.

    كود jQuery :

    function validate(el) {
      var regex = /^\d+$/g;
      var valid = regex.test(el.value);
      if (!valid) {
        
        // Check if popover is already visible to handle flicker effect.
        if ($("#txtInput").next('div.popover').length == 0) {
          
          $('#txtInput').popover({
            placement: 'bottom',
            content: 'This is not a valid entry'
          }).popover('show');
          
        }
      } else {
        $('#txtInput').popover('hide');
      }
      

    كود html:

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
    <link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
    <script src="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
    
    
    <input type="text" id="txtInput" onkeyup="validate(this)">

    مراجع:

    Documentation.

    Check visibility

     

  15. تتدخل عوامل عدة في تباعد الكلمات في السطر الواحد، منها التباعد بين الأحرف، البعد بين الكلمات بالإضافة إلى نوع الخط المُستعمل.

    وهذه بعض الخصائص التي يمكن من خلالها ضبط المسافة المستعملة في الكلمات، عن طريق تغيير هذه الخصائص:

    • \fontdimen1 : للخط المائل.
    •   \fontdimen2:  المسافة بين الكلمات.
    • \fontdimen3:  تمديد الكلمة.
    • \fontdimen4:  تقليص الكلمة.
    •  \fontdimen7: مساحة إضافية.
    •  \xspaceskip: إضافة فراغات.

    مثال:

    \documentclass{article}
    \usepackage[margin=1in]{geometry}
    \usepackage{lipsum}
    \begin{document}
      \newdimen\origiwspc%
      \newdimen\origiwstr%
      \origiwspc=\fontdimen2\font% original inter word space
      \origiwstr=\fontdimen3\font% original inter word stretch
      \lipsum[1]% normal text
      \fontdimen2\font=0.2ex% inter word space
      \lipsum[1]% decreased inter word space
      \fontdimen2\font=\origiwspc% (original) inter word space
      \fontdimen3\font=0.1em% inter word stretch
      \lipsum[1]% decreased inter word stretch
      \fontdimen3\font=\origiwstr% (original) inter word stretch
      \fontdimen2\font=1em% inter word space
      \lipsum[1]% increased inter word space and stretch
      \fontdimen2\font=\origiwspc% (original) inter word space
      \fontdimen3\font=\origiwstr% (original) inter word stretch
      \lipsum[1]% original/normal text
    \end{document}

    نتيجة الكود أعلاه:

    VCEfb.thumb.png.9e985ed095f0500835b9450d

     

  16. إمكانية قراءة جدول من وورد وتضمينه تلقائياً في وثيقة LaTeX تعتبر إلى حد الساعة غير ممكنة، لكن يمكن كتابة جدول بالكود على برنامج LaTeX، على أن يكون الجدول بعمودين، أحدُها للفارسية والآخر للإنجليزية، وذلك باستعمال خاصية multicol التي توفر إمكانية إدراج أعمدة عدة في نفس الجدول، لتكون نتيجة ذلك:

    GKeUR.thumb.png.ec758951654f778212551e98

    الكود:

    \documentclass{article}
    \usepackage[margin=2cm]{geometry}
    \usepackage{longtable,csvsimple,booktabs}
    \usepackage{fontspec} % for the Latin alphabet
    \usepackage{multicol}
    \usepackage{array}
    \usepackage{xepersian}
    \settextfont{Nazanin} % font for Persian
    \setmainfont[Script=Arabic]{Times New Roman} % Latin Alphabet
    
    \begin{filecontents*}{xtable.csv}
    English, Persian
    Euclidean geometry, هندسۀ اقلیدسی 
    Hippocrates, بقراط
    Poetica,بوطیقا  
    Plato, افلاطون
    Al-Hazem, ابن رشد
    ...
    more content here
    \end{filecontents*}
    
    \newsavebox\ltmcbox
    
    \begin{document}
    \begin{multicols}{2}
    \setbox\ltmcbox\vbox{
    \makeatletter\col@number\@ne
    \csvreader[
        longtable=rl>{\beginR}l,
        table head= 
        & \bfseries English & \bfseries فارسی \\
        \midrule\endhead
        \bottomrule\endfoot,
        late after line=\\]%
        {xtable.csv}{English=\English, Persian=\Persian}%
        {\thecsvrow & \English & \Persian}
    \unskip
    \unpenalty
    \unpenalty}
    
    \unvbox\ltmcbox
    \end{multicols}
    \end{document}

     

  17. بناء مدينة باستخدام Blender ممكن، لكنه ليس بالأمر السهل، حيث سنحتاج إلى الكثير من المجسمات والكثير من التأثيرات للوصول إلى النتيجة النهائية، لكن  سأحاول إعطاء لمحات عن مختلف مكونات الوسط الحضري -المدينة-،  وهذه بعض الصور المصمم بـ Blender:

    PPtqZ.thumb.jpg.3bac066bf7692e38fde946c2

    lPRXh.thumb.jpg.17cf565637f0080018addfb2

    tTAW3.thumb.jpg.73a1c8a5822528d657cbccd7

    F9dAf.thumb.jpg.59d2a9287850aac6ac67efb7

    يساعد Block Wall Builder على بناء مكونات المباني - حائط ونافذة...-:

    sexqb.thumb.gif.d5f8469226fd8e00275efa27

     نستعمل Window Generator 2 لنباء نوافذ زجاجية وبأشكال مختلفة:

    YOhaP.thumb.jpg.18500ae23ba39411f03ddd80

    وَ Jamb Generator لإعطاء الأبواب تأثير جذاب:

    Smmi0.thumb.jpg.099e6cbed8ad50df7f685982

    وَ Archimesh لصنع دولاب ومختلف مرافق البيت من الخشب:

    aNegK.thumb.jpg.3f22845cd69099ffd8cd9d5d

    ثم:

    VOB6B.thumb.jpg.7e1fe81713dcd69f8142979f

    صنع مباني بتأثير يميل إلى مباني الرسوم المتحركة:

    XoY4G.thumb.jpg.e32c6c956d7922026c7a4b32

    تأثير الخشب :

    I9apd.thumb.png.90a7b1c45045e19ba639d48e

    صنع أشكال أنابيب:

    Al4f7.thumb.jpg.13b01ef3d406267a12c66732

    صنع تضاريس على شكل جبال:

    zAAhp.thumb.gif.366cb1bde705bb15947ef723

    أشجار:

    AclFu.thumb.png.9bb7702d448542cb562f35f2

    ثم:

    Rub5b.thumb.jpg.5a457c45e1efd62ffad5693f

    LR4jg.thumb.jpg.18eb74baf2915918311c92c8

    cxzNf.thumb.jpg.1f137b9123e05e7a0c7992e9

    نباتات:

    io8F6.thumb.png.b113685818143f7b2d452759

    إضافة ال حجارة من خلال  Add Rocks

    zuZ0R.thumb.png.32daf7c88ffc0aadab0e088c

    هذا الفيديو مفيد لك:

     

    • أعجبني 1
  18. يمكنك التحكم في مجموعة من النقاط عن طريق تحديدها كلها والتعامل معها على أساس نقطة واحدة ثم التغيير عليها، وهذه بعض الاختصارات الخاصة بلوحة المفاتيح:

    • Alt+Space : تُغيّر منحى التوجه إلى Normal.
    • S: اختصار لـScale Selected.
    • Z: تعيين المحور Z .
    • Enter: تأكيد الخطوة.

    وعن طريق الفأرة:

    z98mB.thumb.png.fd31903cde04daf031bf2cf2

    بعد الضغط بزر الفأرة الأيسر ستظهر هذه النافذة المتحكمة في الجزء المُحدّد للتغيير في خصائصه:

    ujyh3.thumb.png.621fa972d01cf6ee03630db1

    للحصول على النتيجة التالية:

    blz7D.thumb.png.73a059010be21951e755f96c

  19. نعم من الممكن الحصول على نفس التأثير وتأثيرات أخرى كثيرة، وذلك من خلال الولوج  إلى القائمة Decimate->Collapse وَ Decimate->Un-Subdivide.

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

    5EP30.thumb.png.bb0fec6a553e76e4e3e224dd

  20.  انطلاقا من جهة الرؤية الأمامية  Numpad 1 أنشئ منحنى عمودي، من خلال الاختصار Alt+C.

    • حدد النقطة في المركز، وبأداة التحرير (O)، حدد حجم الدائرة المحيطة بالمجسم":

    1VhcW.thumb.png.459adda27d20f47866d7e44f

    • تحديد مستوى plan لتحوّل منحنى الشكل:

    J3PgP.thumb.png.45a3beb5bd2d7509e318a750

    • إبطال  التحرير على الشكل، ونسخ الشكل للحصول على:

    mpcaR.thumb.png.6ce95d598bc144968eb33a02

    • حرّك الأشكال، ثم فعّل أداة التحرير، لكن هذه المرة سنمسك برأس الأشكال من فوق ونديرها حول المحور X :

    bYflr.thumb.png.ba4efa86b6596ed08ed78104

    • بعد بعض التغيرات على الأشكال حتى تظهر في شكلها الأخير:

    SseoA.thumb.png.d485e0752a44fe37875f0bd1

  21. قد يبدو الأمر صعبًا في البداية، ولكن الصعوبة الحقيقية في التغييرات البسيطة التي تمكّن من الحصول في آخر المطاف على زخرفة ثلاثية الأبعاد جميلة.

    • نبدأ بشكل منحني، من خلال القائمة extra objects-->Curves Galore:

    43uey.thumb.jpg.d87b833d295a02d4f1067688

    • إضافة دائرة للشكل مع التغيير الطفيف في شكل الانحناءات:

    nGixd.thumb.jpg.b4dbb23537a5fa4ce25c2970

    • تحويل الشكل إلى شكل ممتلئ، أي 3D:

    UuNNm.thumb.jpg.13b3c0edce79f6eec8fdff2f

    • قم بتشويه المجسم من الجهة العلوية:

    vW27I.thumb.jpg.96daed4f684d406e98726e20

    • أنشئ شكل مقسّم إلى 8 طبقات، حتى يسهل التغيير على كل طبقة على حدى:

    c25jB.thumb.jpg.1007e2fb714ab5cab1a9be90

    • غيّر كل طبقة لوحدها، لنحصل في الأخير على هذه الزخرفة:

    Rom3N.thumb.jpg.4acece5ce7756e2184bb5df6

    • ثم

    9yuN8.thumb.jpg.7651b6a4b0cf0b55caaaf50a

    • رؤية من فوق:

    2pAAy.thumb.jpg.3825b2a2fa53afa75800dd61

  22. يمكنك الحصول على مجسم برميل باتباع الخطوات التالية:

    • أنشئ شكل أسطواني مكون من عدة أجزاء -16جزء-، أي دائرة مكونة من 16 جزء، كما هو مبيّن:

    4jNhU.thumb.gif.f679d58363e698dc89f0e7d2

    1. إنشاء دائرة عن طريق الاختصار Shift+A، وحدّد عدد الشرائح المكوّنة لها في 16 شريحة.
    2. تغيير عرض الشرائح عن طريق الاختصار E, مع التغيير في عرض الشرائح.
    3. تحديد شريحة واحدة -وجه واحد- ومسح باقي الأوجه الأخرى.
    4. بعد الضغط على زر Esc لإنهاء  التغيرات على الشكل ستحصل على شكل البرميل.
    • هذه طريقة ثانية لبناء مجسم البرميل:

    وذلك عن طريق استعمال array modifier:

    WYysj.thumb.gif.55d2d8ce38310ff378d50f3b

    بما أن البرميل مكون من 16 جزء أي أن زاوية دوران كل جزء ستكون هي خارج  قسمة 360/16=22.5.

    بعض إضافة تأثيرات أخرى على البرميل، ستكون هذه هي النتيجة النهائية:

    wDhIp.thumb.jpg.178faa764a5bd023884f29ee

     

  23. هناك العديد من الطرق التي تجعلك تحصل على نفس الشكل بنفس المظهر من  أسهلها وأكثرها استعمالا Smooth لتحصل على المظهر:

    g1NvM.thumb.png.ac66330454a9776651f718de

    من خلال نافذة Modifier Added غير في إعدادات الشكل كما توضح الصورة:

    1zYl6.thumb.png.941585eaaf4f4f95cb6a02cb

    • هذا الفيديو للاستئناس به:
×
×
  • أضف...