პლაგინი jQuery-ისათვის (“methods”, “handlers” და “settings”)

გაუმარჯოს 😉

აღარ დავიწყებ ახსნას თუ რა არის jQuery და რატომ უნდა გამოვიყენოთ იგი, რადგან ეს ყველამ კარგად ვიცით, ამიტომ ეგრევე საქმეზე გადავიდეთ 😉

ამ ჩანაწერში ვისაუბრებ და გასწავლით როგორ შევქმნათ ჩვენი ახალი პლაგინი jQuery-ისათვის ანუ რომელიც მუშაობს jQuery-თან ერთად.
ყველაზე საინტერესო ის იქნება, რომ ამ პლაგინში მოვათავსებთ “methods”-ებს, “handlers”-ებს და რათქმა უნდა “settings”-ებს…

როგორც ვიცით პლაგინი იწერება ცალკე JS ფაილში, მაგალითად myPlugin.js, რომელსაც “head”-ში გამოვიძახებთ jQuery-ის შემდეგ…

ესეიგი ვქმნით ახალ ფაილს myPlugin.js-ს და ვწერთ მასშივე :

თავიდან ვახდენთ ფუნქციის დეკლარირებას:

ამის შემდგომ მასში ვათავსებთ პლაგინისთვის საჭირო კოდს.
თუკი შევქმნიდით უბრალო და მარტივ პლაგინს მეთოდების, სეთინგებისა და ასეშედეგ სირთულეების გარეშე საკმარისი იქნებოდა მხოლოდ თვითონ პლაგინისვე ფუნქციის ჩასმა.

მაგალითად:

ეხლა აგიხსნით რახდება…
პლაგინის დეკლარირება ხდება შემდეგი პრეფიქსით “$.fn.” და შემდგომ პლაგინის სასურველი სახელი ანუ ამ შემთხვევაში “myPluginName” და მასში მოთავსებულ ფუნქციაში შეგვიძლია ნებისმიერი ოპერაციების შესრულება.
ასევე პლაგინის ფუნქციაში “this” ტოლია იმისა რასაც პლაგინი “მივაჯაჭვეთ” ანუ უფრო თვალსაჩინო და გასაგები რომ იყოს ვნახოთ როგორ ვიყენებთ ამავე პლაგინს.

