10 марта 2014 г.

Отпуск в Паттайе, Таиланд



Вкратце описывал приключения и интересные моменты из Таиланда.

Фотографии


— вылет из Внукова (VKO) — большой двухпалубный Boeing 747. Онлайн регистрация на теплое ламповое место и окошка — но там оказалась сломанная спинка стула, поменял на другое место. 9 часов полёта.

— прилет в Бангкок BKK, очень большой аэропорт (много секторов, траволаторов)
— первые знакомства с соседями по отелю
— приехали в Паттайю, первые впечатления
— Местная валюта — Baht (бат), по самому выгодному курсу 1B == 0.95руб, т.е. примерно одинаковые
— кокосовый сок в кокосе — 40B; осьминоги, кальмары, креветки, морепродукты гриль — 20B; фрукты кг 50—100B
— тайский массаж с маслом, и впоследствии каждый день — 300B

— катание на водном мотоцикле jet ski — 400B за полчаса
— authentic кальян в арабском квартале 120B
— катание на скутере
— с австралийцами; попытка вломиться в клуб со спрятанной под майкой бутылкой рома. Затем пол—часа гуляний по walking street, смена маек и в клубе до утра

— паром на остров Ко—лан 30B — чистая водичка песочек. Лучше чем в самой Паттайе, но плыть ~1ч
— футбол,волейбол в воде, на пляже
— сидеть в кафе на улице, любоваться на прохожих, пить ведро коктейля Pattaya Delight 200B
— Ночной рынок (по идее дешевле чем в остальных лавочках) — взял бальзам черной кобры, тигровый, кокосовое масло
— покатался на тук—туке — в новинку, интересно. Это тайские маршрутки, сделанные из пикапов, где вместо задней стороны установлена приступка, через которую заходить/выходить
— SPA пилинг с рыбками
— гадание. На улице монах аутентично делал буддийский ритуал для местной тайки (хотя может быть для тайца) — стало интересно: рисунок на бумаге, затем расплавленный воск — им нарисовать подпись, туда в воск вплавить волос, дальше не помню.

— бесплатная обзорная экскурсия — ну как бесплатная, — возят по городу и гиды рекомендуют покупать определенные товары, услуги в определенных магазинах.
— змеиная ферма. Из интересного — клубок змей. Теперь я представляю как он выглядит.
— сонный фотогеничный гиббон (100B/кадр) для туристов и рядом в 20 метрах клетка с дикими гиббонами — прыгают, лазают по перилам, катаются на висячей покрышке — фоткай бесплатно.
— змеиное шоу. Весь зал русских. Умелые тайцы показывали трюки с кобрами, питоном, полозами.
— магазин тайской косметики vitamax (какой—то орифлейм), не понравилось.
— музей специй — гид оттуда показывала только специи (обычная трава) и затем повела всех в магазин специй. Но пройти чуть дальше — чудесные пейзажи (с водопадом), растёт множество фруктов — видел банан, ананас, гранат, папайа, лайм, дуриан, jackfruit, манго, да сотни их. + фотки
— магазин матрасов, подушек из латекса (ортопедических). Повалялся на них. Подушки латексные ортопедические в среднем 3600B, матрацы ~7000B
— ювелирный центр. Очень крутая экскурсия на вагончиках по диарамам. Очень качественно выполнены — сами фигуры людей, декорации, свет, звук. История появления драгоценных камней: вулкан, пещера сталактиты, шахтеры добывают кирками, вымывка, обработка, применение — мастера искусств, цари и короли, владеющие драгоценностями
— после сам магазин драгоценностей. Очень пафосное место. Украшения разные, с огромными камнями доходят до 1KK B
— пробовал много местной тайской еды, приготовленной прямо при тебе на огне.
— ночной рынок (еще один). Ну не такой уж ночной — скорее вечерний, ибо закрывался около 23:00. Похож на наши русские рынки — еда, одежда, сувениры. Плюс куча шатающихся там русских
— прошелся по удаленной от туристов трассе (sukhumvit): все закрывается рано в 10—11 вечера; много бездомных собак; на трассе почти нет тук—туков — только авто и скутеры; все несутся на большой скорости — почувствовал себя той лягушкой, перепрыгивающей через трассу, перебегая дорогу на зеленый свет по пешеходному переходу.

