LINUX.ORG.RU

Сообщения wingear

 

Как в intellij idea запустить go package?

Форум — Development

Видимо, я туплю, но, прочитав https://golang.org/doc/code.html всё равно мало что понял. До этого проект размещался весь в одном файле, но теперь больше так жить нельзя, и я пытаюсь растащить всё по нескольким. Структура следующая:

.idea

src

-server

--printer.go

--server.go

Для запуска использую run kind: Package, в качестве имени пакета: server, на что появляется сообщение: «Error: Cannot run package 'server'».

При запуске оно никуда не девается:

can't load package: package server: cannot find package «server» in any of: /home/harinezumi/.gvm/gos/go1.6/src/server (from $GOROOT) /home/harinezumi/.gvm/pkgsets/go1.6/global/src/server (from $GOPATH)

У обоих файлов package обозначен как

package server

Подскажите, как запустить в режиме пакета? Кажется, первый случай среди встреченных языков, когда писать код существенно проще, чем настроить IDE:)

 ,

wingear
()

Кто-нибудь пробовал использовать Go с Openshift?

Форум — Development

Читаю их документацию, пока непонятно, что делаю не так:

Сделал приложение с зависимостью от https://github.com/ant0ine/go-json-rest через vendoring: hello world для теста, как здесь: https://github.com/ant0ine/go-json-rest-examples/tree/master/helloworld. При создании приложения ругнулось на отсутствие .godir и ещё несколько моментов. Только потом нашёл готовый картридж для запуска в их окружении:https://github.com/smarterclayton/openshift-go-cart. Форкнул. Начиная с этого места непонятно: нужно в корень вставить .godir с адресом моего репозитория с первым приложением, чтобы оно задеплоилось в картридже, или же имеющееся приложение нужно вставить в папку template?

+там есть переменные окружения OPENSHIFT_GO_PORT и OPENSHIFT_GO_IP, которые нужно слушать. Если подключиться по ssh, порт равен 8080, но в результате запуска curl с получившимся именем сервера и портом 8080 ничего не возвращается, а должен приходить тестовый json. Если подключиться по 80 порту, возвращает 530. Что может быть не так?

 ,

wingear
()

Какая IDE лучше для go? Eclipse не предлагать

Форум — Development

Под IDE подразумевается приложение, в котором можно отлаживать и смотреть текущие значения переменных, и при этом чтобы поддерживался нормальный копипаст с остальным окружением(т.е. vim и компания отпадают). В eclipse почему-то не показываются переменные (или что-то не так с настройками плагина).

 , ,

wingear
()

Сервер для игры - какую технологию выбрать?

Форум — Development

Впервые буду писать сервер для своей мобильной игрушки. Основная функция - сохранять и возвращать текущее число игровых денег, наличие той или иной ачивки и т.д. Т.е. куча мелких параллельных запросов к БД. На чём лучше подобное делать? Язык значения не имеет, изучить не долго.

 , ,

wingear
()

читалки с линуксом выбора тред

Форум — Talks

Суть: необходимо планшетообразное устройство с единственной функцией: нормальное чтение PDF и аналогичных немасштабируемых форматов в транспорте. Если при этом будет на GNU/Linux, а не Android, вообще замечательно. Или подскажите, что с андроидом можно перепрошить без особых проблем

 , ,

wingear
()

Google in-app billing v3 - как восстановить покупки?

Форум — Development

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

mIabHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
                @Override
                public void onIabSetupFinished(IabResult result) {
                    if(result.isSuccess()) {
                        mIabHelper.queryInventoryAsync(true, new IabHelper.QueryInventoryFinishedListener() {
                            @Override
                            public void onQueryInventoryFinished(IabResult result, Inventory inv) {
                                boolean somethingNeedToBeRestored = false;
                                for(int i = 0; i < PURCHASES_COUNT; i++) {
                                    String currentKey = PageAuthors.SKU_PREMIUM + i;
                                    if(inv.hasPurchase(currentKey) && !prefs.contains(currentKey)) {
                                        somethingNeedToBeRestored = true;
                                        SharedPreferences.Editor editor = prefs.edit();
                                        editor.putString(currentKey, currentKey);
                                        editor.commit();
                                    }
                                }
                                if(somethingNeedToBeRestored)
                                    simpleAdapter.notifyDataSetChanged();
                            }
                        });
                    }
                }
            });

 ,

wingear
()

jobb java.io.IOException: FAT Full

Форум — Development

Не получается сделать файл расширения для apk - вроде бы результат аналогичен этому багу, но у меня в папке и близко нет 500 mb - всего 1 файл на 300 Кб. Из-за чего ещё это может быть? Полный вывод:

