среда, 30 июля 2008 г.

За что я люблю Python, часть 1

Давно хотел рассказать на примерах чем мне нравится язык Python, и наконец созрел на серию публикаций. Итак...

Начнем с объективных вещей:

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

Пример: есть метод get объекта dict, который возвращает значение по ключу если оно есть, если его нет то возвращается значение по умолчанию.
Код на Java

public void V get(K key) {
return this.values.get(key);
}
public void V get(K key, V default) {
return this.values.get(key, default);
}

Код на python

def get(self, key, default=None):
return self.values.get(key, default)

Чем это хорошо? Давайте посмотрим на типичную эволюцию кода. Сначала у вас было все просто и значение по умолчанию возвращать было не нужно, потом в каком-то месте понадобилось вернуть значение по умолчанию. Что вы делаете в случае Java- либо добавляете метод, либо добавляете if-else блок вместо него и после 5-го такого блока таки добавляете метод и затеваете небольшой рефакторинг. В случае с python вы сразу же добавляете параметр со значением по умолчанию не нарушая прошлый код, просто потому что по другому никак, нет здесь перегрузки методов. Это простой пример, на практике встречаются функции с, например, 5 необязательными разнотипными параметрами и в случае Java это сводится к 2 ** 5 = 32 перегруженых функций, в python это все достигается одним методом И никакого рефакторинга.

*args, **kwargs - аргументы метода и именованные аргументы метода
Помимо возможности передать в метод аргументы которые объявлены в сигнатуре явно, в python вы имеете возможность передавать в метод все что захотите и, с другой стороны, доступаться к этим значениям внутри метода. Как это использовать?
Пример: вам нужно сделать метод который будет генерировать HTML тег IMG с набором аттрибутов, код на Java который это делает невозможен без передачи чего-то вроде hash map с набором аттрибутов (поправьте меня если я не прав) в итоге все выглядит так
Код на Java

public static String imageTag(Map attrs) {
StringBuffer res = new StringBuffer();
for (entry in attrs.entries()) {
res.append(String.format("%s='%s' ", entry.key(), entry.value()));
}
return String.format("<img %s/>", res);
}
.... Вызов метода
Map attrs = new HashMap();
attrs.put("src", "foo.gif");
attrs.put("width", "100");
attrs.put("height", "200")
attrs.put("alt", "бар натуральный")
out.write(Tags.imageTag(attrs));

Код на Python

def image_tag(**kwargs):
return "<img %s/>" % " ".join(["%s='%s'" % (k, v) for (k, v) in kwargs.items()])
.... Вызов метода
print image_tag(src="foo.gif", width=100, height=200, alt=u"бар натуральный")

3 строки вместо 13 всего, 1 строка вместо 6-ти для вызова, а аттрибутов у HTML тегов десятки. В байтах тоже метрика схожая.
Впечатляет? А теперь представьте что вы хотите задать размер по умолчанию 100 на 100 если он не задан.
код на Java

public static String imageTag(Map attrs) {
if (!attrs.hasKey("width")) {
attrs.put("width", "100")
}
if (!attrs.hasKey("height")) {
attrs.put("height", "100")
}
StringBuffer res = new StringBuffer();
for (entry in attrs.entries()) {
res.append(String.format("%s='%s' ", entry.key(), entry.value()));
}
return String.format("<img %s/>", res);
}


Код на Python (дважды спасибо Сергею за исправление)