— поехал на пляж Джомтьен — а там грязно.
— пошел гулять по местным кварталам — познакомился с Keith Mae — американец, ~55 лет, 5 высших образований (IT, librarian (работал в ОАЭ), medical, sociology, …) и его товарищ Pip (таец, ~35 лет, очень шебутной) и еще собака (dog child) Bobo — очень умный, умеет становиться на задние лапы и молиться Будде.
Подружились, решили вместе гулять:
— поездка на мопеде с крытой коляской за продуктами
— шоппинг с Pip в супермаркете и затем на местном рынке — поймали большую рыбину, затем её сразу же почистили, распотрошили и завернули нам. Плюс здоровый краб.
— по дороге обратно — небольшая авария — коляска мопеда заехала на обочину и наклонилась на 45º — быстро вытолкали, поехали дальше.
— восхитительный ужин — краб, рыба, суп из курицы с кокосовым молоком

— Alcazar show, Big Eye show

— Путешествия по окрестностям и интересным местам Патаййи:
— The Sanctuarity of Truth — красивый храм, только на ремонте, и выглядит заброшенным, — нет той атмосферы, которая есть на картинках древних азиатских храмов. Дорога 20B + вход 50B
— Floating market — рынок на воде. 200B — это только лишь вход. Побродил там рядом — кафешки и дорогие сувениры. Дорога 60+20B
— Nong nooch нонг нуч. Дорога 20+40B. Сам парк 500B. Много для одного, но это того стоило. Огромный ухоженный сад—парк—зоопарк—выставка—курорт
— вечером пошел на гору на overlook. Отличный вид на Паттайю. Познакомился со шведом, который живет тут уже 10 лет, с тайкой. Посидели там, опустошили бутылку виски, затем поехали на скутере кататься

21 февраля 2012 г.

Сравнение PDO и MySQLi


Давно уже ведутся разговоры о том, что расширение mysql в php - это плохо, используется PDO или MySQLi, а вот что именно использовать (конечно, с уклоном в PDO) разъясняется в этой статье Что лучше использовать? PDO или MySQLi? Вот ответ -  http://net.tutsplus.com/tutorials/php/pdo-vs-mysqli-which-should-you-use/

Ключевые положительные особенности PDO заключаются в том, что он поддерживается многими СУБД (12 различных драйверов, в т.ч. MySQL, MS SQL, ORACLE, SQLite), позволяет сохранять результат выборки из таблицы в уже существующий объект (прослойка как бе ORM), всякие prepared statements и многое другое.

Имена переменных в JavaScript

JavaScript очень интересный язык, позволяет даже такое:

var π = Math.PI;

var ಠ_ಠ = 111;

var привет = 222;
и при этом - это всё будут корректные идентификаторы, которые в дальнейшем можно использовать. Кстати IE6 понимает названия переменных на русском в UTF-8, но это не значит, что нужно сразу использовать это =)

Подробнее об именах идентификаторов в js можно прочитать здесь

20 февраля 2012 г.

Простая и красивая PHP капча на сайт

А вот и реализация одной очень простой и легкой капчи на php:

 //path to font:
 $font = '/var/www/font.ttf';

 session_start();
 
 // generate random number and store in session
 
 $randomnr = rand(1000, 9999);
 $_SESSION['randomnr2'] = md5($randomnr);
 
 //generate image
 $im = imagecreatetruecolor(100, 38);
 
 //colors:
 $white = imagecolorallocate($im, 255, 255, 255);
 $grey = imagecolorallocate($im, 128, 128, 128);
 $black = imagecolorallocate($im, 0, 0, 0);
 
 imagefilledrectangle($im, 0, 0, 200, 35, $black);
  
 //draw text:
 imagettftext($im, 35, 0, 22, 24, $grey, $font, $randomnr);
 
 imagettftext($im, 35, 0, 15, 26, $white, $font, $randomnr);
 
 // prevent client side  caching
 header("Expires: Wed, 1 Jan 1997 00:00:00 GMT");
 header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
 header("Cache-Control: no-store, no-cache, must-revalidate");
 header("Cache-Control: post-check=0, pre-check=0", false);
 header("Pragma: no-cache");
 
 //send image to browser
 header ("Content-type: image/gif");
 imagegif($im);
 imagedestroy($im);
