LinGEO ინგლისურ/ქართული ლექსიკონი iPhone – სთვის

Screen shot 2009-09-22 at 7.01.54 PMროგორც იქნა ერთ წლიანი პაუზის შემდეგ ჩემს მიერ დაწყებულმა და შემდგომ მიტოვებულმა პროექტმა – LinGEO შეიძინა პროდუქტის სახე და ახლა უკვე მომხმარებლებს შეუძლიათ მისით სარგებლობა.

პირველად ეს პროექტი გავახმაური ერთი წლის წინ როდესაც მას ჯერ კიდევ ერქვა LinGO, მას შემდეგ ვეღარ გამოვნახე შესაბამისი რესურსი რომ მიმეყვანა ეს პროექტი ბოლომდე. სულ ახლახანს როდესაც კვლავ გადავწყვიტე აქტიური ბლოგერობა და ზოგადად ოპენ სორს პროექტებზე მუშაობის გაგრძელება, გავხსენი ამ პროექტის საწყისი კოდიც(იხ. LinGEO on GitHUB). ამის მიზეზი ერთის მხრივ იყო ჩემი სურვლი რომ დამესრულებინა პროექტი, ხოლო მეორეს მხრივ ჩემი კოლეგისა და მეგობრის ლაშა დოლიძის დაინტერესება.

კოდის გახსნიდან სულ რაღაც სამი კვირის შემდეგ სახეზე გვაქვს უკვე დასრულებული პროექტი. ამისათვის განსაკუთრებულ მადლობას ვუხდი ლაშას რომლის უშუალო დამსახურებაც არის ამ პროექტის საბოლოო პროდუქტად ქცევა. გარდა უმნიშვნელოვანესი პროგრამული დეტალების დახვეწისა მან განათავსა პროდქუტი Apple – ს App Store – ში(პროგრამა ამჯერად მოლოდინის რეჟიმშია და ველით დასტურს), ასევე შექმნა Cydia – ს რეპოზიტორი არაოფიციალური iPhone – ს მომხმარებელთათვის.

ასევე მინდა მადლობა გადავუხადო Toto – ს შესანიშნავი კომენტარებისა და შენიშნვებისათვის რომელიც გააკეთა ამ პროდუქტთან დაკავშირებით.

ტეგები: , , , ,

Java: variables, stack and heap

პრეზენტაცია Java – ს ცვლადების და მათთან დაკავშირებული საკითხების შესახებ.

ტეგები: , ,

JavaScript: String.replace()

რამდენიმე წლის წინ დავწერე პოსტი JavaScript – ით DOM ელემენტის სტილებთან მუშაობის შესახებ. ბრაუზერებს შორის სხვაობიდან გამომდინარე(კერძოდ კი IE – ს განსხვავებული მიდგომის გამო) პრობლემის გვერდის ასავლელად დავწერე ქვემოთ ნაჩვენები კოდი:

1
2
3
4
5
6
7
8
9
10
function getCamelCase(string) {
    var tokens = string.split('-');
    if (tokens.length > 1) {
        for (var i = 1; i < tokens.length; i++) {
            tokens[i] = tokens[i].substring(0, 1).toUpperCase() + tokens[i].substring(1).toLowerCase();
        }
        string = tokens.join('');
    }
    return string;
}

კოდის ერთადერთი დანიშნულებაა ტირეებიანი CSS ატრიბუტების მაგ. border-left-color, background-color გადაყვანა ე.წ. Camel Case ფორმატში ანუ borderLeftColor, backgroundColor და ა.შ.

დღეს კოდის წერისას იგივე პრობლემა მექანიკურად გადავჭერი სხვა უფრო მოხდენილი და რაც მთავარია გაცილებით მცირე ზომის კოდის მეშვეობით:

1
2
3
4
5
6
7
8
var str = "some-test-string";
str.replace(/-([\w])/gi, function(a1, a2) {
    return a2.toUpperCase();
});

