LINUX.ORG.RU

Сообщения kosc

 

TDD для Flask и MongoDB

Форум — Development

Продолжаю свой путь в познании Flask и MongoDB. Теперь решил писать тесты, но столкнулся с одной проблемой. Вот код теста (раньше он был сложнее, упростил до минимальной версии с той же ошибкой):

# -*- encoding: utf-8 -*-
import unittest
import neobug


class NeobugTestCase(unittest.TestCase):

    def setUp(self):
        neobug.neobug.config['TESTING'] = True
        neobug.neobug.config['MONGODB_SETTINGS'] = {'DB': 'neobug'}
        self.app = neobug.neobug.test_client()

    def tearDown(self):
        pass

    def test_login_logout(self):
        rv = self.app.get('/', follow_redirects=True)
        print rv.data # выведет 404 Not Found

if __name__ == "__main__":
    unittest.main()


Собственно, что я делаю не так? Надо ли запускать приложение перед запуском тестов? (пробовал, не помогло, но мало ли).

 , , ,

kosc
()

Ищу соседа

Форум — Talks

Суть в том, что нынешние соседи по квартире окончательно ОБОРЗЕЛИ, устроили шумиху среди ночи и полностью игнорировали все мои вопли, призывающие к тишине. Такое было и раньше, но на этот раз они перешли все разумные границы.

Увы, финансы сейчас позволяют только половину комнаты в коммуналке, так что нужен кто-нибудь в долю.

О потенциальном соседе: молодой студент-ITшник, линуксоид (а кого же ещё искать на ЛОРе?), для музыки/фильмов/etc предпочитает наушники, по ночам не шумит.

О себе: Немного хикканут, обычно малообщителен, но могу разговориться, если есть общие темы. Сам студент СПбГУАП по специальности 231000 (Программная инженерия). Гентушник, на пользователей других дистрибутивов реагирую спокойно. В холиварах если и участвую, то только смеха ради. Большую часть дня провожу в тишине и покое, прогаю, делаю что-нибудь по учёбе или смотрю фильм/сериал/ютуб (только в наушниках).

О искомом жилье: сам я не привередлив в этом плане. Есть где спать - уже хорошо, плюс у меня в хозяйстве есть большущий надувной матрас (204x152 см), если вдруг пригодится. Стол желателен, но практика показала, что можно обойтись и без него. Географически желателен Московский район, ещё хорошо подойдёт Кировский, но рассмотрю все варианты.

О том, как я всё это вижу: может станем друзьями, будем что-нибудь вместе прогать, а может будем просто соседями. Главное - не бесить друг друга, и всё будет ок.

 , ,

kosc
()

Поиск елемента массива по _id MongoDB

Форум — Development

Есть проект на Flask, что-то вроде багтрекера (не велосипеда ради, но опыта для). И в нём возникла одна проблема, суть такова: Есть проекты (Document), у каждого из них есть баги (EmbeddedDocument). У каждого из багов есть _id (ObjectId). Надо как-то находить баги по этому самому ObjectId. Помогите, уже больше недели с этим мучаюсь.

 ,

kosc
()

Flask и MongoDB

Форум — Development

Никак не получается подружить Flask с MongoDB. Есть две модели: User и Project. Обе наследуются от db.Document, Для обеих создаётся форма с помощью model_form. Вернее, для User он создаётся, а для Project выбрасывает исключение:

TypeError: model must be a mongoengine Document schema

Вот исходный код моделей:

class Project(db.Document):
    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    name = db.StringField(max_length=255, required=True)
    description = db.StringField()



class User(db.Document):
    username = db.StringField(max_length=255, required=True)
    email = db.StringField(max_length=255)
    password_hash = db.StringField(max_length=128, required=True)
    password_salt = db.StringField(max_length=32, required=True)

    def is_authenticated(self):
        return True

    def is_active(self):
        return True

    def is_anonymous(self):
        return False

    def get_id(self):
        return self.username

Вот код, генерирующий формы:

UserForm = model_form(User) # работает
ProjectForm = model_form(Project, exclude=['created_at']) # не работает, выбрасывает то самое исключение. 

 , , ,

kosc
()

Мобильный моей мечты

Форум — Talks

Хочу поменять превратившийся в глюкодром HTC Wildfire S на что-то другое. На мечту был бы похож Nokia N900, если бы не некоторые изъяны(старый, слабый, можно найти только б/у, экран маловат). Смотрел в сторону Neo900 - дорого, только предзаказ, и не смог выяснить, что с локализацией (не горю желанием рисовать русские букавки на клаве).

Значит, нужен годный горизонтальный слайдер с GNU/Linux (дистрибутив большой роли не играет, если есть/можно получить root), QWERTY-клавой, экраном от 4" до 4.5", более-менее современным CPU, вменяемым объёмом свободной внутренней памяти. Камера со вспышкой, которую можно использовать как фонарик. С коммуникациями всё более-менее очевидно - WiFi, EDGE, 3G. И, собственно, что бы туда не забыли впихнуть телефон - звонить/СМСить всё ещё надо иногда.

Зачем? Красноглазие anywhere, anytime.

Если кто-то слышал про подобные девайсы - рассказывайте. Интересно также послушать описание идеального смартфона для других ЛОРовцев.

 , ,

kosc
()

Gentoo + xmonad + xmobar

Галерея — Скриншоты

