31 мая 2006

Новая группа ua_mysql

Создал новую группу на Google Groups, называется ua_mysql - пусть народ делится инфой...

Google Code Jam: задачи первого раунда

Зашёл на Google Code Jam Arena посмотреть, как бьются программари. Кстати, много наших там - я и в чате по-русски пообщался, и имена типа Danko или Olegator о многом говорят.

В этом туре задачи на 300, 500 и 1000 очков.

Пример задачи на 300 очков: вы хотите послать несколько продавцов из точки 0 в точку 1. Каждую точку, кроме тт. 0 и 1, должен посетить только один продавец, чтобы иметь возможность продать один и тот же товар несколько раз. Символ j элемента i хранит информацию о том, связаны ли точки i и j симметричной связью (1 - связаны, 0 - нет). Посчитайте максимальное число продавцов, которые могут быть посланы. Явно задача про графы, но что-то не припомню, как такое решается...

Пример задачи на 500 очков: полиндром - это строка, читающаяся одинаково в обе стороны (например, "казак"). Нужно найти максимальный по длине полиндром в строке. Например, строка "acdadc" имеет два максимальных полиндрома - "а" и "сdаdс". Все остальные полиндромы, типа "dаd" или "с", могут быть расширены до "сdаdс", потому не являются максимальными. Ну, полиндромы. Тут ещё можно что-то придумать, хотя моё решение обычно не влезало в 2 секунды ограничения.

Пример задачи на 1000 очков: есть три кучи блоков - две вне склада, одна внутри. Есть кран для переноски блоков, который может переносить один блок за раз. Мы хотим перенести все блоки в склад. Более тяжелый блок нельзя ставить на более легкий. Требуется вычислить минимальное количество перестановок. Ну, тут ясно - ханойские башни, когда-то даже где-то я читал, как это решать.

Точно могу сказать, что за час бы я не уложился - дольше решение искать, чем прогать. Хотя если всё время натаскивать себя на такие задачки, то наверняка потом будешь щёлкать их как орехи...

Бесплатный Brainbench

Только что узнал, что сегодня последний день, когда все Brainbench-эказмены доступны бесплатно. Они так делают время от времени для рекламы, обычно один экзамен стоит несколько десятков баксов.

Вопросы типа: 'как называется человек, управляющий авто? водитель, водица, вождь, рульщик'Зачем сдавать эказмены? У вас есть возможность нахаляву получить несколько модных значков для вставки в резюме. А ещё можно выбрать себе какую-то роль, скажем, Web Developer, и сдать целенаправленно под неё 8 экзаменов, тогда вам вышлют замечательно оформленный сертификат веб-девелопера, который можно гордо прибить на стенку в туалете. Тщеславные мальчики типа меня очень это любят :]

P.S. По заказам трудящихся - мои результаты ударной сдачи экзаменов.

P.P.S. Не отчаивайтесь, что сегодня последний день халявы:
  1. их сервак стоит на Западе, значит, разница во времени играет в нашу пользу (7 часов, если они в Америке),
  2. вы можете запастись на некоторое время (кажется, месяц) пин-кодами от нужных экзаменов,
  3. обычно осенью устраивают ещё одну сессию халявы.

30 мая 2006

Как начать своё дело

Хочу поделиться несколькими на мой взгляд полезными комментариями, как же всё-таки начать своё дело:

1. Учите матчасть. Рекомендую к прочтению две книги, которые я постоянно проглядываю и так же постоянно нахожу что-то новое или недоосмысленное:
  • Бодо Шефер. Путь к финансовой независимости. Из неё вы почерпнёте информацию о природе денег, о продуктивном формировании вашего отношения к ним, о различных источниках дохода; и даже если для вас это всё будет не ново, в чём я искренне сомневаюсь, книга мотивирует к действую, а это дорогого стоит. Покупка этой книги - самые удачно вложенные 20 гривен :]
  • Геннадий Павленко. Как делать деньги. Эта книга бесплатна ввиду своей электронности. Автор доносит до вас мысль, что стремиться надо не к деньгам, а к самореализации в творчестве, а деньги приложатся. Данная книга - практическое руководство по созданию такого образа жизни. Так же мощно мотивирует к действию.