syjgin@haineko:~/AndroidStudioProjects/av-temp$ /home/syjgin/Android/Sdk/tools/jobb -d /tmp/assets/ -o patch.1.my.package.name.obb -k YzZhZDdkNGUwYmM4YTdhMjFlMTJiNzAx -pn my.package.name -pv 14
Slop: 0   Directory Overhead: 0
Slop: 791   Directory Overhead: 352
Partial Sector [32] writing to sector: 7
Partial Sector [32] writing to sector: 7
Partial Sector [32] writing to sector: 7
Partial Sector [96] writing to sector: 39
Alignment off writing to sector: 39
Partial Sector [96] writing to sector: 39
Alignment off writing to sector: 39
Partial Sector [96] writing to sector: 7
java.io.IOException: FAT Full (569, 570)
        at de.waldheinz.fs.fat.Fat.allocNew(Fat.java:298)
        at de.waldheinz.fs.fat.Fat.allocAppend(Fat.java:376)
        at de.waldheinz.fs.fat.Fat.allocNew(Fat.java:353)
        at de.waldheinz.fs.fat.ClusterChain.setChainLength(ClusterChain.java:164)
        at de.waldheinz.fs.fat.ClusterChain.setSize(ClusterChain.java:132)
        at de.waldheinz.fs.fat.FatFile.setLength(FatFile.java:91)
        at de.waldheinz.fs.fat.FatFile.write(FatFile.java:154)
        at com.android.jobb.Main$1.processFile(Main.java:495)
        at com.android.jobb.Main.processAllFiles(Main.java:604)
        at com.android.jobb.Main.processAllFiles(Main.java:600)
        at com.android.jobb.Main.processAllFiles(Main.java:600)
        at com.android.jobb.Main.main(Main.java:417)
Exception in thread "main" java.lang.RuntimeException: Error getting/writing file with name: 01.aac
        at com.android.jobb.Main$1.processFile(Main.java:501)
        at com.android.jobb.Main.processAllFiles(Main.java:604)
        at com.android.jobb.Main.processAllFiles(Main.java:600)
        at com.android.jobb.Main.processAllFiles(Main.java:600)
        at com.android.jobb.Main.main(Main.java:417)

Особенно интересно, что этот баг 2 года висит незакрытым. Или это просто потому, что гугл тоже оставил google code?

 , , ,

wingear
()

Освобождение памяти для BitmapFactory.decodeStream

Форум — Development

Пытаюсь сделать бесконечный скролл - думал, что как в iOS, при использовании ArrayAdapter для ListView, отрисовывается только то, что на экране. Но, похоже, удаление из памяти проскролленного вверх нужно делать вручную. Делаю читалку для сайта - при достижении края экрана в AsyncTask с помощью jsoup получаю очередную страницу с картинками и выдираю из неё список их url. Затем для каждого url создаётся Bitmap:

for (int i =0; i < imageElements.size(); i++) {

                    Element image = imageElements.get(i);
                    String imageId = image.attr("src");
                    Bitmap bmp = null;
                    bmp = mCache.getBitmapFromDiskCache(imageId);
                    if(bmp == null)
                    {
                        URL imageUrl = new URL(imageId);

                        bmp = BitmapFactory.decodeStream(imageUrl.openConnection().getInputStream());//out of memory exception
                        BitmapDrawable d = new BitmapDrawable(getResources(), bmp);
                        mCache.addBitmapToCache(imageId, d);
                    }
                    images.add(bmp);
                }

После того, как объём загруженного таким образом при очередном скролле превышает определённый объём выбрасывается exception:

Caused by: java.lang.OutOfMemoryError: Failed to allocate a 2306412 byte allocation with 1336365 free bytes and 1305KB until OOM
            at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
            at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
            at android.graphics.BitmapFactory.decodeStreamInternal(BitmapFactory.java:635)
            at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:611)
            at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:649)

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

 ,

wingear
()

KDE 5 & ibus

Форум — Desktop

После обновления при входе перестал обрабатываться .bashrc. До этого пробовал через systemsettings, но там не работает. Если класть скрипт в .kde/Autostart, тоже самое. При входе нужно выполнить ibus-daemon -d -x Что еще можно предпринять?

 ,

wingear
()

Android - разъезжается layout

Форум — Development

Досталось приложение, которое нужно доделать. В LinearLayout(вертикальном, matchParent по обоим измерениям) расположены RelativeLayout с wrapContent по вертикали и ListView с MatchParent. Внутри RelativeLayout - webView с wrapContent, который может менять высоту(ссылки «читать дальше» и «свернуть»). До этого у верхнего блока тоже было matchParent, но на больших экранах это даёт много пустого места посередине. Сейчас почему-то, после разворачивания верхнего лейаута у него становится большая высота(больше размера экрана - проверял через measure) и при сворачивании исходная высота не восстанавливается, т.е. внизу остаётся пустой экран. Кто-нибудь сталкивался с подобным? Есть вариант замерять высоту в начале, а потом делать её фиксированной, но это костыль + почему-то некорректно сработало - слишком маленькая получается.

 ,