Вчера получил таки свои 50 scores (за 2-то года), и могу запостить первый скриншот.
У многих шрифты могут оказаться огромными - всё в порядке, у меня ноут с 11.6-дюймовым экраном и разрешением 1366x768. Поэтому у меня смотрится просто отлично.
Наконец-то допилил шрифты, как хотел. ШГ, не Г - это уже сами считайте (рассказывайте, почему Г, и как сделать лучше), но мне удобно.
В xmobar и urxvt - Terminus.
В Aurora (и в gtk вообще) - Liberation Sans.
png почему-то не выгрузился, но я всё же залил его на внешний хостинг, для ценителей.

>>> Просмотр (1366x1536, 518 Kb)

 , , , ,

kosc
()

Кто из нас упоролся - я или lxml?

Форум — Development

Пишу парсер одного html-сайта. Вот код:

#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
from urllib.request import urlopen
from lxml import etree

html = urlopen("http://google.com").read() # гугл, например.
html = html.decode("cp1251").encode("utf-8")
parser = etree.HTMLParser()
tree = etree.parse(html, parser)
print(u"Этот текст никогда не выведется.")

Из исходника должно быть понятно, что текст «Этот текст никогда не выведется.» никогда не выведется. Причём исходники самого сайта выводятся. Весь код после «tree = etree.parse(html, parser)» игнорируется полностью. Покажите мне кто-нибудь, где я дурак?

 , ,

kosc
()

Через g++ компилируется, через gcc не компилируется.

Форум — Development

Привет, ЛОР! Разбираюсь тут с SDL, вот код:

#include "SDL/SDL.h" 
#include <string>

const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
const int SCREEN_BPP = 32;

SDL_Surface *message = NULL;
SDL_Surface *background = NULL;
SDL_Surface *screen = NULL;

SDL_Surface *load_image( std::string filename ) {
	SDL_Surface* loadedImage = NULL;
	SDL_Surface* optimizedImage = NULL;
	loadedImage = SDL_LoadBMP( filename.c_str() );
	if( loadedImage != NULL ) 
	{
		optimizedImage = SDL_DisplayFormat( loadedImage );
		SDL_FreeSurface(loadedImage);
	}
	return optimizedImage;
}

void apply_surface( int x, int y, SDL_Surface* source, SDL_Surface* destination )
{
	SDL_Rect offset;
	offset.x = x;
	offset.y = y;
	SDL_BlitSurface( source, NULL, destination, &offset );
}

int main( int argc, char* args[] ) { 
	if ( SDL_Init( SDL_INIT_EVERYTHING ) == -1 )
	{
		return 1;
	}
	screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE );
	if ( screen == NULL ) 
	{
		return 1;
	}
	SDL_WM_SetCaption( "Hello World", NULL );
	message = load_image( "hello.bmp" );
	background = load_image( "background.bmp" );
	apply_surface( 0, 0, background, screen );
	apply_surface( 320, 0, background, screen );
	apply_surface( 0, 240, background, screen );
	apply_surface( 320, 240, background, screen );
	apply_surface( 180, 140, message, screen );
	if( SDL_Flip( screen ) == -1 )
	{
		return 1;
	}
	SDL_Delay( 2000 );
	SDL_FreeSurface( message );
	SDL_FreeSurface( background );
	SDL_Quit();
	return 0;
}

Если компилировать через g++:

g++ main.cxx -lSDL
, то всё работает. А вот если компилировать через gcc:
gcc main.cxx -lSDL
, то вываливает вот что:
/tmp/cckr6Whs.o: In function `load_image(std::string)':
main.cpp:(.text+0x24): undefined reference to `std::string::c_str() const'
/tmp/cckr6Whs.o: In function `main':
main.cpp:(.text+0x133): undefined reference to `std::allocator<char>::allocator()'
main.cpp:(.text+0x148): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)'
main.cpp:(.text+0x167): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
main.cpp:(.text+0x173): undefined reference to `std::allocator<char>::~allocator()'
main.cpp:(.text+0x17f): undefined reference to `std::allocator<char>::allocator()'
main.cpp:(.text+0x194): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)'
main.cpp:(.text+0x1b3): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
main.cpp:(.text+0x1bf): undefined reference to `std::allocator<char>::~allocator()'
main.cpp:(.text+0x2d1): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
main.cpp:(.text+0x2e2): undefined reference to `std::allocator<char>::~allocator()'
main.cpp:(.text+0x2fc): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
main.cpp:(.text+0x30d): undefined reference to `std::allocator<char>::~allocator()'
/tmp/cckr6Whs.o:(.eh_frame+0x4b): undefined reference to `__gxx_personality_v0'
collect2: ошибка: выполнение ld завершилось с кодом возврата 1

Собственно вопрос: а почему так?

 , , ,

kosc
()

IntelliSense в vim.

Форум — Development

Можно ли в vim (или хотя бы в gvim) сделать так, что бы был не просто OmniComplete по сочетанию клавишь, а автоматические подсказки, наподобие IntelliSense в Visual Studio?

 intellisense, ,

kosc
()

LTE в Archlinux

Форум — Desktop

Всем привет! 31-го августа Yota запустила сеть LTE, выключив сеть Wimax. LTE-девайс я себе взял. Поддержка linux заявленна официально (сейчас с убунты через него пишу этот пост). Нагуглил лишь 3 темы, и ни одна из них не помогла. А именно - ip a показывает только интерфейс lo, зато ifconfig отображает все, в том числе и Йотовский, но dhcpcd отказывается с ним работать.

 , ,

kosc
()

RSS подписка на новые темы