2. Всё, что вам останется сделать после прочтения этих двух книг - начать применять описанные в них методики: уделять время собственным мечтам, прислушиваться к собственным желаниям, откладывать часть ЗП, заняться самообразованием. Тут могу кое-что порекомендовать от себя: не надо тупо воплощать сказанное, примените всё к своим реалиям. Допустим, мне нужно выучить английский, чтобы достичь дальнейших целей, но классическое изучение вроде делания домашней работы даётся мне с трудом, т.к. я по натуре "авральщик" - накапливаю кучу работы, а потом "программирую всю ночь". Так вот самоорганизоваться для меня очень трудно и долго, но это необязательно для изучения ин-яза - просто нужно делать это так, как нравится лично тебе: петь пестни любимых зарубежных исполнителей, заглядывая в их тексты, смотреть фильмы с субтитрами, читать блоги на английском, можно книжки какие-нибудь или журналы, даже можно поработать переводчиком бесплатно (мало кто откажется, поверьте), итд. Применяйте фантазию, это окупается!

3. Никого не слушайте и найдите области, которые интересны именно вам. Чтобы понять, что вы на правильном пути, нужно уловить в себе лёгкий дискомфорт, когда дело доходит до модных занятий:
  • сейчас все программируют на C#, а вам он не нравится, а все друзья говорят, мол чё ты как лох, все нормальные люди уже на него перешли;
  • все играют на гитаре и вас подбивают, а вас не тянет;
  • весь город голосует за одного кандидата, а он вам не нравится;
  • все однокурсники на машинах, а вы как-то всё больше пешком, и не надоедает;
  • все отмечают Новый год за столом с оливье и шампанским, а вас тошнит от этого;
  • все гонят на Бритни Спирс, а вам вроде даже и нравится иногда;
  • все отращивают солидное пузо, а вы хотите кубики на прессе.

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

Найдя эти области, найдите себя в них.

4. Трудно давшийся мне пункт: делайте всё это, не уходя с основного места работы. Не надо бросать работу и кидаться в бизнес, а там будь что будет. Это трудно и дорого. Считайте, что отныне вы работаете на своё лучшее будущее и готовитесь мягко сойти с этой дистанции.

5. Если ваша проблема именна в "начать" (идея есть, а сил нет) - найдите напарника. Вам должно быть просто удобно вместе. И постарайтесь каждый сделать 80% от всего объёма работы, так вы добъётесь и успеха, и взаимоуважения.

6. Не верьте , что "нового ничего уже не придумаешь", "всё украдено до нас" и "в нашей стране бизнес не сделаешь". Я тоже так раньше думал... Просто смотрите и в себя, и вокруг.

7. Я пользуюсь методом 3B: лучшие идеи приходят в автобусе, кровати или ванной (bus, bed, bath) - отличная возможность приятно и продуктивно помечтать, попридумывать что-то новое или более эффективное, в общем, мини-медитация. Чтобы ещё лучше срабатывало, постарайтесь хорошенько поработать между каждой B, чтобы мозги и тело отдыхали в этот промежуток. Как результат: я перестал читать со скуки транспорте - зачем кушать чужие идеи, когда столько своих?!

В итоге, если в двух словах выразить то, что нужно для счастливой жизни и успешного бизнеса, на мой взгляд, это осознанность и творчество. Первое помогает заглянуть в себя, второе - вытащить отттуда сверкающие вещицы.

29 мая 2006

Как стать пpедпpиимчивым и богатым

Нашёл недавно "Креативный ключ коммерсанта" - это такой инструмент, позволяющий найти нестандартное решение к проблеме, используя ассоциации того, кто этот инструмент использует. Действует намного эффективнее, чем т.н. метод Менделеева - копал, забил, уснул :]

26 мая 2006

Работнички

Запостил я недавно на одном сайте объявление о вакансии, открытой в компании, где я работаю:

Требуется веб-разработчик в Севастополе, можно в Крыму. (Географическое органичение накладывается в связи с необходимостью частых телефонных переговоров) Первый проект будет в основном на JavaScript (графический wyswig-AJAX-редактор полиграфии), поэтому к знанию этого языка предъявляются повышенные требования.

В ответ пришло несколько писем, одно из которых похоже скорее на спам, чем на ответ от серьёзного программиста:

От: Валерий Курочка
Тема: Предложение работы

Уважаемые работодатели!

Предлагаю в качестве исполнителя наш семейный бизнес из 4 специалистов PHP и баз данных(я, мой зять, сын и племянник). Главный специалист - мой зять, работает по заказам из Германии и США. Живем все в Харькове. Проблем со связью не будет, если купить пакет мобильной связи типа "Семья", "Мой любимый номер" и пр., что будет даже дешевле, чем Укртелеком. Преимущества проживания в таком крупном научном и производственном центре как Харьков, я думаю, не стоит. Отдыхаем мы обычно в Севастополе (сейчас на ул. [такой-то]), так что могли бы скоро встретиться.


Ясное дело, что резюме в письме не было :]

Может, взять?

RSS Gmail