//კოდის შესრულების შემდეგ
//სტრიქონი "some-test-string"
//გარდაიქმნება შემდეგნაირად: "someTestString"

დამეთანხმებით რომ თვალსაჩინო სხვაობაა :D როგორ მუშაობს ეს კოდი? პირველ რიგში შეგახსენებთ თავად String ობიექტის replace() მეთოდის სიგნატურას:

str.replace(regexp|substr, newSubStr|function[, Non-standard flags]);

ანუ replace() მეთოდს მეორე პარამეტრად ახალი, ჩასანაცვლებელი სტრიქონის ნაცვლად შეგვიძლია გადავცეთ ქოლბექ ფუნქცია რომელიც დააბრუნებს დამუშავებულ სტრიქონს, ხოლო ეს დაბრუნებული სტრიქონი თავის მხრივ გამოყენებული იქნება რეგულარული გამოსახულების მიერ ნაპოვნი შესატყვისის ჩასანაცვლებლად.

საინტერესოა ასევე თუ რა პარამეტრებს გადასცემს replace() მეთოდი ქოლბექ ფუნქციას. გადასაცემი პარამეტრების რაოდენობა ცვალებადია და დამოკიდებულია მთელ რიგ ფაქტორებზე. მაგალითად ჩემს მიერ ნაჩვენებ მაგალითში ფუნქციას გადაეცემა ოთხი პარამეტრი, კერძოდ კი ფუნქცია გამოიძახება ორჯერ შემდეგი პარამეტრებით:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//პიველი დამთხვევისათვის ანუ "-t"
function(
  "-t",  //რეგულარული გამოსახულების მიერ ნაპოვნი სტრიქონი სრულად
  "t",    //დამაჯგუფებელ ფრჩხილებში მოთავსებული შედეგი
  4,     //პოზიცია რომელზეც მოხდა პირველი დამთხვევა
  "some-test-string" //სრული სტრიქონი
);

//მეორე დამთხვევისათვის ანუ "-s"
function(
  "-s",  //რეგულარული გამოსახულების მიერ ნაპოვნი სტრიქონი სრულად
  "s",    //დამაჯგუფებელ ფრჩხილებში მოთავსებული შედეგი
  9,     //პოზიცია რომელზეც მოხდა პირველი დამთხვევა
  "some-test-string" //სრული სტრიქონი
);

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

  • პირველ პარამეტრად ყოველთვის გადაეცემა რეგულარული გამოსახულების მიერ ნაპოვნი სრული შესატყვისი;
  • ბოლო პარამეტრად ყოველთვის გადაეცემა სრული სტრიქონი რომლშიც განხორციელდა გარკვეული შესატყვისის ძიება;
  • ბოლოდან მეორე(ბოლოს წინა) პარამეტრად ყოველთვის გადაეცემა ნაპოვნი შესატყვისის პოზიცია.
  • თუ რამდენი პარამეტრის გადაცემა მოხდება პირველსა და ბოლო ორ პარამეტრს შორის დამოკიდებულია რეგულარულ გამოსახულებაში გამოყენებული დამაჯგუფებელი ფრჩხილების რაოდენობაზე(ჩემს მიერ ნაჩვენებ მაგალითში ასეთი პარამეტრი ერთია რადგან მხოლოდ ერთი დამაჯგუფება მაქვს გამოყენებული);
  • replace() მეთოდი გამოიძახებს ერთხელ თუ რეგულარული გამოსახულების ბოლოს არ გვაქვს მითითებული “g” ანუ გლობალური მოდიფიკატორი, ან გამოიძახებს იმდენჯერ რამდენი დამთხვევაც მოხდება კონკრეტული შესატყვისისათვის(ნაჩვენებ მაგალითში გამოძახება მოხდება ორჯერ).

enjoy B-)

ტეგები: ,

jQuery საკუთარი ხელით – ნაწილი 2

