LINUX.ORG.RU

Сообщения wingear

 

Подскажите идею для приложения под андроид

Ситуация следующая: с работы уволился, но, против ожиданий, в армию, похоже, не возьмут. Денег осталось в лучшем случае на месяц, может, что-то с фрилансом выйдет, может - и наоборот. Больше месяца назад в одной наиболее адекватной местной конторе не взяли на С++, но предложили сделать законченное приложение под андроид - тогда возьмут стажером в соответствующий отдел. Попробовал сделать на libGDX давно придуманную игру, но стало ясно, что нет ничего хуже частично замаскированного openGL - похоже, я как-то не так использовал предоставляемый библиотекой класс камеры, всё искажалось, а переписать её с нуля, не отказавшись от библиотеки, по-моему, невозможно. После этого хотел сделать уведомлялку о сообщениях на лоре, но не получалось залогиниться здесь из-за того, что проверочный код сервер воспринимал как неправильный, хотя httpClient'ом отсылал, вроде бы, тоже самое, что и браузер при логине. Наконец, сегодня захотел сделать хотя бы анонимный лор-клиент, но в форме отправки сообщения тот же самый csrf, с которым, видимо, будет та же ошибка. Попробую переписать нотификатор с android HttpClient вместо default, но чую, проблема не в этом.

Что можно успеть за неделю сделать на андроид, при условии, что хотя бы 1,5 функции, но работают полностью и приложение решает какую-либо реальную задачу?

 , , will code for food

wingear
()

apache httpClient - не могу залогиниться на ЛОРе

При отправке постом того же, что отправляет браузер, ругается, что «Доступ запрещен. Причина: Неправильный код защиты CSRF. Возможно сессия устарела». Сначала получаю этот csrf get-ом, потом отправляю логин, пароль и его постом. Попробовал добавить кукис с ним же, но у браузера то, что отправлено и то, что в cookies, отличается. Наверное, его надо как-то иначе получать. Не понимаю.

HttpGet getChecksum = new HttpGet("http://www.linux.org.ru/login.jsp");
BasicCookieStore cookieStore = new BasicCookieStore();
BasicHttpContext localContext = new BasicHttpContext();
localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
HttpResponse response = lorClient.execute(getChecksum,localContext);
StringBuilder body = inputStreamToString(response.getEntity().getContent());
String start = "name=\"csrf\" value=\"";
String end = "\">  <label>Имя:";
String csrf = body.substring(body.lastIndexOf(start) + start.length(), body.lastIndexOf(end));
HttpPost request = new HttpPost("http://www.linux.org.ru/login.jsp");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);
nameValuePairs.add(new BasicNameValuePair("nick", userName));
nameValuePairs.add(new BasicNameValuePair("passwd", password));
nameValuePairs.add(new BasicNameValuePair("csrf", csrf));
request.setEntity(new UrlEncodedFormEntity(nameValuePairs));
BasicClientCookie csrfCookie = new BasicClientCookie("CSRF_TOKEN", csrf);
cookieStore.addCookie(csrfCookie);
HttpResponse response2 = lorClient.execute(request);
Toast.makeText(this, response2.getStatusLine().toString(), Toast.LENGTH_LONG).show();

 , , ,

wingear
()

oglplus - не видятся некоторые методы и ничего не автодополняется

Сначала просто не было автодополнения, но собиралось нормально. Хотя, вроде, всё, что нужно, подключил:

#ifndef APPLICATION_H
#define APPLICATION_H
#include <iostream>
#include <fstream>
#include <SDL2/SDL.h>
#define GLCOREARB_PROTOTYPES 1
#include "glcorearb.h"
#include <oglplus/all.hpp>
#include <oglplus/shader.hpp>
#include <oglplus/program.hpp>
#include <oglplus/buffer.hpp>
#include <oglplus/context.hpp>

class application
{
public:
    application(std::string appName);
    void end();
    void run();
    bool setupShaders(std::string vss, std::string fss);
    bool setupBuffers();
    std::string loadShader(std::string fileName);
private:
    SDL_Window *window;
    oglplus::Context gl;
    SDL_GLContext context;
    oglplus::VertexShader vs;
    oglplus::FragmentShader fs;
    oglplus::Program prog;
    oglplus::VertexArray arr;
    oglplus::Buffer verts[2];
};

