GoDaddy: Nameserver not registered.

Рубрика: Development | 21 January 2009, 13:06 | Vadim Voituk

При управлении доменными именами, зарегистрированными на GoDaddy, возникла проблема, которая убила у меня 2 часа полезного времени.
(вот только не надо мне рассказывать что GoDaddy это не труЪ – сам знаю)

При попытке назначить определенному домену собственные (custom) nameservers (например ns1.myzone.com и ns2.myzone.com), получаем ошибку “Nameserver not registered.”
Аналогичная ситуация наблюдается если пытаемся создать профиль с указанием custom nameservers.

Пользовательская справка GoDaddy по поводу решения этой проблемы скромно умалчивает (хотя раньше лично мне всегда помогала).

Решение оказалось немного нетривиальным:

Необходимо в настроках домена myzone.com кроме того, что создать DNS-записи для субдоменов  ns1 и ns2, ещё и добавить аналогичные записи в “Host Summary” (прямоугольный блок внизу слева, на странице с информацией о домене).
В первом поле ввода указать ns1, а в поле “Host IP 1” – IP-адрес, куда должен указывать NS.
Аналогично и для записи ns2.

И только после этого, GoDaddy позволит указывать ns1.myzone.com и ns2.myzone.com в качестве Custom Nameservers для своих доменов и использовать их в профайлах.

MySQL: Определение размера таблицы

Рубрика: MySQL | 8 January 2009, 18:11 | Vadim Voituk

Вот такой вот интересный запрос случайно выудил из документации MySQL:

SELECT
    table_name AS table_name,
    engine,
    ROUND(data_length/1024/1024,2) AS total_size_mb,
    table_rows
FROM
    information_schema.tables
WHERE
    table_schema=DATABASE();

Показывает обьем и количество строк в таблицах MySQL.
Результат выглядит приблизительно так:

+-------------------+--------+---------------+------------+
| table_name        | engine | total_size_mb | table_rows |
+-------------------+--------+---------------+------------+
| categories        | MyISAM |          0.00 |         17 |
| downloadlinks     | InnoDB |         13.02 |      19158 |
| errors            | InnoDB |         15.02 |      84104 |
| lastdownloads     | MEMORY |          3.19 |        524 |
| providers         | MyISAM |          0.00 |         17 |
| starstags         | InnoDB |          1.52 |      14323 |
| tagids            | InnoDB |         35.59 |     759694 |
| tags              | InnoDB |       2036.00 |   21971934 |
| vars              | InnoDB |          0.02 |         51 |
| videocategories   | InnoDB |         49.58 |    1583675 |
| videos            | InnoDB |       1864.00 |    1954427 |
| videos_deleted    | MyISAM |         56.33 |      75889 |
| videostats2       | InnoDB |        271.88 |    3417776 |
| videostats2_daily | InnoDB |          0.02 |        266 |
+-------------------+--------+---------------+------------+

Правда есть один нюанс: на InnoDB-таблицах показывает количество незалоченных в данный момент строк.

P.S. А кто-то пробовал использовать ARCHIVE storage engine?
Как он в плане fail-over и repair?
Поделитесь good/bad experience?

Java in a Cloud

Рубрика: Development, Google, Groovy, Java | 26 December 2008, 15:49 | Vadim Voituk

Пока прогрессивное мировое ИТ-сообщество самозабвенно обсуждает особенности трендового термина cloud-computing, массово уговаривает Google сделать поддержку Java&Groovy в Google App Engine, гадает будет или не будет в GAE поддержка Perl-а, небольшая компания из Вашингтона представила миру свое понимание cloud-computing в Java-мире.

Речь идет о компании Stax Networks, 16 декабря уходящего года запустившей под лозунгом “Java applications in the cloud” свой аналог Google App Engine для Java-разработчиков, который предоставляет завершенную инфраструктуру для разработки, тестирования и развертывания масштабируемых Java WEB-приложений.

Технически решение Stax построено поверх Amazon EC2 и позволяет создавать приложения основанные Servlets/JSP, Struts, GWT, Wicket, JRuby, Jython, Flex, ColdFusion.
В качестве СУБД в данный момент поддерживается только MySQL.

Инфраструктура Stax построена так, чтоб разработчику на этапе написания кода не нужно было думать о том, что находится на уроверь ниже чем Stax.
Управление приложениями и базами данных производится через удобную web-консоль, а локальная разработка и отладка производится привычными методами (я использовал для этого Eclipse и консольную утилиту stax).