მაშ ასე, განვაგრძობ პოსტების სერიას “jQuery საკუთარი ხელით” და გთავაზობთ მეორე ნაწილს. პირველ ნაწილში ლაპარაკი გვქონდა ამ ბიბლიოთეკის ძირითად შემადგენელ ნაწილებსა და მისი მუშაობის ზოგად პრინციპებზე. ასევე პირველ ნაწილში შევქმენით ბიბლიოთეკის კარკასი კოდური სახელწოდებით myQuery და სადემონსტრაციოდ დავამატეთ ერთი მეთოდი.

დასაწყისისთვის უკვე გაგვაჩნია საკმარისი ინფორმაცია და მოდულის მკაფიო მონახაზი რომელზე დაყრდონბითაც შეგვიძლია გადავიდეთ რეალიზაციის შემდეგ ნაწილზე. ამ ნაწილში ლაპარაკი მექნება DOM ელემენტის class ატრიბუტსა და მასთან სამუშაო მეთოდებზე. სრულად »

ტეგები: , , ,

jQuery საკუთარი ხელით – ნაწილი 1

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

ამ პოსტით მინდა გავხსნა დაგეგმილი სერია პოსტებისა რომლის მეშვეობითაც შევეცდები გაგაცნოთ jQuery – ს შიდა სამზარეულო და გადმოგცეთ მასში გამოყენებული ძირითადი მიდგომები რომლებიც დაგეხმარებად მსგავსი ტიპის საკუთარი ბიბლიოთეკების შექმნაში.

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

ტეგები: , , ,

Code.ge redesign… And I’m back B-)

მოკლედ მოგესალმებით ყველას! ძალიან დიდი ხანია მინდოდა ამ პოსტის დაწერა თუმცა გარკვეულ მიზეზთა გამო შინაგანმა წინააღმდეგობის გრძნობამ ეს სურვილი ჩაკლა.

ჯერ კიდევ ორიოდე კვირის წინ ბლოგის დახურვასა და მის გაუქმებას ვაპირებდი, თუმცა ეს უაზრო სურვილი დავძლიე და შევეცდები განახლებული ენერგიით განვაგრძო წერა! ამისათვის განსაკუთრებული მადლობა მინდა გადავუხადო რამდენიმე ადამიანს(არ ჩამოვთვლი მათ სახელებს თვითონ მიხვდებით ვისაც გგულისხმობთ). ასევე დიდი მადლობა მინდა გადავუხადო იმ ადამიანებს რომლებიც ამ ბლოგით ჯერ კიდევ სარგებლობენ და აქ თავმოყრილი ინფორმაციითა და ჩემი პატარა ნამუშევრებით სარგებლობენ. ასევე დიდი ბოდიში მინდა მოვუხადო ყველა ჩემი მხირდან უპასუხოდ დატოვებული კომენტარის ავტორს.

პირველი ეტაპისთვის გამოვნახე დრო და გავაკეთე ბლოგის გარეგანი იერსახის სრული ცვლილება რომელიც ალბათ უკვე თვალში მოგხვდათ :D

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

პირველ რიგში დღეს გავაოფენსორსე(როგორი ქართულია? :D ) LinGO ინგლისურ ქართული ლექსიკონი iPhone – სთვის რომელიც ხელმისაწვდომია GitHUB – ზე. ეს მინი პროექტი აუცილებლად მიიღებს დასრულებულ სახეს რადგან დღეიდან მასში მონაწილეობას მიიღებს ორი გამოცდილი Mac (და არა მარტო) დეველოპერი – ლაშა დოლიძე და ირაკლი ნადარეიშვილი! დიდი მადლობა ორივეს მხარდაჭერისა და ამ პროექტში მონაწილეობის სურვილისათვის.

სხვა სიახლეებსა და შეძლებისდაგვარად სასარგებლო ნამუშევრების შესახებ სულ მალე შეიტყობთ ამ ბლოგის მეშვეობით.

მაშ ასე I’m Back B-)

ტეგები: , , , ,