Как-то после перезда на другую квартиру я меня появилась такая идея: сделать RSS для каждого своего почтового ящика, и воткнуть эти ленты в онлайн-ридер, тогда мне не придётся последовательно логиниться во многих почтовых системах (ну много у меня ящиков), чтобы узнать, есть ли новая почта. Всё в принципе заработало: я нашёл специальный класс IMAP2RSS на phpclasses.org и загнал ленты в экспериментальный RSS-ридер от Google (глючный пока что до ужаса). Есть, правда, небольшие проблемы с русским, но это придёт.

Проблема была с ящиком на Gmail - он IMAP не поддерживает, да и POP через хитрые соединения. Короче, я было на него забил, а потом нашёл готовый фид от Gmail: https://mail.google.com/mail/feed/atom. В ридере надо только вбить имя и пароль.

25 мая 2006

Генератор казенных речей

Прикольная таблица, помогающая создать текст отчета официального вида, т.е. чтобы слушатели уснули. Что-то такое советско-партийное напоминает :]

24 мая 2006

Отборочный тур Google Code Jam прошёл по плану

Сегодня в час по местному времени прошёл системный тест решений программистов-участников для двух задач. Я набрал плановое количество баллов, равное нулю.

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

С момента открытия первой из двух задач начинает капать счётчик обратного отсчёта, выставленный на 60 минут. Одна задача приносит максимум 250 очков, вторая - 500. Каждую секунду какое-то количество очков снимается, т.е. 250 очков за первую задачу можно получить только если мгновенно после открытия засубмитить правильный код.

Задачи можно было писать на Java, C++ или C#. Я выбрал C++, поскольку это максимально близко по синтаксису к РНР, который я знаю хорошо. Разумеется, мои знакомые недоумевали, как так можно - не знать C++ и участвовать в конкурсе програмистов на этом языке. Отвечаю: конкурс был не на знание C++, а на скоростное решение трудных задач.

Все участники были приписаны к одной из 30 виртуальных комнат, задачи в которых были разные. Так, я думаю, организаторы боролись с умными ребятами, зарегавшими больше одного акаунта для участия: типа прочитал задание, решил себе в офлайне, а потом в другом акаунте запостил. А так пойди попади в нужную комнату...



Задачу-250 я решил, судя по тому, что 5 тестовых заданий дали правильные ответы, плюс решения других людей похожи на моё (их можно было посмотреть по окончании тура). Почему за неё не дали очков? Было ограничение, что программа должна решать задачу не дольше 2 секунд. Я закодил немного недодуманный алгоритм, поэтому, я думаю, не уложился, когда/если системный тест задал максимально допустимые входные параметры (50х50). Задача состояла примерно в следующем (постить оригинал не буду, это запрещено, но смысл передам): есть двумерный массив, состоящий из букв (квадратный). Требуется посчитать, сколько нужно сделать исправлений букв, чтобы каждая строка и каждый столбец стали полиндромом (читались одинаково слева направо и справа налево). Как я теперь думаю, можно было ограничиться проходом только по одной четверти квадрата, а я проходил по половине (почему-то вот так я решил).

Задача-500 была посложнее: есть 3-мерный массив координат астероидов. На каждом астероиде стоит излучатели, направленные на каждый из излучателей на других астеридах. Излучатели испускают лучи друг в друга, по которым передаётся инфа. Например, между двумя астероидами расстояние 5 парсек; один излучатель испускает луч длиной 2 парсека, а второй 3 (зависит от мощности излучателя, т.е. максимально возможной длины луча). Чем мощнее излучатель, тем он дороже. Ответ: найти минимальную требуемую мощность излучателя, которому приходится испускать самый длинный луч. Я решил втупую: проходим по массиву и находим максимальное расстояние по формуле sqrt(x*x + y*y + z*z), которую я придумал по аналогии с 2-мерной формулой. Полученное расстояние делим на 2 (типа каждый излучатель простреливает половину требуемого расстояния). Такое решение не прошло 3 из 5 тестовых заданий, давая больший ответ, чем надо, так что я не рассчитывал набрать баллы на ней.

Трудно себе представить, что за задачи будут дальше.

Зато я теперь более трезво оцениваю свои программерские силы. А так хотелось футболку...

Google Россия

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

20 мая 2006

почта на i.ua

Появился новый украинский почтовый сервис i.ua; находится в бета-стадии.
новый украинский почтовый сервис i.uaРегистрация происходит по приглашениям, как в Гугле, но, в отличие от него, приглашение можно запросить у администрации сервиса :]

Ничего сверх-замечательного в работе сервиса пока не заметил, кроме того факта, что форма написания писем ну очень напоминает мэйл.ру-шную. Место под почту - 50 метров, так что чую, что избалованный гуглом народ будет активно плеваться.