Чем ещё интересен данный стартап – так это то, что в данный момент они не взымают плату за использование, аргументируя это тем, что вырабатываю правильную бизнесс-модель.
В итоге попробовать Stax в действии, в отличии от аналогов, можно абсолютно бесплатно и даже не имея кредитной карты.

Что я собственно уже и сделал: написал небольшое приложение, которое выводит список контактов из БД и запустил его в cloud-е на 2х серверах.
Под заголовком “Running Java in Cloud” можно увидеть IP и имя сервера в cloud-e, который обслуживает текущий запрос. И если понажимать F5 – можно заметить, что серверов всего-то 2.

В принципе идея предоставления Platform-as-a-Service (PaaS) далеко не новая, но более или менее популярных решений для Java мне пока не встречалось.

Аналогичные разработки:

  • Google App Engine (GAE) – самый известный из подобных app-хостингов.
    Пока поддерживает только Python и хранение данных в нереляционной БД Google BigTable.
  • Microsoft Azure – аналогичный GAE сервис от Microsoft. Поддерживает .NET языки.
  • Salesforce.com – CRM-хостинг для приложений написанных на проприетарном языке Apex
  • Heroku – аналог Stax, построенный на Amazon EC2, но для RubyOnRails приложений
  • 10Gen – ещё одна платформа, поддерживающая Python, Ruby и ServerSide JavaScript, а также обьекную СУБД Mongo.

P.S. В комплекте со Stax SDK идет Groovy древней версии 1.5.6

Мини идея: Языковая анти-амнезия

Рубрика: Development, Just a life | 23 December 2008, 15:01 | Vadim Voituk

В связи с тем, что в последнее время в моей деятельность над разговорным английским преобладает письменный, часто встречаю незнакомые слова / выражения / идиомы, за которыми приходится “лазить” в словарь (например только что искал в словаре “fascinating”).

Кроме этих слов есть туева хуча таких, которые используются очень редко, и их написание забывается (чело только стоит слово “gorgeous” – каждый раз за ним в переводчик лажу)

Дабы через 5 минут не забыть только что найденное слово, я решил записывать их на старых визитках, которые валяются на столе. В результате они постоянно навиду и постепенно откладываются в памяти.

Теперь суть идеи:

Комьюнити людей, которые таким вот образом сохраняют разные словечки/словосочетания/обороты/идиомы/etc, и соответственно публикуют их внутри собственных friend-групп.
Понравилось мне выражение или оборот из очередной статьи – запостил в свою группу.
Паралельно прочел “постинги” френдов.

Построить что-ли такое поверх Twitter?

Что думаете?

Simple & Reliable Java HTTP-server

Рубрика: Development, Java | 22 December 2008, 13:43 | Vadim Voituk

Думаю никто не будет спорить с тем, что на данный момент HTTP является самым популярным высокоуровневым сетевым протоколом.
Как следствие, все больше и больше приложений используют его для организации сетевых коммуникаций, и все больше и больше приложений содержат в себе функционал примитивного HTTP-сервера.

Вариантов, как встроить в свое приложение небольшой HTTP-сервер уйма –
начиная от аскетичного и сложно-развиваемого 10-ти строчного HTTP-сервера на Groovy, заканчивая интеграцией в приложение небольшого сервлет-контейнера Jetty.

Я же хочу предложить что-то среднее между этими двумя вариантами.
Начиная с 6й версии, в составе JRE поставляется пакет “com.sun.net.httpserver”, который содержит реализацию достаточно производительного и гибкого HTTP-сервера, построенного на асинхронной технологии NIO.

С его использованием код самого простого HTTP-сервера умещается в 30 строк Java-кода:


import java.io.IOException;
import java.io.PrintWriter;
import java.net.InetSocketAddress;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;

public class HttpServerEx implements HttpHandler {

	public static void main(String[] args) throws IOException {
		HttpServer server = HttpServer.create(new InetSocketAddress(80), 10);
		server.createContext("/", new HttpServerEx());
		server.start();
		System.out.println("Server started\nPress any key to stop...");
		System.in.read();
		server.stop(0);
		System.out.println("Server stoped");
	}

	@Override
	public void handle(HttpExchange exc) throws IOException {
		exc.sendResponseHeaders(200, 0);
		PrintWriter out = new PrintWriter(exc.getResponseBody());
		out.println( "Hello moto!" );
		out.close();
		exc.close();
	}

}

Теперь, думаю, никому не составит труда расширить метод handle() под свои нужды.