wingear
()

Как убрать диалоговое окно с предложением включить режим энергосбережения?

Форум — Mobile

Huawei u8950-1. Особо не раздражало, но в полноэкранных играх это приводит к их перезапуску. Рут есть, смотрел в /system/build.prop, при поиске нашёл только настройки модуля cne, всязанные с батареей, но в конфиге этот модуль вырублен. Никто не сталкивался с похожей проблемой?

 

wingear
()

Перемещение камеры с учётом только одного угла вращения

Форум — Development

Есть камера, повёрнутая вокруг оси Y, что смотрит вверх, и вокруг оси Z (в движке она является одной из горизонтальных). При достижении края экрана необходимо взять вектор, повёрнутый так же, как текущий поворот вокруг Y, но параллельный террэйну, т.е. не учитывающий прочие повороты. Пробовал, как здесь приводить к единичному виду все повороты, кроме Y, но получалось что-то совсем не то. Если убирать только одну из ненужных горизонтальных осей, то нормально, но до первого разворота на 180 градусов - дальше начинает ездить в направлении глобальной оси X или Z, а не локального «в бок» или «прямо». Сейчас убрал обнуление осей, и теперь всегда берётся глобальная ось, хотя перемещение и идёт в локальных координатах (у translate есть дополнительный параметр с пространством перемещения):

void LevelCamera::VerticalTranslate(float amount)
{
    Quaternion currentRot = _cameraNode->GetRotation();
    Matrix3 rotation = currentRot.Inverse().RotationMatrix();
    Vector3 rotated = rotation * Vector3(0,0,amount);
    _cameraNode->Translate(rotated);
}

void LevelCamera::HorizontalTranslate(float amount)
{
    Quaternion currentRot = _cameraNode->GetRotation();
    Matrix3 rotation = currentRot.Inverse().RotationMatrix();
    Vector3 rotated = rotation * Vector3(amount,0,0);
    _cameraNode->Translate(rotated);
}
void LevelCamera::Update()
{
    UI* ui = GetSubsystem<UI>();
    Input* input = GetSubsystem<Input>();
    Graphics *graphics = GetSubsystem<Graphics>();

    if (ui->GetFocusElement())
        return;

    if(input->GetMousePosition().y_ < BORDER_OFFSET)
        VerticalTranslate(CAMERA_VELOCITY);
    if(input->GetMousePosition().y_ >  graphics->GetHeight() - BORDER_OFFSET)
        VerticalTranslate(-CAMERA_VELOCITY);
    if(input->GetMousePosition().x_ < BORDER_OFFSET)
        HorizontalTranslate(CAMERA_VELOCITY);
    if(input->GetMousePosition().x_ >  graphics->GetWidth() - BORDER_OFFSET)
        HorizontalTranslate(-CAMERA_VELOCITY);
    if (input->GetMouseButtonDown(MOUSEB_RIGHT))
    {
        IntVector2 mouseMove = input->GetMouseMove();
        _yaw += MOUSE_SENSITIVITY * mouseMove.x_;
        _pitch += MOUSE_SENSITIVITY * mouseMove.y_;
        Vector3 hitPos;
        Drawable* hitDrawable;
        if(Raycast(250.0f, hitPos, hitDrawable, true))
        {
            _cameraNode->RotateAround(hitPos, Quaternion(_yaw, Vector3(0,1,0)), TS_WORLD);
            if(abs((int)_pitch) < 20 )
            {
                if(_cameraNode->GetRotation().PitchAngle() < 45 &&  _pitch < 0)
                    _cameraNode->RotateAround(hitPos, Quaternion(_pitch, _cameraNode->GetDirection().CrossProduct(Vector3(0,1,0))), TS_WORLD);
                if(_cameraNode->GetRotation().PitchAngle() > 10 && _pitch > 0)
                    _cameraNode->RotateAround(hitPos, Quaternion(_pitch, _cameraNode->GetDirection().CrossProduct(Vector3(0,1,0))), TS_WORLD);
            }
        }

        _yaw = 0;
        _pitch = 0;
    }
    int wheelMove = input->GetMouseMoveWheel();
    if( wheelMove != 0 && abs((int)wheelMove) < 2)
    {
        Camera *camera = _cameraNode->GetComponent<Camera>();
        float oldZoom = camera->GetZoom();
        if(oldZoom > 0.5f && wheelMove < 0)
            camera->SetZoom(oldZoom + wheelMove*WHEEL_SENSITIVITY);
        if(oldZoom < 4 && wheelMove > 0)
            camera->SetZoom(oldZoom + wheelMove*WHEEL_SENSITIVITY);
    }
}

 , , кватернионы,

wingear
()