როგორც ზედა მაგალითში ხედავთ პლაგინი მივამაგრეთ ტეგ div-ს, რომლის id-ეც არის “myDiv” (“#” როცა id და წერტილი ანუ “.” როცა class)
თუკი ამ მაგალითს გავუშვებთ ამოქმედდება პლაგინი, რომელიც ამოიღებს div-ის შიგთავს ანუ ტექსტს “რაღაცა ტექსტი” და გვიჩვენებს alert-ში.

ლეგენდა სამგორზე

ლეგენდა მოგვითხრობს, რომ ლოჭინის ხევში ცალხელა მოხუცი ცხოვრობდა, რომელსაც ქალაქისთვის მტრის შემოსევის შეტყობინება ევალებოდა, – მაღალ სვეტზე ცეცხლს ანთებდა. ერთხელ მან სიკვდილისაგან იხსნა შვლის ნუკრი და თავის ქოხში წაიყვანა, სადაც თავის შვილებთან ერთად ზრდიდა. მამის გარდაცვალების შემდეგ, მისი საქმიანობა ვაჟებმა განაგრძეს. ერთ დღეს, როცა ამ ადგილებში მტერი გამოჩნდა, უფროსი ძმა სვეტზე ჩირაღდნით ავარდა, მაგრამ მტრის ისარმა გულ-მკერდი გაუგმირა და ჩამოაგდო, მეორე ძმამ სცადა ცეცხლის ატანა, მაგრამ მტრის ისარმა ისიც უსულოდ დასცა მიწაზე. მანამდე ჭაბუკმა მოასწო და ქალაქში შველი აფრინა წერილით კისერზე. ქალაქმა მტრის შემოსევა შეიტყო და ლაშქარი შეიკრიბა. შველი როცა დაბრუნდა და თავისი ძმობილები უსულოდ იხილა, თავი ქვას ახალა და თავადაც სული განუტევა. ბრძოლიდან დაბრუნებულმა ქართველებმა იპოვეს დახოცილები და სამივე ცალ-ცაკლე დაასაფლავეს. შემდეგ მეომრებმა მათ საფლავებს სათითაოდ დააყარეს თითო მუჭა მიწა. მას მერე წესად შემოიღეს, ყოველი ბრძოლის შემდეგ აქ მოდიოდნენ და საფლავებს მუჭით მიწას აყრიდნენ. ასე წამოიზარდა იმ ადგილას სამი გორა, რის გამოც იმ ადგილს სამგორი ეწოდა.

MySQL Import – მონაცემთა ბაზის იმპორტი PHP-ს საშვალებით

მოგესალმებით 😉

გთავაზობთ პატარა გამოსადეგ ფუქციას, რომლის საშვალებითაც შეძლებთ მონაცემთა ბაზების იმპორტს ანუ ინსტალირებას.

ფუნქციის გასაშვებად აუცილებელია MySQL-თან კავშირი, შემდგომ ზედა ფუნქციის გაშვება.
ფუნქციაში “$fileName”-ს უნდა მივანიჭოთ ბაზის ფაილის სახელი მაგალითად “database.sql”, ხოლო “$sqlDbName”-ს თუკი მივანიჭებთ მონაცემთა ბაზის სახელს, მაშინ იმპორტამდე მოხდება ყველა მასში არსებული ცხრილების ავტომატური წაშლა და შემდგომ იმპორტი, მაგალითად :

ფუნქციაში შეგიძლიათ ჩაამატოთ ფაილის არსებობის შემოწმება.
იმედია გამოგადგებათ, მე გავტესტე საკმაოდ დიდი მოცულობის მონაცემთა ბაზებზე და მშვენივრად მუშაობს 😉 …

JSON.parse() – უცნაური შეცდომა და მისი აღმოფხვრა

ადრეც ბევრჯერ გამომიყენებია ჯავასკრიპტში JSON.parse() და უპრობლემოდ ფუნქციონირებდა, მაგრამ საქმე იმაშია, რომ ლოკალურზე ანუ localhost-ზე არასოდეს მქონია მისი გამოყენების აუცილებლობა (ასე მგონია).

ხოდა რაშია საქმე ეს დღეები რაღაც პროექტზე ვმუშაობ სადაც აჯაქს (ajax) ვიყენებ, უფრო სწორედ აჯაქს jQuery-ის გავლით, ხოდა localhost-ზე მშვენივრად მიბრუნებდა პასუხს json-ის ფორმატში და ისეც :

პასუხი მაგალითად ვიზუალურად ასე ჩანდა :

მაგრამ როცა ამ დაბუნებულ პასუხს ვდებდი JSON.parse()-ში სინტაქსურ შეცდომას მიჩვენებდა…
აი შეცდომის ტექსტი:

SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

ხოდა მოკლედ ძალიან გამაწვალა ვერ გავიგე რა სურდა, მერე მოვაკოპირე პასუხი და notepad-ში რომ გადავიტანე აი რა გამოჩნდა:

შემდეგ თუკი PHP ფაილს utf8-ში შევინახავდი ასეთ პასუხს მიჩვენებდა :

ეს იყო ცარიელი ზონები ამიტომ ავდექი და ასეთ ხერხს მივმართე :

რომლითაც ვასუფთავებდი დაბრუნებულ პასუხს ზედმეტი სიცარიელებისაგან, მაგალითად :

ეგ იყო და ეგ, აღარანაირი შეცდომა 😉

კლასი SQL (Class) – MySql-თან სამეგობროდ

აგერ დავდებ ჩემს მიერ შედგენილ კლასს, რომლითაც ადვილად შეძლებთ mySQL-თან ერთიერთობას.
ეს მოცემული კლასი PHP ვერსია 5.3-ის შემდეგ აღარაა რეკომენდირებული, რადგანაც მერე უკვე სასურველია გამოიყენოთ PDO სტანდარტული კლასი.

კაი ხანია მე ვიყენებ ამ კლას და მშვენივრად მემსახურება (ეხლა PDO-ზე გადავედი 😉 )…
მოკლედ წაიღეთ და მოიხმარეთ მშვიდობაში 😉

გარე გვერდის შიგთავსის ამოღება და მასში ინექცია

გაუგებარი და უინტერესო სათაურია 🙂
მაგრამ საინტერესო ჯავა კოდს გთავაზობთ :

მოკლედ ქვემოდ დაწერილი კოდით შეძლებთ ნებისმიერი ონლაინ გვერდის შიგთავსის ამოღებას და შემდგომ მასში ნებისმიერი რამის ინექციას ანუ ჩაშენებას თუ როგორც ქვია 🙂

ამ ზემოთ მოცემულ ფუნქციას ვიყენებთ შემდეგნაირად :

სადაც htmlContent-ი გვერდის შიგთავსია და {INJECT_AREA} ის ამ გვერდის შიგთავსში არსებული ჩასაჭიდი ელემენტი რომელიც უნდა შეცვალოს replaceElement-მა.
და ბოლოს როცა მოხდება replace, შეგვიძლია ან write-ით გამოვამზიუროთ ან innerHTML-ით…

ასე შევძლებთ ნებისმიერი გვერდის გადმოტანას და ნებისმიერი რამის ინექციას 😉 …

CSS და IE 10 – მისი ამოცნობა და სტილის მინიჭება

როგორც ვიცით სხვადასხვა ვებ-პროგრამირების ენების, როგორიცაა JavaScript-ის და CSS-ის ან თუნდაც HTML-ის შედეგის ვიზუალურ-დინამიკური ასახვა სხვადასხვა ინტერნეტ ბროუზერებში მეტნაკლებად განსხვავებულად ხდება ანდაც სულაც არ ხდება. ყველაზე ასევთქვათ ამტანი ბროუზერია Mozila Firefox, რომელსაც თითქმის ყველა ვებმასტერი იყენებს პროგრამირებისას, ხოლო ყველაზე ბოლოს მოჩანჩალებს IE ანუ Internet Explorer-ი, ნუ ბოლოში თუ არა ყოველშემთხვევაში არ გამოირჩევა იმნაირი უნივერსალურობით როგორც სხვა ზოგიერთი…

მოკლედ რისი თქმა მინდოდა:

როგორც ვიცით სტილებში ანუ CSS-ში ვწერდით კოდს, რომელიც სპეციალურად განკუთვნილი იყო მხოლოდ IE-სთვის ანუ გვერდი იყენებდა ამ სტილს მხოლოდ იმ შემთხვევაში თუკი ინტერნეტ ბროუზერი იყო IE.
და როგორ ხდებოდა ეს მოგახსენებთ:
HTML კოდში ტეგ head-ში ვსვავდით პირობის კოდს, რომელსაც რომ გადმოვაქართულოთ “შენიშვნა პირობის” კოდი ჰქვია, რადგანაც ეს პირობა შენიშვნის სინტაქსშია ანუ ეს:

მაგრამ საქმე იმაშია, რომ მაიკროსოფტმა ბროუზერის მე-10-ე ვერსიაში გააუქმა ასეთი ტიპის პორობები ანუ ეს ზემოთ მოცემული კოდები გამოუსადეგარია ახალი ვერსიებისათვის…
გამოსავალი:
შეგვიძლია გამოვიყენოთ სხვადასხვა ჯავასკრიპტი ბროუზერის ვერსიის დასადგენად, მაგრამ მე გირჩევდით ამას:

ამ პირობის საშვალებით ძირეულ ანუ html ტეგს ვანიჭებთ ახალ კლასს “ie10″-ს ანუ <html class=”ie10”> და შემდგომ ჩვენს სტილებში მას ვიყენებთ როგორც მთავარ კლასად ანუ მაგალითად .ie10 div.test{} ან .ie10 a:hover{} და სხვა…

ეს მეთოდი გამოვცადე ყველა ბროუზერში და არანაირი პრობლემა არ შეუქმნია, მშვენივრად მუშაობს IE 10-შიც…
თუკი რაიმე ვერ მიხვდეთ მკითხეთ და ვეცდები გიპასუხოთ 😉

Force download – გადმოწერის დაძალება

მოგესალმებით,
ამ პოსტში დაგიწერთ რამოდენიმე პატარა და გამოსადეგ კოდს, რომლის საშვალებითაც შეძლებთ ფაილის გადმოწერას მისი ბმულის მითითებით ანუ ინტერნეტში განთავსებული ფაილების ძალდატანებითი გამოწერას…

საქმე იმაშია რომ ფუნქცია ავტომატურა მოახენს ფაილის თქვენს სერვერზე გამოტანას და სასურველ საქაღალეში ჩაწერას…

პირველი ყველაზე მარტივი და სტანდარტული ხერხი:

მეორე რომელიც მე უფრო მომწონს ხორციელება curl-ის საშვალებით:

და ბოლო მესამე fopen-ის დახმარებით :

Shortcut / მალსახმობი : ავტომატური გენერირება

მოკლედ, რა შეიძლება, რომ ითქვას…
ჯერ ალბად ის რომ Shortcut-ს ქართულად “მალსახმობი” ჰქვია 🙂
რატომ?
ალბათ “მალ” = “მალე” და “სახმობი” = “მოხმობა”, ლოგიკურია 😉

ხოდა რისი თქმა მინდოდა, ამ დღეებში რაღაც პროექტზე ვმუშაობდი და ისე მოხდა, რომ ეს ჩვენი “მალსახმობი”-ს სერვერიდან ანუ ვებგვერდიდან ავტომატური გენერირება დამჭირდა, ხოდა ბევრი ვიფიქრე თუ ცოტა შევქმენი ეს მინიატურული სკრიპტი, რომელიც ავტომატურად ქმნის მალსახმობის ფაილს :

IconFile-ში მიუთითეთ თქვენთვის სასურველი იკონის მისამართი, რათა მალსახმობზე აისახოს, ხოდა ისა კიდევ filename-ში მალსახმობის სახელი, რომელიც ასევე ასიახება მასზევე.
BASEURL-ში და URL-ში ამ შემთხვევაში ავტომატურად ისმება გაშვების თანავე დაფიქსირეული სრული ბმული (რომელიც ბროუზერში ჩანს).

მოკლედ გატესტეთ და ნახავთ რომ გამოსადეგი რამეა, კარგ მთქმელს კარგი გამგონი გაუგებს 🙂

სისწრაფის გამოცდა : Echo vs Print

მოგესალმებით 😉

ხშირად მინახავს დისკუსიები ინტერნეტში echo-სა და print-ზე თუ რომელი უფრო ოპტიმალურია, რომელი უფრო სწრაფია და ასეშემდეგ…
მე ვფიქრობ გააჩნია რა დროს ვიყენებთ, მაგრამ ვაღიარებ, რომ echo-ს ვანიჭებ უპირატესობას, რადგანაც მისი საშვალებით მულტი არგუმენტის დაბეჭვდვა შეგვიძლია და თანაც ბევრად მოქნილი და სწრაფია…

აგერ პატარა გამოსაცდელი სკრიპტი, რომლითაც დარწმუნდებით, რომ echo ბევრად წრაფია :

სკრიპტი გავუშვი localhost-ზე და აქ ასევე დავაჯიბრე print_r-იც და გამოცდის შედეგები ასეთია:

Echo: 0.03903
Print: 0.04666
Print_r: 0.43245

პრინციპში თითქოსდა არც ისე დიდი განსხვავებაა, მაგრამ როცა სკრიპტი დიდია და რამოდენიმე ათასი echo და print არის შიგნით, მერე უკვე მნიშვნელობა ეძლევა 😉