Programming paradigms :)

:) რაღაცით კარგი დღეა დღეს :) )) ნუ, დილა არ ითვლება :P  ეზოში ყველაფერს გადავუარე მგონი :) )) თითები გავიტაოტიანე :) ) და კიდევ ბევრი უსიამოვნო წვრილმანი. ცოტა ხანში მივხვდი, რომ კარგ ხასიათზე დადგომა ჯობდა, თორემ ნაკაწრები არ ამცდებოდა..

მერე რაღაცები წარმატებით დამთავრდა :) რამხელა სიამოვნებაა ხომ პროგრამაში შეცდომების გასწორება? :P

მთავარი მაინც კარგი განწყობაა :) იღბალი მოაქვს :P

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

სტენფორდის (და კიდევ სხვების) ლექციები იუთუბზე.. მმმ… კონკრეტულად Programming paradigms, რომელსაც პროფესორი ჯერი კეინი კითხულობს. ცარცის დაფა მომწონს :P და ლექტორის იუმორი :) ) კარგი მოსასმენია. საინტერესო :) მოკლედ თქვენც გირჩევთ..

სტეგანოგრაფია

“When cryptography is outlawed,
bayl bhgynjf jvyy unir cevinpl.”

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

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

თუ ხელმისაწვდომია სიმბოლოების ასეთი მიმდევრობა:

ce794b2ffb7bccdc2f77586b5bf8cb9213d037a
cd4c87ffa833fe4dd578345a210e643683cffb1
3898b7099f8a145272515a77b11555f7f8391d

გასაგებია, რომ მისი გარდაქმნით შეგვიძლია ორიგინალი აღვადგინოთ როგორმე. უფრო დაცული იქნება მასში ჩადებული ინფორმაცია, თუ საერთოდ არ გვეცოდინება მისი არსებობის შესახებ.

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

ვიკიზე მოყვანილია ფოტო:

ამ ფოტოს თითოეული ფერის კომპონენტს (RGB) თუ მოვაცილებთ ყველა ბიტს ბოლო ორის გარდა და შემდეგ სიკაშკაშეს (brightness) გავზრდით 85-ჯერ, მივიღებთ სულ სხვა ფოტოს:

სხვადასხვა გზით ინფორმაცია შეგვიძლია დავმალოთ mp3, wav, jpg, bmp, gif, au … ფორმატის ფაილებში.

აი, თუნდაც .bmp.  24-ბიტიანი bitmap ფაილი ავიღოთ. 

სურათის თითოეული პიქსელის თითოეულ ფერი (R,G,B) ინახება 8 ბიტში. ანუ თუ ავირჩევთ ერთ ფერს – მაგალითად R წითელი, მისი 28 განსხვავებული ვარიანტი იარსებებს.  ამ ორს – 11111111 და 11111110 – შორის კი განსხვავება ისეთი მცირეა, რომ ადამიანის თვალი ვერ შეამჩნევს. ასე რომ თუ თითოეული პიქსელის წითელის ბიტების ბოლო ბიტში ჩვენს ინფორმაციას შევინახავთ, თვალით ცვლილების აღქმა თითქმის შეუძლებელი იქნება. რა თქმა უნდა მეორე მხარემ უნდა იცოდეს სადაა ინფორმაცია დამალული და როგორ.

 

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

პირობითი კომენტარები HTML კოდში

ხანდახან მეტად გამაღიზიანებელია IE-ს საქციელი. წერ css სტილებს, ყველა ნორმალურ ბრაუზერში ნორმალურად მუშაობს, მაგრამ Internet Explorer-ში, რომელსაც ჯერ ჯერობით მაინც ძალიან ბევრი მომხმარებელი ყავს, რაღაცეები აბდა უბდა გამოდის.
ზოგიერთ ასეთ შემთხვევაში მოსახერხებელია პირობითი კომენტარების (conditional comments) გამოყენება რომლებიც მხოლოდ MS Internet Explorer-ში მუშაობს.
ამ კომენტარებს IE-ს ვერსიების გარჩევაც კი შეუძლიათ 5.0-დან ზევით.
მაგალითად:

 

<!--[if IE 6]>
ეს ტექსტი გამოჩნდება მხოლოდ მაშინ თუ საიტი IE 6-ში იხსნება.
<![endif]-->

 

სხვა ბრაუზერები კი მთელ ტექსტს კომენტარად აღიქვამენ (<!– –>) ნიშნების გამო.

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

 

<link rel="stylesheet" type="text/css" href="common.css" />
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="all-ie.css" />
<![endif]-->
<!--[if IE 6]>
<link rel="stylesheet" type="text/css" href="ie-6.0.css" />
<![endif]-->

 

შესაძლო პირობები:

 

<p><!--[if IE]>
ეს Internet Explorer-ია<br />
<![endif]-->
<!--[if IE 5]>
ეს Internet Explorer 5-ია<br />
<![endif]-->
<!--[if IE 5.0]>
ეს Internet Explorer 5.0-ია<br />
<![endif]-->
<!--[if IE 5.5]>
ეს Internet Explorer 5.5-ია<br />
<![endif]-->
<!--[if IE 6]>
ეს Internet Explorer 6-ია<br />
<![endif]-->
<!--[if IE 7]>
ეს Internet Explorer 7-ია<br />
<![endif]-->
<!--[if gte IE 5]>
ეს Internet Explorer 5-ია ან მისი მომდევნო ვერსიებიდან ერთ-ერთი <br />
<![endif]-->
<!--[if lt IE 6]>
ეს Internet Explorer 6-ზე ძველი ვერსიაა<br />
<![endif]-->
<!--[if lte IE 5.5]>
Internet Explorer-ის ეს ვერსია ნაკლებია 5.5-ზე ან 5.5-ია<br />
<![endif]-->
<!--[if gt IE 6]>
Internet Explorer -ის ეს ვერსია 6-ზე ახალია<br />
<![endif]-->
</p>