Твиттер — первые впечатления

Апрель 6, 2010

Около месяца я активно использую твиттер и успел сформировать свое мнение о данном сервисе, коим и хочу поделиться.

Как я вышел на твиттер

На конференции i-Community, на которой я не был, но информации с нее так или иначе стала доступна, в частности упоминалось, что за последний год число русскоязычных пользователей твиттера возросло в десятки раз и на данный момент составляет примерно 200 тысяч пользователей (http://www.interfax.ru/society/news.asp?id=126437). Мне, как активному человеку, было бы глупо не посмотреть на так бурно развивающийся в рунете тренд. Надо сказать, что аккаунт на твиттере у меня был зарегистрирован давно, но пребывал в заброшенном состоянии.

Начало

Начал я с того, что зафолловил Константина Рыкова (http://twitter.com/rykov) — известного интернет-деятеля и политика, который в тот же день начал свой (очередной) уход из твиттера и вся лента была засорена обсасывванием этой темы.  Затем я прошелся по тем, кого фолловит Максим Спиридонов (http://twitter.com/MaximSpiridonov), подкасты которого я нахожу очень полезными и интересными. В общем, дня за 3 я сформировал свою ленту.

Что понравилось

  • Формат. Много говорилось про эти 140 символов и плохого и хорошего, но мне он однозначно подходит! Потому как не всегда нахожу время писать объемные посты в блог, а некоторые мысли хочется оставить где-то: твиттер для этого более чем приспособен.
  • Скорость.  Главные новости распространяются с очень большой скоростью — ретвитты рулят. Вчера во второй половине дня я поймал себя на том, что написал «Боян» на видео про русских, выражающихся про iPad, хотя узнал об этом сам только сутра.
  • Интересная информация. Некоторые пишут про действительно интересные вещи.
  • Новые контакты. Сама неформальная атмосфера твиттера позволяет создавать связи с людьми, с которыми в реальной жизни пересечься либо очень трудно, либо нереально.

Что не понравилось

  • Достаточно много спама — постоянно добавляются / удаляются аккаунты содержащие один спам.
  • Много мусора — некоторые очень дословно переводят «What’s happening?» и пишут всякую муть: «Поел», «Поспал», «Пошел в туалет», «Выхожу на улицу» и т.п. Я уже и сам начал замечать у себя такие посты — так что периодически бью себя по рукам!

Чего я жду от твиттера

  • Мне как разработчику интересно привлечь новых пользователей на мои проекты и получить обратную связь от них. Однако, пока я не совсем понял, как в 140 символах объяснить, что это не спам, я не бот, а сам проект на данном этапе вообще некоммерческий. Соответственно, как только разберусь — напишу.
  • Знакомства с интересными людьми.

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

Мой твиттер: http://twitter.com/dmitko

Why dmitko.ru was down

Апрель 6, 2010

Весь день мой блог бы в дауне с ошибкой Cannot allocate memory. После установки значения в php.ini memory_limit=32М вместо 8M сайт поднялся.
Извините за неудобство.

Что нового в моем гео-сервисе

Март 23, 2010

Недавно в моем маленьком и уютном гео-сервисе произошли некоторые изменения:
1. Он переехал с http://1adg.ru на http://location.dmitko.ru/ — проверьте, должно работать!
2. Регистрация открыта для всех!
3. Появился новый Windows mobile клиент любезно разработанный http://www.softexpanse.com — посетите страничку Программное обеспечение для получения дополнительной информации.

Enable IE8 to pass username and password in url

Март 23, 2010

To disable the new default behavior in Windows Explorer and Internet Explorer which does not allow to pass username and password in urls, create iexplore.exe and explorer.exe DWORD values in the following registry keys and set their value data to 0.

HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE

P.S. Works in Windows Server 2008

check login decorator for json responses

Март 21, 2010

Django has a login_required decorator that redirects to the login page if user is not authenticated, here I’ll show how to write a custom decorator for json responses. If the uses is authenticated then decorated function returns the desired data otherwise some error in json format.
NB — this decorator is for view functions with request as a first argument.

import simplejson as json

def check_login(view_func):
	def check(*args):
		request = args[0]		
		if not request.user or not request.user.is_active:			
			return HttpResponse(json.dumps({"error" : u"%s" % strings.loginRequired}))
		else: return view_func(*args)
	return check

It also uses simplejson package that can be downloaded from here.

Usage:

@check_login
def view_func(request):
	return json.dumps({some data})	

dynamic forms in dajngo

Март 18, 2010

Django has a very convenient forms framework and I want to show how to implement a form with dynamic set of fields.
First — declare a form class:

from django import forms

class SomeAddressForm(forms.Form):
	pass

Then the tricky part — declare a function that returns type of dynamic form:

def getAddressForm(addMoreField):	
	fields = {"city" : forms.ModelChoiceField(queryset=City.objects, label=strings.city, empty_label=strings.notDefined),
		"address" : forms.CharField(label=strings.address),
		"phone" : forms.CharField(label=strings.phone),
		"email" : forms.EmailField(label=strings.email),
		}
	if addMoreField:
		fields["someBoolField"] = forms.BooleanField(required=False, label=strings.boolLabel)
        return type('SomeAddressForm', (forms.BaseForm,), { 'base_fields': fields })

So, there is a static field set in the variable fields and some additional fields could be added if some condition happens (here a bool variable addMoreField is true).
Now in a view function call getAddressForm(true)() — to create a form with additional fields and getAddressForm(true)(data) — to create a bound form.

add custom styles to yui datatable

Март 16, 2010

If you want to change styles of yui components — it’s easy. All you need is to make some overriding in your css files. My example looks like this:
datatable

As you can see, I don’t want most borders and gradient backgrounds. This is done via the following style overriding:

.yui-skin-sam .yui-dt th
{
	border-right: 0px solid;
}

.yui-skin-sam .yui-dt td
{
	border-right: 0px;
}

.yui-skin-sam .yui-dt table
{
	border: 0px solid;
}

.yui-skin-sam .yui-dt th
{
	background:#FFFFFF;
}

To find what style I need to override I use FF’s firebug. More about skinning datatable you can find here

  • datatable

Have ascii coding error in django admin?

Март 10, 2010

If you have some unicode data in tables e.g. some Russian names and want them to be displayed  by default you need to do some trick:

class SomeTable(models.Model):
	name = models.CharField(max_length=def_max_length)	

	def __unicode__(self):
		return "%s" % self.name

See that — instead of returning self.name directly I returned «%s» % self.name and admin panel is shining!

.ready() experience

Март 5, 2010

jQuery has a rich set of functions including .ready() http://api.jquery.com/ready/ which is very helpful if you want to perform some operations on page ready. Initially I thought — wow! I can make whole body invisible until it’s ready (no working garbage apper). After done that I noticed that pages became very slow. After some investigation I realized that while my scripts are on the same location others like Google Maps are somewhere far and it may take significant time to load and evaluate them while all other data are ready and can be viewed. So don’t blame django :) use profilers first!

Django is slow?

Март 2, 2010

Check that Debug=False and that Google Analytics is off! In my case analytics slows speed dramatically.

 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org