16 January 2010

Full text seach coming to App Engine soon?

At Google I/O 2010 there will be a session Next Gen Queries which will be partly on work done to get the full text on App Engine to be more usable. They are not telling what exactly will be proposed. One additional thing mentioned is filtering and sorting for zigzag queries.

I have to inform people not aware of it - exact search on PrzepisyMM.info is using this kind of queries and currently Datastore does not really allow to do sorting in this case because of exploding indexes. If they add sorting and filtering for zigzag, it will not solve all full text search problems but will be much, much more usable (no more zigzag queries sorting in memory which of course doesn't scale for results above 200, not to mention the 1000 limit).

12 January 2010

PrzepisyMM.info wystartowały

Miło mi poinformować, że w niedzielę została uruchomiona witryna z Przepisami diety Montignac. Witryna pozwala zbierać i dzielić się przepisami ze znajomymi lub ze wszystkimi osobami i korzysta z technologii Google App Engine oraz Google Friend Connect.

Na tę chwilę witryna znajduje się w minimalistycznej fazie rozwojowej. Na razie nie znajdziesz tam wyrafinowanej grafiki ani wielu przepisów, ale mam nadzieję, że się to zmieni.

Witryna stanowi praktyczny eksperyment z serwerowej integracji z GFC (nie jest jeszcze zbyt głęboka), by utworzyć bardzo specjalistyczny portalik z modnym obecnie aspektem społecznościowym. Dodatkowo pozwoliła mi lepiej poznać kilka narzędzi wymienionych na stronie O aplikacji, między innymi framework Kay (a z nim Jinja2, Werkzeug i Zine), CleverCSS (framework CSS) i Smart Sprites (sprite'y CSS).

Moje boje z wyszukiwaniem pełnotekstowym w Google App Engine opisałem w jednym z wcześniejszych wpisów.

6 January 2010

Simple nofollow filter for Markdown (Python)

I just want to share the simple Markdown extension that will add rel=nofollow to all <a> links generated by Markdown. The solution is simplistic, but it is meant to be used in user comments to not drain URL juice out of site or to lower position by bad urls mentioned by users (SEO). The code is based on the idea from Django Snippet 312.


import markdown
import re

R_NOFOLLOW = re.compile('<a (?![^>]*rel=["\']nofollow[\'"])')
S_NOFOLLOW = '<a rel="nofollow" '

class NofollowPostprocessor(markdown.postprocessors.Postprocessor):
def run(self, text):
return R_NOFOLLOW.sub(S_NOFOLLOW, text)

class NofollowExtension(markdown.Extension):
""" Add nofollow for links to Markdown. """

def extendMarkdown(self, md, md_globals):
md.postprocessors.add('nofollow', NofollowPostprocessor(md), '_end')

def makeExtension(configs={}):
return NofollowExtension(configs=configs)