Namecheap.com - Cheap domain name registration, renewal and transfers - Free SSL Certificates - Web Hosting

Разработка mini-cms для MFA сайтов.

Monday, July 4th, 2011

Soooo, mini-cms for mfa sites – на жанге! Джанго отличный фреймворк (говорят даже что это один из лучших продуктов что сейчас вообще есть), там предусмотрено все что нужно для быстрой разарботки веб-сайтов, каждая мелоч, а философия фрэймворка предполагает многократно использовать приложения (apps почти как плагины в вордпрессе) которых наваяли уже тысячи и почти все что может понадобится можно найти на гитхабе и без проблем подключить на свой сайт.

Вообщем какие требования для начала к mini cms?

  • Желательно иметь возможность менять themes. Ок, не вопрос.
  • Урлы вида http://site.com/article-name или http://site.com/category/article-name
  • сайтмап
  • рсс фид

Предлагайте в комментах, что еще можно добавить.

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

Можно скопировать себе, поставить джангу и поиграться, на линуксе все просто, поставил git и…

git clone https://github.com/istinspring/mini-cms-for-mfa.git mini-cms-for-mfa

Как там в виндовс, хз, win как платформа не предназначена для вебразработки, линукс гораздо удобнее и все к чему вы привыкли на винде, кроме игр, есть и на линуксе.

Описание, фичи, процесс разработки

Ситуацию с земами (themes) разруливал впервые, поэтому пришлось поэкспериментировать. Хотел сначала написать themes engine который отдавал файлы в соответствии с текущей активной темой, типа как в вордпрессе, но это долго, мутно и генерирует лишние запросы к базе данных, что как бы не очень круто. Поэтому решил сделать по другому, оптимальным решением, как мне кажется будет загружать зип архив с темой, файлы из которого при активации будут копироваться в соответствующие папки django, таким образом cms лишний раз не будет обстукивать sqlite базу данных, но при этом можно легко поменять текущий зем и загрузить новый.

Сам движок cms на джанге писать одно удовольствие. Я уже кучу раз делал подобное в своих проектах и теперь просто модифицировал/доработал/улучшил код который у меня был. Тут все просто – нужно создавать страницы которые будут отображаться в соответствии с заданными категориями, или без них (подумал что сайт вполне может разрастись до 50 страниц, а как бы 50 страниц уже нуждаются в сортировке по каким-то признакам).

Для создания RSS и Sitemap фрэймворк django любезно предоставляет удобные инструменты которыми я воспользовался. Ммм… что еще? Написал контекст процессор который передаёт данные по сайту и категориям при рендере каждой страниц, это позволяет достаточно просто создавать новые земы на основе произвольного html кода, прописывая логику отображения элементов сайта.

Почти готово…

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

Вообщем вот демо – mini-cms-for-mfa demo site
Вот код – Mini CMS for MFA

Логин/Пасс – test/test вход в админку через http://wtfisgoingon.co.cc/admin

Уже есть идеи по поводу улучшений :

  • сделать менеджер рекламы (чтобы рулить размещением из админки)
  • добавить темлейт тэги чтобы можно было очень просто обозначить рекламные блоки и какие-либо элементы интерфейса внутри шаблона
  • статистику
  • апи интерфейс
  • рендер в статику, чтобы эту статику потом размещать где угодно
  • интерфейс для добавления ссылок в сайдбар
  • кэширование

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

Приватные репозитории кода. Bitbucket

Saturday, June 4th, 2011

Сервис GitHub предоставляет возможность размещать свой open source код бесплатно и использует для этого достаточно сложную систему контроля версий – git. Приватные репозитории на гитхабе доступны только для оплаченных аккаунтов. А что делать если хотелось бы скрыть код, но в то же время использовать все удобства которые предоставляют системы контроля версий?

Есть 2а пути, простой и сложный. Простой – воспользоваться сервисом который предоставляет bitbucket или поднять на сервере свой репозиторий кода.

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

Собственно, старт проекта выглядит примрно так (сначала нужно создать приватный репозиторий на bitbucket):

Start new bitbucked project

create folders etc.

>> hg init
>> hg add