#endif // APPLICATION_H

Но потом стало ругаться на несуществующий метод isCompiled(), хотя в документации он есть, и еще несколько аналогичных ошибок:

bool application::setupShaders(std::string vss, std::string fss)
{
    std::string vsCode = loadShader(vss);
    std::string fsCode = loadShader(fss);
    if(vsCode!="")
    {
        vs.Source(vsCode);
        vs.Compile();
        if(!vs.isCompiled())
            return false;
    }
    else
        return false;
    if(fsCode!="")
    {
        fs.Source(fsCode);
        fs.Compile();
        if(!fs.isCompiled())
            return false;
    }
    else
        return false;
    prog.AttachShader(vs);
    prog.AttachShader(fs);
    prog.Link();
    if(!prog.isLinked())
        return false;
    /*prog.Validate();
    if(!prog.isValid())
        return false;*/
    prog.Use();
}
Чую, придется не валять дурака и использовать openGL без этого фасада, каким бы удобным это ни казалось:(

 oglplus,

wingear
()

glcorearb.h - не видятся функции openGL

Пытаюсь сделать окно на SDL и оставить только core profile - скачал замену gl3.h. При попытке собрать ругается, что glClear и glClearColor not declared in this scope. Библиотеки прописаны через qmake:

INCLUDEPATH += -I/usr/local/include/SDL2 -D_REENTRANT
LIBS += -L/usr/local/lib -Wl,-rpath,/usr/local/lib -lSDL2 -lpthread -lGL
main.cpp:
#include <iostream>
#include <SDL2/SDL.h>
#include "glcorearb.h"

using namespace std;

int main()
{
    SDL_Window *mainwindow;
    SDL_GLContext maincontext;
    if(SDL_Init(SDL_INIT_EVERYTHING) < 0)
        cout << SDL_GetError() << endl;
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3);
    SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
    SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 32);
    mainwindow = SDL_CreateWindow("tutorial1", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 512, 512, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN);
    if (!mainwindow)
            cout << SDL_GetError() << endl;
    maincontext = SDL_GL_CreateContext(mainwindow);
    SDL_GL_SetSwapInterval(1);
    glClearColor ( 1.0, 0.0, 0.0, 1.0 );
    glClear ( GL_COLOR_BUFFER_BIT );
    SDL_GL_SwapWindow(mainwindow);
    SDL_Delay(2000);
    SDL_GL_DeleteContext(maincontext);
    SDL_DestroyWindow(mainwindow);
    SDL_Quit();
    return 0;
}

 , ,

wingear
()

libgdx - почему-то камера искажает при вращении

Сделал helloworld на сабже - камера вокруг сферы. Вроде бы всё правильно, но при вращении сфера превращается в конус, как будто камера проходит вплотную рядом - так происходит независимо от первоначального расстояния между ними. Камера со следующими параметрами:

camera = new PerspectiveCamera(fov,w,h);
	    camera.near = 0.15f;
	    camera.far = 100;
	    camera.translate(0, 30, -30);    
	    camera.lookAt(0, 0, 0);
Вращается так:
if(Gdx.input.isKeyPressed(Keys.LEFT))
			camera.rotate(new Vector3(0.0f,1.0f,0.0f), 0.2f);
		if(Gdx.input.isKeyPressed(Keys.RIGHT))
			camera.rotate(new Vector3(0.0f,1.0f,0.0f), -0.2f);
		if(Gdx.input.isKeyPressed(Keys.UP))
			camera.rotate(new Vector3(1.0f,0.0f,0.0f), 0.2f);
		if(Gdx.input.isKeyPressed(Keys.DOWN))
			camera.rotate(new Vector3(1.0f,0.0f,0.0f), -0.2f);

ЧЯДНТ?

скрин

jar

 , ,

wingear
()

Где сейчас естьTV-out?

Папе понадобилась данная функция, чтобы выводить изображение на телевизор в соседней комнате. Не нашел связной информации о наличии выдоха S-Video у новых карт AMD или Nvidia. У кого это проще настраивается в Linux(там стоит openSuse, но периодически достает тормозами, когда прихожу, думаю обратно поставить gentoo)?

 , ,

wingear
()