Путь, проходящий через все точки

Форум — Development

Есть множество рандомных точек на плоскости в заданном диапазоне. Одна из наиболее близких к краю выбирается в качестве конечной. После этого нужно создать список вершин, отображающий путь в обратном порядке, чтобы в него входили все точки. Наверняка есть какой-то стандартный алгоритм для этого, но пока придумал так: из ещё не выбранных вершин берётся ближайшая (если таких несколько, случайная из подходящих) и назначается следующей. Попробовал дважды на бумажке наставить точек и начертить путь таким способом - вроде бы не остаётся невыбранных. Но, м.б., просто повезло и есть какой-то более правильный алгоритм?

 

wingear
()

Urho3D - не загружается ui layout

Форум — Development

Никто здесь не тыкал этот движок? Можно, конечно, захардкодить кнопки и прочее, как у них в сэмплах, но хочется грузить из файла, созданного в редакторе + похоже, та же проблема с загрузкой сцены, а это уже фатально. Вроде бы всё аналогично их примеру HelloGUI, за исключением того, что загружаю root element из xml. Но в результате просто чёрный экран. Или там в самом layout'e надо добавить камеру/освещение? Просто в примерах с созданием интерфейса из кода ничего такого не делается, вроде бы.

MainApp.h: http://pastebin.com/tmFiKRmr

MainApp.cpp: http://pastebin.com/AbTzvE5M

Layout: http://pastebin.com/5XKqHStw

Log: http://pastebin.com/TiAZCycK

 ,

wingear
()

Правильный метод изучения Ogre3D

Форум — Development

Уже пару недель пытаюсь заставить работать первый пример из Ogre 3D 1.7 beginners guide. Осложняет ситуацию то, что поставил версию 1.9 и то, что автор, кажется, предполагает использование Visual studio(хотя все аналогичные действия удалось сделать и в Qt Creator). Дальше чёрного экрана удалось пройти только перетащив архив OgreCore.zip, который почему-то лежал в закоулке исходников для iOS, однако модель, которая должна отобразиться в первом упражнении, по-прежнему невидима. В логах ругается на невозможность компиляции rt-шейдеров. В общем, это превращается в увлекательный квест, похожий на сборку Gentoo и не имеющий ничего общего с какой-либо полезной деятельностью по изучению движка. Может быть, я что-то упустил, и есть другое более-менее полное пошаговое руководство? Или наиболее хороший вариант - делать по этим урокам с сайта?

wingear
()

KDE + CodeBlocks - как отключить ctrl + f9?

Форум — Desktop

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

 , , гвозди

wingear
()

Qt translator.load не работает

Форум — Development
QApplication a(argc, argv);
QTranslator* translator = new QTranslator();
QString localeName = QLocale::system().name();
if(translator->load("ru_RU", ":/translations/translation.qm"))
    a.installTranslator(translator);

Почему-то load возвращает false. Сначала думал, что-то не так с локалью, прописал явно ту, которая была в сгенерированном .ts файле - ноль эффекта. В редакторе qrc выбрал «скопировать путь к файлу», так что с этим тоже, по идее, всё в порядке. Из-за чего ещё перевод может не загрузиться?

 

wingear
()

OpenWRT на DSL-2640U

Форум — Admin

Скачал прошивку и поставил tftpd, но непонятно, как теперь зайти в загрузчик роутера:

http://wiki.openwrt.org/toh/d-link/dsl-2640u

'Flashing via Serial Cable Set up tftpd on your machine, then access router's CFE, and run

cfe> flashimage ip_of_tftpd:openwrt-DSL2640B-squashfs-cfe.bin"

Нашёл общее руководство по прошивке через tftpd, но конкретных данных по нужной модели там нет: http://wiki.openwrt.org/doc/howto/generic.flashing.tftp

По 9000 порту не соединяется, а по дефолтному стоит обычный busybox.

Никто не сталкивался с перепрошивкой сабжевого роутера?

 

wingear
()

Нафига делать параметр, который может принимать только одно значение?

Форум — Development

https://www.khronos.org/opengles/sdk/docs/man/xhtml/glBindRenderbuffer.xml

target Specifies the target to which the renderbuffer object is bound. The symbolic constant must be GL_RENDERBUFFER.

GL_INVALID_ENUM is generated if target is not GL_RENDERBUFFER.

Вот зачем это? Может, там ещё полно подобных нелогичностей?

 ,

wingear
()

Не пойму, зачем нужно glClearBufferData

Форум — Development

Читаю последний OpenGL Programming Guide - непонятно, в чём разница между glBufferData и glClearBufferData, если обеими функциями(несмотря на название последней) можно записать данные в буфер. Правда, в glClearBuffer(Sub)Data ещё указывается внутренний формат - тоже непонятно, почему glBufferData обходится без этого.

 

wingear
()

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