make “hgrc” file in .hg folder with :

[paths]
default = https://bitbucket.org/user/project
[ui]
username = Your Name 
verbose = True

also will be good idea to put .hgignore file :

# use glob syntax.
syntax: glob
# Common
*.pyc
*.pyo
*.swp
*.swo
*.orig
*~
# Project specific
.env
pip-log.txt

>> hg commit -m “Here we go”
>> hg push

.hgignore файл который задаёт как бы говорит hg не помещать в репозиторий разные ненужные файлы – бэкапы которые создаёт редактор кода, невидимые файлы и т.д.

На текущий момент кол-во приватных репозиториев на Bitbucket.org не ограничено – пользуйтесь =)

Обертка для Curl : grab

Saturday, May 21st, 2011

Многие (почти все) используют такую замечательную библиотеку как curl (ну, или в нашем случае pycurl), работать с ней конечно можно – но не слишком удобно. Приходится думать о разных вещах – куках, установке параметров и т.д. а ведь это время и в конечном итоге – деньги. Как правило, на определенном этапе многие пишут свои “функции” разной степени кривости облегчающие работу с curl’ом .

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

Итак, GRAB

(установка в убунте – sudo pip install grab)

Grab идеально подходит для большинства типичных задач (парсинг, регистрации), фактически освобождая программиста от рутины прямой работы с курлом и значительно сокращает размер кода. Я бы сказал, что Grab в какой-то степени эмулирует браузер (естественно без js). Итак, что внутри?

  • Отправка разных HTTP запросов
  • Обработка HTTP ответа
  • Парсинг и заполнение HTML форм
  • Работа с HTML DOM через XPath.
  • XPath для обхода html

Использование XPath сильно упрощает задачу выбора элементов, это гораздо более удобно чем иметь дело с мутными регулярками.
Более подробно про XPath - http://www.w3schools.com/xpath/default.asp

В качестве примера – простой код.

# выделяем каждый элемент td с классом "postbody"
for item in document.xpath('//td[@class="postbody"]//'):
	print item.text

Документация по Grab достаточно подробна, примеры использования тут и тут (в этих примерах граб создается в объекте parser). Как орудовать самим грабом можно посмотреть тут (парсинг форума), пример не рабочий, сразу предупреждаю, служит только для наглядной демонстрации того как можно его использовать.

Работа с GitHub. Выкладываем OpenSource.

Thursday, March 3rd, 2011

Вообщем удаленные репозитории это очень хорошо. Во первых появляется какая-то строгость в работе, во вторых безопасность данных и удобство управления, список можно продолжить, но собственно, думаю, основная мысль понятна : “репозитории это хорошо”. К сожалению GitHub бесплатно предоставляет только открытый репозитории, т.е. если вы не хотите чтобы код вашего проекта смотрел кто-то еще придется заплатить кэш, что не всегда целесообразно. Однако bitbucket.com позволит вам абсолютно бесплатно содержать 5 закрытых репозиториев кода.
Резюмирую выше написанное – GitHub хорошо подходит для OpenSource проектов.

Как добавить файлы на github?

Теперь расскажу как это сделать. На примере небольшой утилиты которая разбивает текст на предложения : textsplitter.py
Для тех кто еще не зарегистрировался и не создал ключи для гитхаба ранее была статья :
Работа с Github. Генерация SSH ключей.
На гитхабе создаем новый репозиторий – New Repository
Далее все просто. На своей рабочей Linux машине пишем следующее :

$ mkdir Utils # создаем папку Utils
$ cd Utils # заходим туда
$ git init # инициализируем гит
$ touch README # создаем ридми файл
# каким нибудь редактором пишем в этот файл пару строк о проекте или оставляем пустым
$ git add README # добавляем ридми в список коммитов
$ git commit -m 'first commit' # проводим первый коммит, с комментарием к нему

До этого момента все действия были совершены локально. Настало время присоединится к гитхабу и применить изменения которые были проведены на локальной машине.

$ git remote add origin git@github.com:username/Utils.git # связываем локальный прокт с репозиторием на гитхабе
$ git push origin master # применяем изменения попросят ввести пароль который вы задали для ключей.
# если ключи генерировали под root юзером нужно писать sudo git....

