Will this post be posted succesfuly from my mobile?
In standard WP admin area works even javascript in post’s sidebar!
Will this post be posted succesfuly from my mobile?
In standard WP admin area works even javascript in post’s sidebar!
После долгих лет молчания я вновь вернулся на публичную сцену Литвы.
Первый (и последний на тот момент) раз, на публику я свою статью выложил в августе 2002 года, на литовский сайт посвещённый PHP. Это было короткое писание класса SDF – Serialized Data File. Он до сих пор болтается на phpClasses. Тогда, в 2002, это было небольшой сенсацией для Литвы – MySQL был тогда достаточно дорог, его нужно было заказывать отдельно, бывали проблемы со стабильностью – а этот класс для маленьких проектов решал многое и был удобен при переносе сайта.
После чего были долгие годы молчания. Небыло ни интересных тем, ни времени, ни особого желания. Тем более есть 2 блога.
Что меня толкнуло в сентябре 2007 написать поверхностную статью о росте сайтов и том, как добавляются серверные ресурсы для pixel.lt на литовском – Tinklalapių augimas – ką daryti, jei jiems pasidaro ankštoka? – я до сих пор не знаю. Особых надежд победить в конкурсе у меня нет, XBOX 360 мне без нужды (но если выиграю делиться или отказываться не буду), „Microsoft“ Bluetooth клавиатуру или „Microsoft“ Wireless Optical мышь я бы хотел конечно. Если мою статью опубликуют в журнале “NK” – будет очень даже круто.
Вот такие новости у меня на сегодняшний день. Вчера был день программиста, 256 день в году, а я его так и не отметил…
Кстати, мою статью опубликовали 13 числа… Символично. Как-то по жизни с числом 13 мне везёт (серьёзно).
Локальный WebDAV сервер переводим в стадию тестирования. Даже нашли в интернете способ, как заставить MS Office на Windows платформе документы по ссылке на WebDAV сервере в режиме редакции а не read-only.
Нужно в регистрах для ветки HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Common\Internet создать запись OpenDocumentsReadWriteWhileBrowsing типа DWORD со значением 1.
Месяц тишины. Её причина – воз интересной работы (которая была как вызов – а смогу ли я).
Итак, к примеру, на прошлой неделе, я переделывал CMS для поддержки MSDE 2000 и ставил WebDAV на Apache 2.2.
Ну чтож, можно сказать что я точно овладел основами MSDE 2000. Поставил с поддержкой нужной аутентификации со второй попытки, без проблем переписал структуру таблиц с MySQL на MSSQL, определил тип полей, вобщем тут всё прошло относительно складно. Если кому придётся ставить MSDE 2000, то у инсталлера есть несколько занимательных параметров, которые вам помогут и запускать его лучше из коммандной строки.
Перепись самодельной абстракции для работы с базой данных и нескольких кастомных запросов заняла около 6 часов (при создании этой системы никто никогда не думал о других платформах), плюс время на тестирование каждой функции и отлов мелких глюков. Самое не приятное было то что в MySQL прекрасно хавает запросы типа INSERT INTO `table` SELECT * FROM `other_table` при одинаковой структуре таблиц, а MSSQL нужно указать конкретные поля и для INSERT и для SELECT частей.
Потом у меня было 2 загвоздки: не латинские символы и кол-во символов в полях text и ntext. При работе с PHP mssql_* функциями примеров в мануале почти минимум. Никаких Warning и Notice нету. Сидишь и как слепой котёнок дёргаешься туда-сюда.
Первый косяк был – не латинские символы, а точнее UTF-8. Так как в начале я использовал поля ntext, вся INSERT прошли нормально, а читать он от туда не смог. Всё время кидало сообщение “Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library”. Так не весело знаете… Структуру базы ис MYSQL перенёс, данные перенеслись, и если смотреть через менеджеры – удачно, а читать не могу. Правда потом нашёл решение в сети – рекомендовали использовать поля типа text. Поменял, заново импортировал данные – всё заработало.Да, была попытка использовать ODBC, но тоже ничем хорошим не увенчалась.
Вылез второй косяк – некоторые очень длинные тексты были обрезаны. Оказалось у PHP mssql_* есть 2 параметра в php.ini, которые ограничивают длину полей ntext и text. это параметры
Итак, всё работает. После MySQL впечатления о MSSQL никакие. Я бы не хотел ещё раз возвращаться к таким проектам, где нужно использовать MSSQL.
С WebDAV у меня всё пошло куда на много быстрее. Apache я знаю достаточно хорошо, чтобы за полтора-два часа на нём всё запустить да так, что-бы всё работало. Особых косяков небыло, за исключением аутентификации. Какой-то чёрт меня дёрнул использовать
Теперь я подумываю о создании WebDAV шаринга с использованием Subversion для автоматического отслеживания версионности файлов.
А ещё я: получил на работе новую машинку – Intel Core 2 Duo 2.33 GHz и 2 GB RAM, и 300 GB SATA2 диском, удачно на неё перенёс все проекты над которыми работаем и приготовился к резервному копированию (старый но нужных файлов). Таки нашёл способ работать над одним сложным и большим проектом в команде из людей, находящихся в разных концах офиса и планеты. Наконец добрались руки поставить реверс-прокси на Apache 2.2 и решить проблему 80 порта и одного IP в офисе. Да и просто сделал много классной работы и выпил не один бокал хорошего пива.
Так как тема Load Balancing мне сейчас очень актуальна, я иногда посматриваю на большие Литовские проекты со стороны пользователя и задумываюсь, что они делают. Хотя, может это и не особенности местного Load Balancing, но я уже второй раз встречаю такое решение на довольно популярном проекте. Если кто знает в других местах подобные модели, или причины – пишите в коммнетарии, мне очень интересно.
Сейчас в ЛитНете очень популярен один проект, клон YouTube.com – маленький Литовский videogaga.lt. О нём сейчас пишут в Литовский блогах, писают кипятком, так как он очень вовремя появился в Литве и позволил незнающим английского легко загружать своё видео в интернет и делиться с друзьями. Ах, как хорошо.
Я совсем не знаю что у них на “в заде”, но вот с переди кажется, что они пошли не тем путём. Придя на www.videogaga.lt вас перенаправят на www1.videogaga.lt, ещё есть www2.videogaga.lt, www3.videogaga.lt, www4.videogaga.lt (у всех разные внешние IP). Если я правильно понял, они при помощи 4 субдоменов и редиректов распределяют нагрузку.
Похожим путём пошли и всем в прибалтике известные one.lt, причём задолго до videogaga.lt. Куча серверов,внешние редиректы и всё зависит от удачи – повезёт, попадёш на незагруженный сервер, не повезёт – будешь ждать ответов (по крайней мере так говорят пользователи). Я не в курсе конечно отношений и производителей, но у меня есть ощущение, что всё делала одна и таже контора.
Хотя я могу быть и не прав в своих домыслах и все эти субдомены предназначены для других целей?
Вот такие особенности я заметил…
Я вот не понимаю, почему суб-домены, почему дублируется содержание? Почему в переди не поставлен распределящий нагрузку proxy, как это сделано у Google (хотя хер знает как там, но главное что все мы ходим через www.google.com а не через www1.google.com, www2.google.com, … www1024.google.com) или на том-же flickr.com или YouTube.com? Нет, я согласен – статическое содержание может отдавать ферма под другим субдоменом (как у flickr.com), но основное и динамическое содержимое всегда как-бы должно с одного домена идти. Но всё-же зачем субдомены и редиректы? Почему?
А вот и ссылочка, кстати. Оба проекта стоят на сервере Resin/2.1.6. В Google по запросу Resin на первом месте сайт caucho.com. Оказывается какой-то хитрый HTTP сервер, который high-performance с load balancing. Нужно будет расковырять его, посмотреть что он, как он и зачем он.
Если кого-то волнует, куда я пропал и почему так затих – всё очень просто – я ушёл в работу.
На этой и прошлой неделе моей любимой темой был Load Balancing.
За это время я успел познакомиться с возможностями Lighttpd и его mod_cache, mod_proxy, mod_proxy_core, поставить FreeBSD, на нём закрутить Lighttpd + PHP под FastCGI. Кроме того пересмотрел nginx и его ngx_http_upstream и взглянул на Apache 2.2 с его mod_proxy и mod_proxy_balancer.
Больше всего мне понравились Lighttpd и Apache 2.2. Жаль, вот только, что Apache – это жирноватая корова по сравнения с Lighttpd, а с Lighttpd пугает его свойство зависать на огромной загрузке, и не ясно, избавились ли от него; и очень огорчил mod_cache у Lighttpd – я думал это полноценный модуль, а это ужасных хак. Этот хак не входит ни в одну стандартную постановку моего любимого FreeBSD, а ведь та простота, с которой можно организовать кеширование манит. mod_proxy_balancer доступен только от версии 1.5, а она ещё не признана стабильной, а возможностей у него куда больше, чем у mod_proxy.
Вообще, чти я скажу – ситуация в выборе ПО для Load Balancing на уровне HTTP отличная – выбор есть, нет ничего сложного в реализации, главное выбрать определённую платформу. В ближайшие месяцы я уже наверное смогу сказать, что выбрано и как себя ведёт.
Ещё, что касается Load Balancing – так пересмотрел в MySQL как работает Replication и даже дома собрал небольшую модель из одного мастера и 3 слейвов, посмотрел как всё запускается, как реплицируются данные, как ведёт себя сервер после падения на короткий срок и восстановления работоспособности.
Кстати, MySQL выпустил интересное начинание: MySQL Proxy. Если к версии 1.0.0 она была-бы стабильная, отлично поддерживала балансирование и кешинг, плюс возможность задать read-only и write-only сервера, да и документации сопровождающей много с примерами – получилась бы отличное решение для загруженных систем.
Ещё в исследование входило общее поднятие Performance у сайта.
За всё время ещё не мало перечитал дополнительной литературы (блоги, статьи, касты разные) по MySQL, оптимизации запросов, планировании индексов, их использовании, оптимизации запросов со стороны MySQL. В Google Reader было добавлено не мало ресурсов связанных как с оптимизацией MySQL, так и на темы Load Balancing. Так-же в этой теме очень сильно помогают разные тесты на средних и больших кол-вах данных. Не раз запускался ab – Apache HTTP server benchmarking tool, который позволял сравнить время работы разных запросов к тем-же данным с/без индексов и прочих мелких условиях.
Всё что я хочу сказать своим товарищам, так это С ПРАЗДНИКОМ! System Administrator Appreciation Day!
Ближе к вечеру надо будет отрубить кисковкий Linksys и посмотреть как все затанцуют.
Наверно сегодня именно тот день, когда стоит написать о том, какой был мой первый более мение серьёзный WEB проект, причём коммерческий и сделанный в команде. Вы не спрашивайте как и почему именно сегодня, мне просто хочется это сделать именно сейчас.
Тогда я только начинал свою карьеру WEB-программиста, работал в маленькой конторе с классным брендом "META Grupė". Бренд считался солидным, так как в нём было слово "Grupė" (в переводе с литовского: группа). У компании было 3 отдела – коммуникации (занимался продажами какой-то там телефонии), компьютерный (продажа, сервисное и послесервисное обслуживание компьютеров в офисах) и WEB (в котором собственно работал я). В команде нас тогда работала трое (говорят идеальное число) – Я, Vladimiras Lekečinskas (aka Xekc) и Rudolfas Cybulskas (aka Asperix). Xekc в этой шайке был главным (после руководства компании), Asperix был программистом, а я так, человек который делал всё остальное (тексты ввести, за блондинку по интерфейсам покликать, что-то где-то найти в интернете, прочая не квалифицированная работа). А ещё я был на третьем курсе программирования в VIKO (тогда правда он назывался VAEM).
Значит, все мои знания и желание творить подтолкнули меня к тому, что в начале я начал писать код. В начале HTML, простенький, не валидный но рабочий. Как сейчас помню – толстый талмуд с надписью HTML 4 который я листал по вечерам изучая этот язык разметки. Знакомился и с CSS, правда, всё знакомство было основано на копировании кусков чужих стилей для табличной вёрстки. За этим последовали первые куски кода на PHP 3 (да да, тогда в Литве было много серверов с поддержкой PHP 3). Первый "Hello World!", первое соединение с базой, потом первый снифер (вообще-то это был логер, записывавший IP, Бродилку, URL и время посещения), первая гостевая книга на My SQL (интересно, если бы сейчас её откопать, сколько XSS и SQL атак на ней можно было-бы провести?).
И меня заметили и первым моим заданием стал форум для сайта Lietuvos Sveikata. Это была уже полностью командная работа – ну как, 2 программиста. Никакого API, никакого опыта командной работы, никакого CVS/SVN. Знали только одно – общую структуру таблицы пользователей и несколько переменных в сессии, от которых зависело залоглен ли пользователь. Естественно, когда написали код, без API, пришлось ещё пару дней это всё соединять. И оно заработало. Ошибки потом ещё долго отлавливали.
Паралелно я где-то увидел (или мне показали) первые XSS атаки. Это был <script>alert(‘You a hacked!’);</script> – оно вроде тогда ещё то и названия XSS не имело. Тогда весь ввод мы позакрывали при помощи PHP функции strip_tags. Я не знаю, хорошо ли она работала на тот момент, но, нам казалось что всё в порядке.
На этом рассказ о моём первом серьёзном WEB проекте можно закончить. Проект проработал потом долго без моих каких-либо изменений в коде. Я даже (если не изменяет память) ушёл работать в другую компанию, а он работал.
Вот так, примерно, я стал WEB программистом. С тех пор я не сильно хотел менять что либо в своей профессиональной жизни. Я по прежнему пишу код на PHP, слежу за тем, что в нём нового и какие курьёзы бывают.