def image_tag(**kwargs):
kwargs.setdefault('width', 100)
kwargs.setdefault('height', 100)
return "<img %s/>" % " ".join(["%s='%s'" % (k, v) for (k, v) in kwargs.items()"])

Мало того что дополнительного кода меньше он еще и быстрее читается, на что требуются минимальные знания языка.

Продолжение следует...

вторник, 29 июля 2008 г.

Не стойте в стороне

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

На прохання Кабінету міністрів ВАТ «Укртелеком» відкрив телефонну лінію, за якою кожен бажаючий може одним дзвінком перерахувати 10 гривень постраждалим від стихії в Західній Україні.

Номер телефону – 8-900-300-10-90

Також можна надіслати смс-повідомлення на номер 1090.

Джерело: УНІАН



Не стойте в стороне

четверг, 24 июля 2008 г.

Пресс-релиз официального запуска

— Why do you call this version of software «beta»?
— Coz it`s beta than nothing.

Спасибо всем кто 3 месяца помогал отлаживать функциональность. Собственно сам пресс-релиз ниже.

UAProm.net – новый украинский B2B-сервис для среднего и малого бизнеса


UAProm.net – новый украинский B2B-сервис для среднего и малого бизнеса

Новый B2B-сервис для среднего и малого бизнеса UAProm.net за первые три месяца работы в режиме альфа-тестирования привлек более 2000 украинских и зарубежных предприятий, которые завели на нем свои учетные записи



Компания SmartWeb объявляет об официальном запуске интернет-сервиса UAProm.net, который призван облегчить поиск партнеров между представителями бизнес-сектора на украинском рынке.
UAProm.net ориентирован в первую очередь на представителей среднего и малого бизнеса и позволяет существенно упростить их выход на интернет-рынок. Теперь не нужно регистрировать домен, создавать веб-сайт и оставаться один на один с Интернетом, внося солидные инвестиции в онлайн-продвижение. UAProm.net берет эти заботы на себя, позволяя участникам рынка сконцентрироваться на главном – своем бизнесе.


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


Цель проекта — облегчить доступ предпринимателей на интернет-рынок, к возможностям интернет-рекламы, сделав быстрым и удобным поиск партнеров.


Модель работы — пользователь регистрируется на сайте, предоставляет данные о компании, товарах и услугах, прайс-лист, список вакансий, добавляет новости и статьи. Эта информация публикуется как на личном сайте компании вида <имя компании>.uaprom.net, так и в каталоге главного сайта и лентах обновлений. Далее информация индексируется поисковыми системами и при наличии актуального контента пользователь получает целевые переходы с них и с основного каталога проекта. Сотрудники UAProm.net также дают бизнес-пользователям рекомендации по привлечению посетителей на свои сайты, применяя различные виды интернет-маркетинга.



Цитаты:
- Николай Палиенко, исполнительный директор UAProm.net: «До официального запуска UAProm.net функционировал три месяца в режиме тестирования, и уже за этот период на нем зарегистрировалось более 2000 представителей бизнеса, что свидетельствует о высоком интересе предпринимателей к возможностям продвижения посредством B2B-сервиса. Мы получили десятки благодарностей от наших клиентов, которые давно мечтали о своем представительстве в сети Интернет».
- Денис Горовой, директор по маркетингу UAProm.net: «В Украине сейчас нет хороших бизнес-ресурсов в нашей области, а те, что работают, по своему уровню развития давно не поспевают за современными тенденциями. Все это мешает B2B-сервисам превратиться в массовое явление, такое, каким стал Alibaba.com в Азии. Ведь именно в массовости и состоит залог успеха подобного проекта. Наша цель — развивать сервис так, чтобы через некоторое время наши пользователи относились к реализации своих бизнес-потребностей с помощью UAProm.net с той же непринужденностью, с которой они используют Google для поиска и ICQ для общения».
- Тарас Мурашко, технический директор UAProm.net: «Данная модель работы в Интернете отлично зарекомендовала себя на мировом уровне. B2B-сервисы являются наиболее эффективным стандартом присутствия в Интернете для небольших и средних компаний. Они позволяют получать целевых посетителей и потенциальных клиентов как с разных частей страны, так и из-за рубежа».

В ближайших планах SmartWeb:

Выход на рынки Беларуси и Казахстана и старт B2B-сервисов BELProm.net KAZProm.net.



Полезные и интересные данные:
- Регистрация на UAProm.net бесплатна для всех компаний.
- Число посетителей и зарегистрированных компаний на B2B-портале увеличивается с каждым днем.
- Одновременно с UAProm.net запущен аналогичный проект для российского рынка RUProm.net, а также находятся в стадии тестирования ресурсы для Беларуси (BELProm.net) и Казахстана (KAZProm.net).
- Сейчас B2B-сервисом ежедневно пользуется более 1500 посетителей и регистрируется около 30 новых компаний, а также происходят 5-10 бизнес-контактов между пользователями системы.

- Схожая бизнес-модель лежит в основе ресурса Alibaba.com, который оценивается в 60 млрд долл и его посещают более 23 млн бизнес-пользователей. К данному B2B-сервису обращаются практически все китайские компании.
- Большинство азиатских компаний среднего и малого бизнеса находят клиентов и заключают контракты именно посредством B2B-ресурсов.

Более подробную информацию можно получить:
- По телефонам : (044)369-51-13
- По электронной почте: info(собака)smartweb.com.ua
- Прочитать в блоге http://blog.smartweb.com.ua

О компании SmartWeb: основана в 2007 г. группой инициативных молодых людей, которые до этого работали в известном американском интернет-стартапе Sonopia; специализируется на запуске и сопровождении инновационных интернет-проектов. Владеет ресурсами UAProm.net и RUProm.net.

среда, 16 июля 2008 г.

Интересно, когда в нашей стране будут нормально относиться к понятию "Авторское Право"?

Сегодня мы обнаружили вот такой сайт - Справка.УА. Сравните его с Алибабой и угадайте с трех раз, кто у кого своровал.

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

Давайте уважать чужой труд и время.

Платные сервисы и первый клиент

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

На данном этапе, мы реализовали практически все что задумали изначально, и что подсказывали нам клиенты, теперь будем активнее заниматься продвижением, SEO, маркетингом, PR. Лето мертвая пора для бизнеса, но может это нам и на руку, спокойнее будет экспериментировать.

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

среда, 2 июля 2008 г.

Бигмир - официальный продавец Google AdWords в Украине

Получили сегодня следующее письмо.

Уважаемый пользователь bigmir.adsearch!

Сообщаем Вам, что с 15 июля 2008 г. компания Бигмир-Интернет становится официальным продавцом Google AdWords в Украине и открывает специальное подразделение Bigmir.context, которое займется профессиональным обслуживанием клиентов Google Adwords в Украине .

Изменения также коснутся страницы search.bigmir.net, которая с 15 июля будет выдавать результаты поиска, найденные поисковой системой Google с учетом географического таргетинга. Таким образом, портал www.bigmir.net становится сайтом-партнером поиcковой сети Google в Украине.

Мы рады сообщить, что покупка контекстной рекламы на bigmir.net с 15 июля будет проводиться через систему Google Adwords, что значительно облегчает обслуживание и управление Вашей рекламной кампанией на www.google.com.ua и на www.bigmir.net одновременно.

Для текущих рекламодателей системы bigmir.adsearch мы подготовили несколько возможных вариантов продолжения нашего сотрудничества в системе Google Adwords:

1. У Вас еще нет аккаунта в Google Adwords, но Вы бы хотели продолжать рекламироваться на www.bigmir.net, а также на www.google.com.ua и других партнерских сайтах Google:

Мы закроем Ваш текущий аккаунт в Adsearch и создадим Вам новый аккаунт в Google AdWords.
Наши специалисты перенесут Ваши объявления и ключевые слова в новую систему и настроят ее работу. При этом мы переведем остаток денег из bigmir.adsearch на Ваш новый аккаунт в Google AdWords. Команда наших специалистов будет полностью обслуживать Ваши рекламные кампании с учетом Ваших интересов и пожеланий. Вы всегда сможете контролировать эффективность проведения рекламной кампании и расходы по ней с помощью системы многоуровневых отчетов.
Вам будут доступны такие варианты пополнения Вашего Adwords аккаунта: банковский перевод, платежная карта Visa или Mastercard, Webmoney, Интернет.деньги.

Наша комиссия за комплексное обслуживание аккаунта составит 10% от суммы каждого платежа при пополнении. Комиссия не начисляется первые 90 дней с начала работы Вашего Adwords аккаунта.


2. У Вас есть аккаунт в Google Adwords, которым Вы планируете управлять самостоятельно, но хотели бы пополнять аккаунт банковским переводом, через систему Webmoney или Интернет.деньги:

Мы закроем Ваш текущий аккаунт в Adsearch и присоединим Ваш существующий аккаунт AdWords
к нашей системе приема платежей. Остаток неиспользованных денег из bigmir.adsearch мы перечислим на Ваш текущий аккаунт Adwords. Вы полностью управляете Вашим аккаунтом Adwords как и ранее, используете удобную и простую систему оплаты от bigmir.net, а также полный пакет бухгалтерских документов от компании Бигмир-Интернет.

Наша комиссия за прием платежей в пользу Google Adwords составит 7% от суммы каждого платежа при пополнении. Комиссия не начисляется первые 90 дней с даты присоединения Вашего Adwords аккаунта к нашей системе приема платежей.

Пожалуйста, проконсультируйтесь с нашими специалистами и определите наиболее удобную форму дальнейшего сотрудничества по тел. 044 496-1114 или по email support@conext.bigmir.net

Если ни один из предложенных вариантов не может быть Вами принят, мы закроем Ваш аккаунт в Adsearch и вернем остаток денег на Вашем балансе на момент его закрытия.

С уважением,

команда Bigmir.context


Отлично, что теперь можно будет платить безналом юр. лицам, что позволит избежать серых схем. Плохо то что Google похоже не спешит открывать у нас официальное представительство и вообще серьезно обращать внимание на Украину. Лично нам очень нужна карта Украины, это позволит нам сделать наш сервис более интересным, но когда она появится - тайна за семью печатями. Еще плохо то что данное сотрудничество не предусматривает плату за AdSense, что позволило бы ускорить процесс который длится 3 месяца и повысить привлекательность программы в уанете.