Как в libdgx получить последнюю ошибку шейдера?

Не нашел актуального примера, как на libgdx вывести треугольник в 3d, но, вроде бы, больше ошибок не нашел. Однако при запуске валится с NullPointerException при попытке скомпилить вершинный шейдер и дальше glCreateShader отладчик не идет. Можно как-то получить последнее сообщение об ошибке аналогично GLgetProgramiv в C? Шейдеры:

uniform mat4 combined;
attribute vec4 pos1;
void main()
{
  gl_Position = pos1 * combined;
}
 void main()
 {
  gl_FragColor = vec4(1.0,0.0,0.0,1.0); 
 }
Сам код(переделал из дефолтного проекта):
package com.syjgin.spacecheckers;

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.PerspectiveCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.Texture.TextureFilter;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.graphics.Mesh;
import com.badlogic.gdx.graphics.glutils.ShaderProgram;
import com.badlogic.gdx.graphics.VertexAttribute;

public class Spacecheckers implements ApplicationListener {
  private PerspectiveCamera camera;
  private Texture texture;
  private Mesh sphere;
  private ShaderProgram ourCheckers;
  @Override
  public void create() {    
    float w = Gdx.graphics.getWidth();
    float h = Gdx.graphics.getHeight();
    float fov = 0.45f;
    Vector3 pos = new Vector3(0.0f,2.0f,-2.0f);
    camera = new PerspectiveCamera(fov,w,h);
    camera.lookAt(0, 0, 0);
    camera.translate(pos);
    ourCheckers = new ShaderProgram(Gdx.files.internal("data/vertex.glsl"),Gdx.files.internal("data/fragment.glsl"));
    sphere = new Mesh(true,3,3,VertexAttribute.Position());
    sphere.setVertices(new float[]
        {-0.5f, -0.5f, 0.0f,
        0.5f, -0.5f, 0.0f,
        0.5f, 0.5f, 0.0f});
    sphere.setIndices(new short[] {0, 1, 2});
    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
  }

  @Override
  public void dispose() {
    ourCheckers.dispose();
    sphere.dispose();
    texture.dispose();
  }

  @Override
  public void render() {    
    ourCheckers.begin();
    ourCheckers.setUniformMatrix("combined", camera.combined);
    sphere.render(ourCheckers, GL20.GL_TRIANGLES);
    ourCheckers.end();
    
  }

  @Override
  public void resize(int width, int height) {
  }

  @Override
  public void pause() {
  }

  @Override
  public void resume() {
  }
}

 , , ,

wingear
()

Fedora не готова для десктопа

Маме на работу, где нет сети, нужно было поставить ОС, безопасную для проверок. На субботнем SFD раздавали dvd-болванки с Fedora Remix 17. Решил поставить эксперимент: сможет ли не продвинутый пользователь установить систему на чистый компьютер? Почти сразу она позвонила, испугавшись сообщения об ошибке поиска флоппи-дисковода в консоли. Несмотря на то, что в меню «Language» выбрали «Russian», половина установщика была на английском. Несмотря на то, что диск был чистым(хотя это с её слов), установщик несколько раз предупреждал, что все данные будут удалены. После настроек клавиатуры и времени было предложено выбрать репозитории, но, увидев, что сети нет, установка завершилась с сообщением о невозможности продолжения. Есть некоторая вероятность, что в настройках было что-то не так, вечером посмотрю - системник принесут домой. Но, скорее всего, надо было не лениться и записать на болванку Ubuntu.

 , ,

wingear
()

Motorola xt 720 - чем прошить?

Стоковая прошивка устарела, cyanogen периодически перезагружается на ровном месте и гасит экран после звонка наглухо. Сборка miui не запустилась. Есть еще мод fjfalcona,но он, кажется, заброшен.

 , ,

wingear
()

Если в onsubmit есть хоть что-нибудь, кроме return false, форма отправляется без ajax

Есть hostCMS, которая лично мне не нравится, но необходимо как-то переделать форму для отправки комментариев. Т.к. jquery все равно уже подключено, попробовал подключить плагин для форм.

Сначала делал, как в их руководстве:

$('#addCommentAjaxForm').ajaxForm(function() { 
                alert("test"); 
            }); 