Теперь таким же образом можно создавать файлы, добавлять их в проект (git add filename), делать коммиты, загружать новые версии и т.д.

Все теперь можно заходить GitHub и смотреть что получилось.

Работа с Github. Генерация SSH ключей.

Sunday, December 12th, 2010

Наверняка многие из вас знают как организуется работа нескольких человек над одним проектом с помощью систем управления версиями. В наши дни технология улучшилась на столько, что появился отдельный вид веб сайтов – хостниги для проектов. Один из них – github основанный на системе контроля версий git.

что внутри?

Можно создать аккаунт, фалловить другие проекты, делать коммиты. Размещение OpenSource проектов абсолютно бесплатно, но есть возможность сделать приватный проект (за $). Вообщем нет лучше места для храниения и поддержки своего OpenSource кода. Так же думают ребята из :

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

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

Как начать свой проект?

Практически все серьезные девелоперы сидят на Linux.
Для начала вам понадобится сам git.
http://help.github.com/linux-git-installation/

sudo apt-get install git-core

я поставил только git-core. далее нужно сгенерировать ssh кеи.
http://help.github.com/linux-key-setup/

# идем в папку где должны хранится ключи
$ cd ~/.ssh
# смотрим есть ли файлы типа id_rsa, id_dsa или identity
ls
# если нет - генерируем новые
$ ssh-keygen -t rsa -C "youmail@gmail.com"

Я несколько раз создавал удалял, так что можно снести если у вас уже есть ключи но вы что называется don’t give a fuck (т.е. не знаете откуда они и зачем). предварительно лучше всего все же скопировать то что есть в отдельную папку. На всякий случай. Мне еще пришлось скопировать ключи в /root/.ssh (создавал в /home/(youruser)/.ssh)

Теперь нужно добавить свой public key в https://github.com/account. Public Key находится в файле id_rsa.pub – скопировать его в clipboard можно с помощью xclip :

$ sudo apt-get install xclip
$ cat ~/.ssh/id_rsa.pub | xclip -sel clip

Тестируем что получилось :

$ ssh git@github.com
....
ERROR: Hi tekkub! You've successfully authenticated,
but GitHub does not provide shell access
Connection to github.com closed.

Если все окей можно приступать к созданию проекта. Если нет – troubleshooting common issues

Going OpenSource. Первый код на github’е.

Sunday, December 12th, 2010

Когда-нибудь нужно начинать… Вчера открыл счет, зарелизив небольшую библиотеку в OpenSource. Это обертка API сервиса Mag.ma который является чистой воды машапом – агрегатором видео с различных источников, которые предоставляет API.

Mag.ma API Python
на GitHub

GitHub

Реализованы следующие интерфейсы.

  • search – поиск видео по кею. пока не работает.
  • info/video – информация о видео
  • embed – получить embed код для видео
  • thumbnail – получить thumbnail для видео

но самое интересное

  • leaderboard – получить список топ видео за определенный интервал
  • mustwatch – список горячих видео которые жарят прям сейчас
  • channel – информация о канале включая видео по категориям.

Вполне можно использовать этот модуль для наполнения своих Entertainment сайтов.

Open Source Social Networks

Saturday, November 13th, 2010

Достаточно модный тренд, вообщем самое время поговорить о мощном движении Open Source и его пользе. Наверняка многие слышали о таких темах как sourceforge.net, code.google.com? Достаточно плотно сидят в выдаче. В чем заключается на данный момент работа программиста? Ведь почти все что нужно так или иначе есть в готовом виде, и нужно лишь протянуть руку чтобы использовать чужие разработки, а не терять время разрабатывая очередной велосипед. Настоящие развалы готового кода практически на все случаи жизни можно найти на социальных сайтах :

GitHub

BitBucket

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

My blog is Do-Follow


Пишу код, делаю сайты.
Check out my about.me profile!

парсинг сайтов, форумов, интернет магазинов

Want to subscribe?

istinspring twitter account
istinspring facebook account

 Subscribe in a reader Or, subscribe via email:
Enter your email address:  
Find entries :