مولد روبي ميمي لجذب الاهتمام باللغة

صورة

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

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

بادئ ذي بدء ، أردت إنشاء مشاركات في شكل ميمات ، ولكن مع محتوى تعليمي.

مثل ذلك
صورة

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

صورة جيل مع RMagic


حتى لا يزعجك كثيرًا في التقديم ، تم اعتماد جوهرة `rmagick` الموجودة بالفعل كأساس. بفضل هذه الأحجار الكريمة ، يمكننا بسهولة تعديل الصور.

في الكود أدناه ، قمت بإنشاء كائنات جديدة (نصوص) في شكل صورة ووضعتها على الصورة التي تم التقاطها كأساس.

رمز المنطق الرئيسي
 img = Magick::ImageList.new("1.jpg") title = Magick::Draw.new title.pointsize = 126 title.font_weight = Magick::BoldWeight title.fill = 'white' title.gravity = Magick::CenterGravity title.annotate(img, 0, 0, 0, -400, first_text) descritpion = Magick::Draw.new descritpion.pointsize = 72 descritpion.font_weight = Magick::BoldWeight descritpion.fill = 'white' descritpion.gravity = Magick::CenterGravity descritpion.annotate(img, 0, 0, 0, 300, second_text) img.write("actual_mem/#{first_text}.jpg") 


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

واجهة الويب في سيناترا


الآن كان من الضروري تنفيذ الواجهة. من أجل عدم نشر مشروع Rails كبير من أجل تطبيق صغير ، قررت استخدام إطار Ruby آخر يسمى Sinatra

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

سيناترا تطبيق إطلاق الملف
 require 'sinatra' get('/') do haml :index end post('/') do if params[:title] && params[:description] require 'rmagick' b = params[:description].scan(/[-a-zA-Z-0-9_.,()—-]+/) second_text = "" b.each_with_index do |text, index| if index.modulo(4) == 3 second_text += text + "\n" else second_text += text + " " end end img = Magick::ImageList.new("../1.jpg") title = Magick::Draw.new title.font = '' title.pointsize = 126 title.font_weight = Magick::BoldWeight title.fill = 'white' title.gravity = Magick::CenterGravity title.annotate(img, 0, 0, 0, -400, params[:title]) descritpion = Magick::Draw.new descritpion.font = '' if b.size > 20 descritpion.pointsize = 48 else descritpion.pointsize = 72 end descritpion.font_weight = Magick::BoldWeight descritpion.fill = 'white' descritpion.gravity = Magick::CenterGravity descritpion.annotate(img, 0, 0, 0, 300, second_text) img.write("../actual_mem/#{params[:title]}.jpg") end haml :index end 


يمكنك العثور على وثائق حول sinatra على الموقع الرسمي ، ولن أشرح الكثير هنا.
أنا ثمل CSS Grid قليلاً وباستخدام haml ، قمت بتكوين صفحة إدخال البيانات لإنشاء meme

كود هامل:
 !!! 5 %html(lang="en") %head %title C  %link{:rel => "stylesheet", :type => "text/css", :href => "/style/main.css"} %body %h1    %form{ :action => "/", method: "post"} %label   %input{ name: "title" } %label   %textarea{ name: "description" } %input{type: "submit"} 


كود CSS:
 form { display: grid; grid-template-columns: 200px 1fr; grid-gap: 16px; } label { grid-column: 1 / 2; } input, button { grid-column: 2 / 3; } 


العرض في المتصفح:
صورة

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

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


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

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

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

شفرة المصدر


رابط جيثب

اختيار روبي


صورة

Source: https://habr.com/ru/post/ar468383/


All Articles