Но ничего не происходило, хотя селектор работал. Поставил в форму onsubmit=«doAjaxSubmit()»

function doAjaxSubmit()
{
var options = { 
    target:     '.comment:last', 
    url:        '.', 
    success:    function() { 
alert("added");
    } 
}; 
 $("#addCommentAjaxForm").ajaxSubmit(options);
return false;
};
При этом функция в success выполняется, но после этого происходит обычный submit. Он происходит, даже если закомментировать ajaxSubmit и вообще в любом случае, кроме onsubmit=«return false». В последнем случае не сабмитится вообще никак

 ,

wingear
()

На фига я перешел на linux?

Уведомил работодателя, что хочу уволиться: в октябре в военкомат, а там, независимо от результата, в этом городе держать больше не будет ничего. Обновил когда-то просто так заведенный аккаунт на free-lance.ru, хотел что-то добавить в портфолио, но понял, что лучше ничего, чем то, что есть. Поискал по словам вроде gamedev, стало обидно: в основном требуются флешеры и художники. При этом, до того, как снес винду, как раз занимался action script'ом и рисовал в тогда еще макромедиевской проге. На первых порах было желание сделать на Qt хоть какой-нибудь аналог редактора .fla, но это явно от неадекватной оценки возможностей. Похоже, найти что-то, связанное с плюсами нереально. Вообще все жестко завязано на винду. Это печально

 , ,

wingear
()

Библиотека для управления версиями программ изнутри - никто не пробовал такое сделать?

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

wingear
()

С чего начать изучать SEO-оптимизацию?

В пятницу повторилось то, что происходило на прошлой работе - директор, видя, что я «ничего не делаю», решил нагрузить дополнительной функцией - за продвижение нашего сайта в поисковиках некая фирма ежемесячно берет достаточно нехилую сумму, теперь это хотят передать мне. Всё равно скоро буду увольняться, т.ч. не страшно. М.б. есть какой-то аналог Кернигана и Ричи в этой области?

 

wingear
()

Есть ли способ добавить в класс константный объект?

Необходимо сделать несколько заранее определенных массивов со строками, из которых рандомно выбирается их комбинация. Пробовал инициализировать в хидере static const QStringList:

static const QStringList zipcodes={"1","2","3"};

но получается известная ошибка Invalid in-class initialization of static data member of non-integral type QStringList.

Как правильнее это сделать?

 ,

wingear
()

HostCMS - как вклиниться в чужой код?

Нужно сделать плагин, добавляющий поля в форму отправки/редактирования темы на форуме, и потом их отображающий. Не пойму, что в этой cms является аналогом livestreet'овских хуков - в руководстве по модулям фигурирует

function LoadAjaxData(&$admin_forms)
Где admin_forms - объект, предоставляющий данные о формах админ-панели. В документации по API есть класс forums, если я правильно понял, нужно использовать его метод http://www.hostcms.ru/api/HostCMS_5/Forums.html#methodGetTheme, только непонятно, как отследить, что вызвана страница редактирования формы или отправка данных. Никто не работал с данной CMS?

Документация: https://docs.google.com/viewer?url=http://www.hostcms.ru/download/5/HostCMS_v...

 , ,

wingear
()

Почему обновляется до упора?

Почему-то при подключенном оверлее kde при обновлении мира portage пытается поставить kdelibs-9999, и, не найдя какого-то патча, emerge завершается. Можно ли как-то поставить 4.8.4, не дестабилизируя систему всякими 9999? Пока не придумал ничего лучше, кроме как установить список пакетов, предлагаемый по -uDN @world без зависимостей и всех 9999. Или лучше вообще убрать оверлей?

 , ,

wingear
()

Периодически наворчивается(?) загрузчик

На milestone xt720 поставил cyanogen, процессор был разогнан через milestone overclock(хотя уже довольно давно это убрал). Иногда система полностью переставала реагировать, и после перезагрузки появлялось сообщение:

Bootloader 80,89
Err:A4,64,D5,00,23


Battery OK
OK to program
Connect USB
Data Cable

На присоединение кабеля реагирует, но через adb ничего не видно. Пока скачиваю через android update manager всё, что связано с моторолой, может, получится присоединить. Здесь советуют подключить телефон и перезаписать какие-то boot и recovery.img - знать бы еще, где они, до этого ставил новую прошивку просто из архива.

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