Более подробную документацию можно найти тут: Javadoc пакета “Java™ HTTP Server”

К сожалению исходный код пакета доступен только как часть Standard Edition Development Kit Source Release под Java Research License, что вынуждает немного “попотеть” чтоб его добыть.

P.S. За наводку спасибо Dmitriy Kopylenko и его ссылке на реализацию подобного HTTP-сервера на Scala.

WordPress: Exclude post by ID from main loop

Рубрика: Development | 13 December 2008, 23:33 | Vadim Voituk

Очень часто в wordpress, при получении списка заметок посредством создания WP_Query, нужно исключить одну или несколько, с определенными “магическими” ID.

Документация на codex.wordpress.org по этому поводу молчит. Взамен предлагается исключать только заметки из определенной категории.

Как вариант предлагается выполнять фитльтрацию внутри цикла:

$query = new WP_Query(...)
while ($query->have_posts()): $query->the_post();
    if (get_the_ID() == '231231') continue;
    ...
endwhile;

Такой метод мне не очень по душе, потому как он изменяет количество результатов при выводе.

Немного поковырявшись в исходном коде класса WP_Query обнаружилось, что возможность исключить определенные post_ID на этапе запроса все-таки есть:

$query = new WP_Query("post__not_in[]=231231&post__not_in[]=231232&..")

Особенность недокументированного параметра “post__not_in” в том, что его значение обязательно должно быть arrray-ем (оттуда и символы “[" и "]“). Иначе получим warning и неверный результат.

Для “кодирования” списка ID в строку, можно воспользоваться функцией http_build_query().

Сегодня утром Юра, обратил внимание на 2 дополнительных кнопки, которые появились на странице результатов поиска Google: “Promote” и “Remove”:

Что по сути является не чем иным как пользовательским ранжированием страниц.
Грубо говоря нажатием на “Promote” пользователь поднимает сайт на высшую позицию при ранжировании результатов поиска, но не для всех, а только при выводе результатов себе любимому.

И наоборот – нажатие на “Remove” удаляет сайт из дальнейших результатов поиска для данного пользователя (очень симпатично прорисован процесс удаления:).

Для каждой страницы в списке есть индикаторы того, сколько пользователей её “промотировало” и сколько “удалило”:

Пока Google не сообщает как эти данные будут влиять на общее ранжирование страниц, без привязки к аккаунту пользователя, но я уверен что как-то влиять все-таки будут :)

Также к каждой ссылке в результатах поиска теперь можно добавить “Public comment”.
Пока, правда, не знаю как смотреть эти комментарии.

Ещё внизу страницы появилась возможность добавить страницу в результаты поиска.

Жаль нет кнопки “удалить” на контекстных рекламных обьявлениях, но думаю это дело времени :)

P.S. А вы ещё спрашиваете почему Google не купил Digg :) ! (шутка)

Mount tool trick – Symlinks replcement

Рубрика: Development | 4 December 2008, 10:52 | Vadim Voituk

Есть такая категория убогого *nix софта, которая не поддерживает работу с символическими ссылками файловой системы.

К числу таких относится, например, FTP-демон VSFTPd (ох доберусь я как-то до того, кто мне его посоветовал).

Специально для таких случаев хочу посоветовать использовать утилиту mount с параметром –bind.
Она позволяет выполнить mount одной директории в другую, причем даже на другом физическом диске.

Запускается приблизительно так:
mount --bind /dir/from /dir/to

И соответственно запись в /etc/fstab выглядит таким образом:
/dir/from /dir/to none rw,bind 0 0

Имею надежду, что будет полезно тем, кому время-от времени приходится перебрасывать данные между разделами и дисками сохраняя старые директории.

Ремонт ноутбука DELL в Киеве

Рубрика: Just a life | 30 November 2008, 00:20 | Vadim Voituk

Через неделю, после вроде-как найденного решения проблеммы с видео на DELL XPS 1330, оказалось, что рано радовался – проблема начала повторяться с завидной регулярностью – прийшлось обратиться в сервис.

Покопавшись на сайте DELL, выяснил, что гарантийный ремонт ноутбуков в Киеве делает всего несколько авторизированных сервис-партнеров DELL.

В первом, DataLux, мне сказали, что диагностика будет длиться в течении недели, а ремонт – ещё 2-3 недели, при условии наличия нужных запчастей. Если запчастей на складе нет, то доставка займет ещё 4-5 недель. – фигасе! сказал я се!