Только нужно лишь таскать с собой какой-нибудь шрифт в TTF. И, поигравшись с параметрами, можно кастомизировать капчу как угодно на своё усмотрение - свой набор символов/слов, цвета символов, цвет фона сделать такой же, как на сайте - вообщем всё, что угодно.

17 февраля 2012 г.

Base64 quirks

Оказывается Base64 разные версии бывают. И вот на одном проекте всплыла особенность этого стандарта кодирования, заключающаяся в том, что по-умолчанию, в результирующей закодированной строке могут содержаться символы '+' и '/', которые, при передаче, например, через GET - преобразовываются веб-сервером в '+' → '%2B', '/' → '%2F'.
В данном случае можно либо преобразовывать сущности обратно в нормальный вид, либо использовать Base64 для URL, в котором '+' и '/' заменены на '-' и '_' соответственно, которые уже затем нормально можно использовать в дальнейших целях без дополнительных обработок.

11 февраля 2012 г.

iPad и гарантия Apple


Хочу выразить огромную благодарность сервисному центру М.Тайм (авторизованный Apple AASP), который взял и починил мне iPad 2. Хоть это длилось месяц, но зато я получил полностью новое заменённое устройство из Америки и чертовски доволен :)
Оказывается на айпад, как и на некоторые другие устройства от Apple действует международная ограниченная гарантия, по которой любой iPad можно обменять по гарантии в течение года, если, конечно, в нём обнаружился заводской брак.
У меня как раз это и произошло - для того, чтобы в скайпе тебя услышал собеседник - нужно было наклониться над микрофоном и громко кричать туда:)

Кстати, проверить оставшуюся гарантию на устройство Apple можно на этой странице

10 февраля 2012 г.

AjaxUpload через AJAX не работает?

Если кнопка AjaxUpload, загруженная через аякс (например показывающаяся  в jQuery UI dialog) не работает - то одной из причин может служить неправильный z-index!
Лечится с помощью:

$('input[name=uploadfile]').css('z-index', '20000');

7 февраля 2012 г.

JSONP для начального отображения страницы

Если на страницах используются динамические данные, списки (загружаемые, через AJAX), то возникает вопрос, заключающийся в том, чтобы изначально загрузить эти данные.
Повсеместно везде используется практика дополнительного "дублированного" JavaScript кода на странице, но есть хорошая статья о том, как можно использовать JSONP для инициализации начальных данных на странице.

7 января 2012 г.

SPLIT в JavaScript а также в JScript и IE6-8

Оказывается в методе String.split(), реализованном в JavaScript (по сравнению с реализацией этого метода в JScript и в IE6-8) есть отличие, заключающееся в том, что если в качестве разделителя задать регулярное выражение и обрамить разделитель в скобки, то он добавится в качестве элемента в выходной массив:
Если separator является регулярным выражением со вложенными скобками, то каждый раз при совпадении separator все результаты захвата скобками, включаяundefined результаты, добавляются в выходной массив.

А для того, чтобы в JScript и Internet Explorer'ах разделители добавлялись в массив, можно переопределить метод String.prototype.split, который будет корректно работать везде (в соответствии со спецификацией ECMA-262 v3)

О том как это сделать можно прочитать тут -
http://blog.stevenlevithan.com/archives/cross-browser-split

28 декабря 2011 г.

Бешенный скролл jCarousel Lite.

Есть такая очень удобная js библиотека 
jCarousel Lite, которая позволяет очень просто делать анимации и карусели. И вот после очередного обновления сервера карусель начала бешено двигаться то вперёд, то назад.

А дело заключалось в том, что случайно в шапке сайта два раза подгружался скрипт инициализации и в том числе инициализации карусели. И таким образом заместо одной карусели появляется две - и обе листают практически одинаково и незаметно что их две. Но стоит переключиться на другую вкладку в браузере или свернуть - как карусель бешено крутится.
Отпишусь создателю библиотеки об этом issue.