PS хотя ядром устройство определяется:

ehci_hcd 0000:00:1d.7: port 2 high speed
ehci_hcd 0000:00:1d.7: GetStatus port:2 status 001005 0  ACK POWER sig=se0 PE CONNECT
usb 2-2: new high-speed USB device number 11 using ehci_hcd
ehci_hcd 0000:00:1d.7: port 2 high speed
ehci_hcd 0000:00:1d.7: GetStatus port:2 status 001005 0  ACK POWER sig=se0 PE CONNECT
usb 2-2: default language 0x0409
usb 2-2: udev 11, busnum 2, minor = 138
usb 2-2: New USB device found, idVendor=22b8, idProduct=41d0
usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 2-2: Product: S Flash OMAP3430
usb 2-2: Manufacturer: Motorola Inc.
usb 2-2: usb_probe_device
usb 2-2: configuration #1 chosen from 1 choice

 , ,

wingear
()

Freebsd. Кажется, игнорируется параметр noauto при загрузке

# cat /etc/fstab
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ad0s1b             none            swap    sw              0       0
/dev/ad0s1a             /               ufs     rw              1       1
/dev/ad0s1e             /tmp            ufs     rw              2       2
/dev/ad0s1f             /usr            ufs     rw              2       2
/dev/ad0s1d             /var            ufs     rw              2       2
//ROADGRAPH@ULSK-ADC01/USER     /mnt/share      smbfs   rw,noauto 0       2
/dev/acd0               /cdrom          cd9660  ro,noauto       0       0

Непонятно, как сделать, чтобы при загрузке, если виндовый сервер недоступен при загрузке, система не вываливалась в /bin/sh с необходимостью локального входа и монтированием /usr вручную. Пока попробовал late, но еще не перезагружал. ЧЯДНТ?

 ,

wingear
()

Непонятно, откуда берется multiple definition

В отдельном хидере определены 2 константы:

#ifndef STRINGS_H
#define STRINGS_H

const char * Started = "started";
const char * Stopped = "stopped";

#endif//STRINGS_H
После этого они используются 2 двугих хидерах:
#ifndef START_H
#define START_H
#include <cstdio>
#include "strings.hh"
void start()
{
    puts( Started );
}
#endif
#ifndef STOP_H
#define STOP_H
#include <cstdio>

#include "strings.hh"
void stop()
{
    puts( Stopped );
}
#endif
Непонятно почему при сборке раз за разом вылетает ошибка (.data+0x0) error: multiple definition of `Started', и то же самое со stopped. Единственное, что еще м.б. - корявый Makefile:
all:
	g++ start.cc stop.cc 12.hh act.cc one.cc task1.cc two.cc Worker.cc act.hh Cat.hh Dog.hh Egg.hh Pet.hh start.hh stop.hh strings.hh Worker.hh Zoo.hh -o task1
В конце сборки идет сообщение «error: collect2: выполнение ld завершилось с кодом возврата 1»

Похоже на ситуацию, когда не ставишь проверку в начале хидера, и он включается несколько раз, но здесь это есть. М.б. надо сделать сборку объектов отдельно, потом уже из них общий бинарник? Или проблему следует искать всё-таки в коде?

PS: ошибка идет при включении хидеров со стартом и стопом. Задачу решить надо всё-таки мне, поэтому полностью использование приводить не буду. Но пока тупик, не понимаю даже в какой области ошибка

 

wingear
()

Курица и яйцо

Не пойму, это никак нельзя сделать или я что-то делаю не так(зачем- другой вопрос): необходимо, чтобы один класс содержал метод, работающий с другим, а другой, соответственно - с первым. Объявил оба в соответствующих хидерах без include, но в любом случае получается «error: return type 'struct two' is incomplete».

//one.h

#ifndef ONE_H
#define ONE_H
class two;
class one
{
public:
    one();
    two *res;
    two getTwo()
    {
        return *res;
    }
};

#endif // ONE_H

//two.h


#ifndef TWO_H
#define TWO_H
class one;
class two
{
public:
    two();
    one *res;
    one getRes()
    {
        return *res;
    }
};

#endif // TWO_H

 , forward declaration,

wingear
()

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