Во втором (не помню как зовется) вообще сообщили, что будут ремонтировать мой DELL бесплатно, только(!!!) если он куплен у них.
На мой вопрос, не должны ли они, будучи в статусе “Authorized Service Partner” ремонтировать любое оборудование DELL, проданное в любой точке мира услышал феноменальный ответ: “Ну в принципе то должны, но мы так не делаем и бесплатно ремонтируем только ноутбуки, купленные у нас”.
Менталитет, млять! Договор с крупнейшим мировым производителем ценится не дороже бумаги, но которой напечатан.
Как-нибудь,  будучи в плохом настроении,  позвоню в DELL и “накапаю” на таких недо-партнеров – думаю статуса партнера эта шарашкина контора лишится очень быстро.

Дальше по списку на сайте нашел ещё одну компанию, в которой сообщили что с сентября с DELL они больше не работают и дали телефон уже четвертой компании – за что им огромное спасибо.

Итак, если у вас настала жопа гарантиный случай с оборудованием DELL, необходимо позвонить по номеру
8(800) 502 03 20 (бесплатно со стационарных телефонов),
дальше побродить минут 5-7 по их IVR меню выбирая язык и соответсвующий вашей проблемме раздел (серверы, ноутбуки, etc).
После этого обьяснить весьма странному русскоговорящему индусу с ужасным акцентом суть проблеммы, попробовать следуя его инструкциям продигностировать проблему, услышать “К сожалению я вам помочь не могу, вам прийдется обратиться в сервис-центр”.

После этого позвонить в компанию Service.UA по телефону 8(044) 594-97-98, рассказать печальную историю про индуса, получить от них подтверждение и везти железку на Эспланадную 34/2 офис 11.

Ну а дальше как повезет – в моем случае диагностика, и замена материнской платы (включая ожидание её доставки) продлилась 2 недели и 2-3 дня.
О статусе ремонта можно следить непосредственно с сайта, что весьма удобно.

Известные люди в LinkedIn

Рубрика: LinkedIn | 18 November 2008, 14:48 | Vadim Voituk

Не так давно читал о том, что ребята из Microsoft таки подтвердили теорию 6-ти рукопожатий, согласно которой любые два человека на Земле разделены лишь шестью уровнями общих знакомых.

В отличии от психологов, изобретателей теории, которые рассылали письма “циганской почтой”, Microsoft-овцы пошли куда дальше – они проанализировали списки контактов и пути сообщений в IM (MSN что-ль?).

Тогда же мне и подумалось, что куда интереснее отслеживать подобные вещи посредством современных социальных сетей.
Ибо контактов в том же LInkedIn у меня куда больше чем даже в древнющей аське.
Чего только стоит надпись у меня а LinkedIn-профайле:
“274 Connections links you to 4,662,300+ professionals”

Немного покопавшись в поиске LinkedIn, прийшел к выводу, что довольно известную фигуру найти можно даже через 2 рукопожатия.

Возвращаясь к залоговку заметки, привожу небольшой список “знаменитостей” найденных в мною в LinkedIn
(судя по всему это только те, кто попадает в обозначенные 4,662,300+ professionals):
Bill Gates – в представлении не нуждается
http://www.linkedin.com/in/billgates

John McCain – Кандидат в президенты США 2008 года, сенатор
http://www.linkedin.com/in/johnmccain2008

Barack Obama – президент США
http://www.linkedin.com/in/barackobama

Linus Torvalds – думаю в представлении тоже не нужается
http://www.linkedin.com/in/linustorvalds

Michael Dell – основатель и руководитель компани DELL
http://www.linkedin.com/in/mdell

Larry Ellison – основатель Oracle Corp.
http://www.linkedin.com/pub/b/55b/8b0

Greg Doherty – вице-президент Oracle Corp.
http://www.linkedin.com/pub/1/b4/719

Mark Zuckerberg – основатель и CEO крупнейшей соц-сети Facebook
http://www.linkedin.com/pub/0/835/a34

Hillary Clinton – жена экс-президента США и кандидат в президенты 2008 года
http://www.linkedin.com/in/hillaryclinton

Среди тех кого с “пол-пинка” найти в LinkedIn не удалось – Steve Jobs, Sergey Brin, Larry Page, Eric Shmidt, Steve Ballmer.
А при клике на профайл Bill Clinton, получил сообщение “You and this LinkedIn user don’t know anyone in common” (подтверждаю – общих знакомых нет :).

А кто ещё находил в LinkedIn мировые известности?