Я всё-таки зарегал себе мыло, потому что:

  • короткий домен
  • есть свободные логины
  • чисто патриотические мотивы - фиг с ними с 2 гигами на гмейле, всё равно я больше 10-20 метров никогда почты не накапливал.

17 мая 2006

Четверговая активность

Читал недавно пост в блоге, автор которого недоумевает, почему мол пик активности читателей не в понедельник или пятницу, а именно в четверг. Щас решил вот сам посмотреть, когда у моего блога "пик". И что вы думаете? Тоже четверг!

16 мая 2006

Стереотип

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

А что я ещё заметил (уже в песнях), особенно после прочтения его книги, так это его раздражение по поводу лицемерия церкви ("we so like to sell You") , тупого телепожирания ("the screen is us and we're TV"), а также безумную неудовлетворённость собой, от которой он, похоже, безуспешно пытался уйти в мир наркоты:
  • I wish I wasn't me
  • Everything turns to shit
  • No drugs in this world can save you from yourself

Вывод: выключи телик и начни верить в себя.

P.S. Что ещё занимательно - больше всего его персоной интересуются страны южнее США: Аргентина, Перу, Мексика, Чили... США вообще в топ-10 нет. Стареет Marilyn Manson.

15 мая 2006

Google Trends

Интересный продукт предоставила лаборатория Гугла: можно посмотреть сводку статистики по городам/странам/языкам касательно определённых поисковых запросов. Тупо, что запросы в основном на латинице, и каждая попытка ввести новое слово сопровождается анти-спам сообщениями.

Что ещё интересно: по запросу "child porno" всех обогнал Санкт-Петербург, а "XML" - Индия.

13 мая 2006

Google Code Jam

Одна из далёких целей в моей карьере - поработать в дублинском отделе Гугла. Как одна из возможностей попасть туда - участие в проводимых этой компанией соревнованиях среди программистов Google Code Jam; в этом году они проходят среди европейских нас.

Регистрация продлится до 23 мая. До этого времени можно скачать специальную прогу - Arena - в которой программеры будут в режиме реального времени писать свои решения на поставленные 250-, 500- и 1000-очковые задачи, удалённо компилить и тестить.

Вот так это всё выглядит

Из языков можно выбрать Java, C++ или C#. Я знаю только PHP, поэтому в срочном порядке учу C++ :]

Украинские фриланс-сайты

Вчера обнаружил, что есть, оказывается, и украинские сайты для фрилансеров. Странно для меня немного, что проекты на них постят в основном именно наши заказчики, поэтому цены нулями не пестрят.

Первый проект, который я заметил - Weblancer. Проектов довольно много, народ активно чё-то делает. Приятный ресурс, я с удовольствием пошарился. Нашёл пару приколов:
  • например, в "Правилах использования сервиса безопасного проведения сделок" есть такая глубокомысленная фраза: Фрилансер (либо заказчик) ознакамливается с содержанием договора, и ..., акцептует данный договор.
  • или вот люди постят: Платформа не важна. Работать должно под Windows.

Другой ресурс новый, поэтому пока пустой: 4 проекта всего, но может быть, он станет скоро популярен: freelance.co.ua, тем паче, что работа в нём бесплатна.

12 мая 2006

Моя статья про Blogger

Как я уже писал, меня приняли в команду журналистов под руководством Алекса Экслера.

Вчера вышла моя первая статья в этой ипостаси "Создание блога на Blogger.com". Теперь я знаю, каково быть профессиональным журналистом (смайлик ставить?).

04 мая 2006

Выставки Украины

Поискал какие-нибудь ресурсы, имеющие более-менее полную инфу по выставкам. Могу порекомендовать парочку:
  • Укрбизнес - так себе (встречаются записи типа "delete me", и как правило на актуальные выставки надо листать), но покопаться можно;
  • expoua - тут как-то посерьёзней и побольше.

03 мая 2006

Как заставить себя делать пробежки

Чтобы начать заниматься спортом, нужно себя не заставлять, а заинтересовывать, мы же себя любим, верно?

Меня вдохновило интервью Мэтью Макконэхи в одном из последних "Men's Health" - его идея в том, чтобы каждую пробежку превращать в маленькое приключение, забегая в новые места или залезая каждый день всё глубже в тёмную пещеру по пути.

Я попробовал этот творческий приём - и хотя пещер в моём районе маловато, я нашёл-таки пару интересных мест для изучения трусцой, и, честно говоря, я стал мало замечать сам бег. Похожее состояние у меня было когда-то давно, когда я сдал на права, и вождение машины стало превращаться из цели в средство.

Must do!