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

E.Nourddine

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

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

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

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

    18

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

  1. حاولت كتابة snippet عن طريق البحث في موقع WordPress codex ، بهذا الشكل:

    global $post;
    /*
    *image حيث سنقوم بجلب المرفقات بداخل المنشور، والتي حددنا نوعها في 
    *تجدر الإشارة إلى أنه تم جلب المرفق رقم 1 أي الأول
    */
    $args = array(
        'numberposts' => 1,
        'order' => 'ASC',
        'post_mime_type' => 'image',//تحديد نوع المُرفق
        'post_parent' => $post->ID,
        'post_status' => null,
        'post_type' => 'attachment',//
    );
    
    $attachments = get_children( $args );
    //جلب رابط المُرفق الأول
    if ( $attachments ) {
       foreach ( $attachments as $attachment ) {
          $image_attributes = wp_get_attachment_image_src( $attachment->ID, 'full' );
          echo wp_get_attachment_url($attachment->ID);
          echo '<img src="' . wp_get_attachment_thumb_url( $attachment->ID ) . '" class="current">';
    }
    }
    

     

  2. سنقوم بجلب بيانات المستندات documents، عن طريق دالة get_posts، والتي سنمرر عبرها بعض المعايير الخاصة، والتي تتوفر في هذه البيانات كارتباطها مع جدول الكاتب Writer، جلب تعريفه key وبعض قيم هذا الجدول، بهذه الطريقة:

    <div class="entry-content">
    
       <h2>Documents written by this writer</h2>
            <?php 
            /*
             * document لجلب المنشورات الخاصة بالمستنداتget_posts 
             *  
             */
    
             $documents = get_posts(array(
                         'post_type' => 'document',
                         'meta_query' => array(
                          array(
                                'key' => 'writer', // تم ربط الجدول هنا بجدول الكاتب
                                'value' => '"' . get_the_ID() . '"', // جلب تعريف الكاتب 
                                'compare' => 'LIKE'
                                    )
                                )
                            ));
    
                            ?>
            <?php if( $documents ): ?>
                 <ul>
                 <?php foreach( $documents as $document ): ?>
                    <li>
                       <a href="<?php echo get_permalink( $document->ID ); ?>">
                         <?php echo get_the_title( $document->ID ); ?>
                       </a>
                    </li>
                 <?php endforeach; ?>
                </ul>
          <?php endif; ?>
    
    </div>

    لتكون نتيجة الربط بين الجدولين هي مصفوفة array.

  3. بامكانك إنشاء ملف application.html.erb  داخل المسار app/view/layouts ، ثم من داخل controller تحدد مسار ملف الواجهة view الخاص به، ولا تنسى دور الموجهات rout التي تلعب دور الموجّه بين كل من ملفات views و المتحكمات controllers.

  4. من خلال الرابط يتضح أن cattr_accessor تستعمل لتعريف الكلاس وَ مدخلاتها accessors لتعاريف الكلاس class attributes.

    مثال:

    class Person
      cattr_accessor :hair_colors
    end
    
    Person.hair_colors = [:brown, :black, :blonde, :red]
    Person.hair_colors     # => [:brown, :black, :blonde, :red]
    Person.new.hair_colors # => [:brown, :black, :blonde, :red]
  5. جرب الكود التالي، وذلك باستخدام records_array:

    sql = "Select * from ... your sql query here"
    records_array = ActiveRecord::Base.connection.execute(sql)

    records_array :هذه الوظيفة تمكنك كمبرمج من تحويل ناتج جملة الاستعلام sql إلى مصفوفة، والتي بإمكانك إعادة وتكرار قيمها للتصفح.

  6. من الجيد تصميم أيقونات على شكل vector، وهذا ما يقوم به المصممون عادة، كما أقترح عليك عمل عدة مقاسات للأيقونة الواحدة، ولعلك لاحظت ذلك من خلال مواقع تحميل الأيقونات أنها توفر عدة مقاسات للأيقونة الواحدة، وهذا لم يأتي اعتباطيا بل لإدراك أصحاب الموقع بأهمية كل مقاس للمستخدم، ومن بين المقاسات الأكثر استخداما نجد : 16px, 32px, 48px, 64px, 128px, 256px بصيغة png. وأيضا لا ننسى صيغتين ai وsvg.

    • هذه أمثلة لأزرار مشاركة المحتوى على مواقع التواصل الاجتماعي:

    bl3PT.thumb.png.fa09cdf2f8bd38dbba480a90

  7. سنقوم بتعريف conditional  -شرط- عن طريق ifproofread\ وَ hangemarker/.

    بطريقة أخرى يمكننا استعمال color{red} some text \normalcolor\ حيث تمكّننا هذه الخاصية من تغيير لون النّص بشكل مؤقت، وهذه هي شفرة الكود:

     

    \documentclass{article}
    
    \usepackage[x11names]{xcolor}
    
    \newif\ifproofread
    
    
    
    
    \newcommand{\changemarker}[1]{%
    \ifproofread
    \textcolor{red}{#1}%
    \else
    #1%
    \fi
    }
    
    \begin{document}
    \proofreadfalse  % All is accepted so far
    
    Here is something. \changemarker{And this is added by me}
    
    \proofreadtrue  % From now one, this is not yet confirmed. 
    
    
    Here is something. \changemarker{And this is added by me and was not yet accepted}
    
    \end{document}

     هذه نتيجة عملنا:

    7LQ3m.thumb.jpg.3bb435673b59beeb0e3986bc

  8. بإمكانك الاستعانة بهذا الكود، والذي يتيح لك إضافة خانة في الجانب الأيمن للجدول وبالتالي إضافة صورة -أيقونة- بداخله:

    - الكود:

    \documentclass{article}
        \usepackage[margin=25mm,showframe]{geometry}
        \usepackage{graphicx}
        \usepackage{multirow,tabularx}
    
    \newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}
        \begin{document}
    
    {    \renewcommand{\arraystretch}{1.5}
    \noindent%
    \begin{tabularx}{\textwidth}{|P{3cm}|>{\centering\arraybackslash\bfseries}X|P{3cm}|}
        \hline
    \multirow{3}*[2pt]{%
        \includegraphics[width=2.7cm,height=2cm]{example-image-a}}\smallskip~
        &   \rule[-3mm]{0pt}{9mm}
            Internal and Confidential Document\@confidentialitynotice 
            &   \multirow{2}*[2pt]{%
                \includegraphics[width=2.7cm,height=2cm]{example-image-b}}  
                            \\  \cline{2-2}
        &                                       
            &               \\
        &   Lorem Ipsum is simply dummy text%\@title     
            &               \\  \cline{1-1}
    R\&D        &       &   \\  \hline
    \end{tabularx}
    }
        \end{document}

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

    32KFd.thumb.png.92fd9ea6112a07f317d5ab5b

    * ملاحظة: استعملت الصورتين AوB لإعطاء المثال فقط.

  9. هناك طريقة لعمل ذلك تدعى بـ hacky svg وبما أنك لست مبرمج سأحاول تبسيط الأمر لك.

    وكتعريف لامتداد SVG فهو ملف مبني على بنية XML مما يعني أنه بإمكانك التغيير في إعدادات الملف انطلاقا من الملف النصي والوسوم الموجودة بداخله، من خلال محرر نصوص أو من المتصفح باستخدام Inspect element، من بينها مقاسات الملف، بهذه الطريقة:

    • تغيير المقاسات حسب النسبة المئوية:

    uoLfh.thumb.png.b2f2478daee6ac89fd64483f

    • حسب إعطاء قيم للعرض والطول بـ px:

    LK3jp.thumb.png.e381f1dd97261ea0a3d6f50a

    *ملاحظة: القيم معلمة بالدوائر الحمراء في الصور.

  10. في التصميم هناك أمر علينا الانتباه له، ألا وهو دقة المشروع 'the resolution'، فهي ما يُحدد جودة الصورة الناتجة عند الانتهاء، وعموما قيمتها هي 72 للوثائق والصور المصممة قصد عرضها على الحاسوب أو المواقع، بينما نحددها في 300 للتصاميم التي تصمم بغرض الطباعة سواء على ورق أو ملصقات...

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

    قم بمراجعة الدقة :

    • حدد الصورة، أو النص.
    • من القائمة  Image > Print Size.

    screen_shot_2012-05-14_at_2.54.52_pm.thu

    • ستظهر النافذة:

    screen_shot_2012-05-14_at_2.54.04_pm.thu

    غيّر فيها حسب الحاجة.

     

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

    بالاضافة إلى أن photoshop يوفر امكانية الحفظ على شكل ملفات Psd التي من الممكن نقلها واعادة استعمالها.

    Gimp يبقى إلى حد ما محدود بالمقارنة مع Photoshop.

  12. نعم، بالإمكان الحصول على نفس النتيجة فقط اتبع الخطوات التالية:

    • من خلال القائمة View → Show Transparency Grid سنظهر شفافية الشبكة على البرنامج أو من خلال الاختصار Shift+Ctrl+D.
    • من نافذة الشفافية أنقر على العلامة المبينة في الصورة.
    • ننسخ لون الملء.
    • تعويض الظل باستخدام Transform effect.
    • نخفض قيمة شفافية Stroke إلى 0.

    6joOk.thumb.gif.310c4374ff389828bddc30c4

    نسحب التأثير إلى لائحة التأثيرات على البرنامج ونطبقها على النص.

    LByPm.thumb.gif.a534eddd5485f837f83f9bd6

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

    يمكنك الاستعانة بهذا الرابط الذي يوضح التقنيات المتبعة في اختيار الخطوط المتناسقة، كيفية وضعها مع بعضها البعض.

  14. في الأصل لوحة المفاتيح كانت على ألة الكتابة المتنقلة، والتي كانت تستعمل وإلى فترة غير بعيدة إلى أن غزى الحاسوب هذا الميدان فتم الاستغناء عنها:

    s7k8n.thumb.png.d4c2f29382f3f5ba384e5810

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

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

    j3z9r.thumb.jpg.8f675041710502e92cca3030

    • أعجبني 1
  15. first هي قيمة عددية، بينما 12و11 عناصر من مصفوفة، ويمكن دمج  القيم عبر الكود الآتي باستخدام []، هكذا:

    self.lst = l1 + [first] + l2

    سنستعمل خوارزمية numerous quicksort algorithms من أجل إدماج عنصر عددي مع مصفوفة:

    algorithm quicksort(A, lo, hi) is
        if lo < hi then
            p := partition(A, lo, hi)
            quicksort(A, lo, p - 1)
            quicksort(A, p + 1, hi)
    
    algorithm partition(A, lo, hi) is
        pivot := A[hi]
        i := lo        // place for swapping
        for j := lo to hi - 1 do
            if A[j] ≤ pivot then
                swap A[i] with A[j]
                i := i + 1
        swap A[i] with A[hi]
        return i

    في لغة Python ستكون بالشكل الآتي:

    def quicksort(A, lo, hi):
        if lo < hi:
            p = partition(A, lo, hi)
            quicksort(A, lo, p-1)
            quicksort(A, p+1, hi)
    
    def partition(A, lo, hi):
        pivot = A[hi]
        i = lo
        for j in range(lo, hi):
            if A[j] <= pivot:
                A[i], A[j] = A[j], A[i]
                i += 1
        A[i], A[hi] = A[hi], A[i]
        return i

    وبعد التجربة، سنحصل على النتيجة:

    >>> lst = [3,1,2,2,1,3,6,7,5,4,8]
    >>> quicksort(lst, 0, len(lst)-1)
    >>> lst
    [1, 1, 2, 2, 3, 3, 4, 5, 6, 7, 8]
  16. يمكن استعمال دالة ()any  للتأكد من ذلك عن طريق:

    any(o is a for o in l)
    

    وتعطينا:

    x in s
     
    True تعيد
    S داخل xفي حال كان 
    عكس ذلك else و

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

    class IdentityWrapper(object):
        def __init__(self, ob):
            self.ob = ob
        def __eq__(self, other):
            return other is self.ob

    استخدام دالة ()any:

    class IdentityList(list):
        def __contains__(self, other):
            return any(o is other for o in self)

    مثال تطبيقي للكلاس:

    >>> il = IdentityList(l)
    >>> a in il
    False
    >>> a in IdentityList(l + [a])
    True

     

    • أعجبني 1
  17. السبب في الخطأ أن اسم الملف يحتوي على Slashes، مما ينافي قواعد أسماء الملفات على النظام، ألق نظرة على اسم الملف:

    SCORE-(28/12/2015)-(21-05-09).txt'

    لذا سنحاول تفاد ذلك، عبر الكود:

    a, b = time.strftime("%d-%m-%Y"), time.strftime("%H-%M-%S")
    c = ("SCORE"+"-"+"("+a+")"+"-"+"("+b+")")
    c = str(c+".txt")

    وبطريقة أخرى أكثر ضماناً:

    c = time.strftime("SCORE-(%d-%m-%Y)-(%H-%M-%S).txt")

     

    • أعجبني 1
  18. أعتقد أن المكتبة المعتمدة في الكود الخاص بك لم يتمّ تحديثها منذ مدة، ما جعل البرنامج يصادف بعض الأخطاء، لكن بالمقابل هناك (run(order=N تعمل بشكل جيد، والتي سنستخدمها بالشكل التالي:

    import pytest
    
    @pytest.mark.run(order=3)
    def test_three():
        assert True
    
    @pytest.mark.run(order=4)
    def test_four():
        assert True
    
    @pytest.mark.run(order=2)
    def test_two():
        assert True
    
    @pytest.mark.run(order=1)
    def test_one():
        assert True

    ستلاحظ ظهور الرسالة التالية:

    test.py::test_one PASSED
    test.py::test_two PASSED
    test.py::test_three PASSED
    test.py::test_four PASSED

    مما يعني أن العملية مرت دون أي خطأ.

  19. في حالتك، سنستعمل:

    a[re:test(@id, "^hypProduct_[0-9]+$")]

    وهذا مثال تطبيقي:

    >>> from lxml.html import fromstring
    >>> 
    >>> data = '<a id="hypProduct_10">link1</a>'
    >>> tree = fromstring(data)
    >>> tree.xpath('//a[re:test(@id, "^hypProduct_[0-9]+$")]', namespaces={'re': "http://exslt.org/regular-expressions"})[0].attrib["id"]
    'hypProduct_10'

    مصادر:

    • أعجبني 1
  20. سننشئ  مستطيل من خلال Extensions → Render → Function Plotter  بالإعدادات التالية:

    9BMds.thumb.png.9c6f183a0569328a3f29c846

    سنحصل على شكل مشابه بهذا:

    TZAwE.thumb.png.7680911d2566228a5063995c

    ننسخ الشكل مع تغيير لونه إلى الأحمر:

    iwjnX.thumb.png.2b047111b56a8371d26fdf87

    نضيف أشكال ملوّنة بين الخطوط السابقة للحصول على:

    K7JgD.thumb.png.01aee771d2f23dd1fcac819e

    بعد نسخ الشكل الكلي، وتغيير الألوان، نحصل على:

    LrmhK.thumb.png.362d175523484124048ed347

    وهو شكل لمركب ADN.

  21. نعتبر الشكل التالي على برنامج Gimp:

    xgOff.thumb.png.2b3aed616244f31612ece2b1

    من خلال القائمة Layer > Transparency > Alpha to Selection نفعّل نمط Alpha-channel

    gGC3I.thumb.png.3caacfa04ca2b08bfed343fe

    نعكس الجزء المحدد من خلال: Ctrl+I.

    نملأ الخلفية بلون ما.

    نعكس الجزء المحدد مرة أخرى من خلال: Ctrl+I.

    نحذف الجزء المُحدد من خلال زر Del.

    lN1A7.thumb.png.c268f21030edbaa80f623e16

    يمكن أن نحصل على نصف شفافية في الجزء الجانبي للصورة.

    DHtSM.thumb.png.e19f1acbfc1ea4e28855e519

     

×
×
  • أضف...