Страницы

Поиск по вопросам

воскресенье, 2 июня 2019 г.

Не удается запушить проект на github

После создания репы на git обнаружил, что вместе с файлами залил рабочий каталог .idea Добавил каталог в игнор, удалил его онлайн на github, сделал pull и попытка сделать push приводит вот к такому сообщению: Everything up-to-date. Что я сделал не так и как нужно правильно?


Ответ

Вопрос решился простым коммитом и последующим пушем.

Не работает автозапуск сервиса при загрузке телефона

Не получается настроить автозапуск сервиса при загрузке телефона. BroadcastReceiver просто не отрабатывает.
В манифесте:


Код ресивера
public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.d("======MyReceiver=======", "------onReceive-----"); context.startService(new Intent(context, MyService.class)); } }
После установки перед перезагрузкой запускал, тестировал приложение, как сказано здесь
Пробовал добавлять другие интент-фильтры:

От прочих системных событий ресивер тоже не срабатывает. Зато вполне успешно запускается при вызове из другого приложения таким кодом:
Intent intent = new Intent(); intent.setAction("com.example.andrey.myapplication.TEST"); sendBroadcast(intent);


Ответ

Я думаю ,что проблема в заглавных буквах. action name на самом деле должен выглядеть, как
android.intent.action.BOOT_COMPLETED

Как настроить кеш браузера для статики и медиа в Django

Подскажите пожалуйста, как настроить кеш браузера для статики и медиа в Django

вот справка гугла.. developers.google.com/speed/docs/insights/LeverageBrowserCaching
Я настроил кэширование фаловой системе по мануалу djbook.ru/rel1.8/topics/cache.html#filesystem-caching
т.е. добавил в настройки
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', 'LOCATION': '/var/tmp/django_cache', } }
и
MIDDLEWARE_CLASSES = ( 'django.middleware.cache.UpdateCacheMiddleware', .... 'django.middleware.cache.FetchFromCacheMiddleware', )
При загрузке страниц появился Expires в заголовке.
Но вот как сделать чтобы оно было для файлов из статики и из media, непонятно..


Ответ

Django не должен отвечать за установку хедеров статики. За это должен отвечать сервер который будет её обслуживать, например Nginx или Apache.
На локальной машине вашу ститику обслуживает сам django(скорее всего), но как и написано в мануале - это крайне неэффективно с точки зрения производительности.
Для ясности, картина работу выглядит так. Приходит http запрос -> Nginx определяет тип запроса - если статика, то сам её отдает, если нет отдает далее стоящему приложению -> т.к Django общается с сервером по wsgi протоколу то саму django обслуживает (запускает) другое приложение, например uWSGI(uWSGI реализация wsgi протокола) -> запрос приходит в саму django. Ответ уходит по цепочке вверх. Теперь становится понятно почему это так неэффективно и почему django не должен этим заниматься.
Почитайте документацию Django Managing static files
Определитесь с тем - кто будет обслуживать статику на боевом сервере, и читайте в этом направлении.
Например настройка Nginx

Что делать с файлом имяпроекта.v12.suo GIT

У меня есть проект, я его закомитил и создал новую ветку потом поработал в ней и закомитил ещё раз чтоб вернуться в основную ветку. Потом вернулся в основную ветку, в VS попросило нажать reload я жму, и потом пишу git status. Мне показывает что мой файл имяпроекта.v12.suo modified. Тоже самое происходит когда я возвращаюсь обратно в новую ветку, опять имяпроекта.v12.suo modified, тоесть чтоб переключаться между ветками мне приходится дополнять коммит git commit --amend. Что с этим делать?


Ответ

Добавьте *.suo в .gitignore
Файлы .suo содержат состояние открытых панелей Visual Studio и тому подобные вещи, интересные только на локальной машине. В репозитории им не место.

Вот большой список того, что должно быть в .gitignore для проектов под Visual Studio: https://www.gitignore.io/api/visualstudio

Android Studio - Что за красный прямоугольник?

Выводится такой красный прямоугольник когда вывожу строки в Resources. strings.xml c с комбинацией ALT+ENTER , как только появляется этот прямоугольник комбинация ALT+ENTER не работает! Приходится закрывать окно и заново открывать после чего комбинация работает , до следушего появления прямоугольника, что обычно происходит после перврго или второго вывода строки в strings.xml


Ответ

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

Использование “красивых” стилей элементов окна

Пытаюсь в окне сделать кнопку.
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { HFONT hFont; HWND hButton; switch(message) { case WM_CREATE: hButton = CreateWindow("button", "Press me!", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 5, 5, 100, 100, hWnd, (HMENU)(1), (HINSTANCE)GetWindowLong(hWnd, -6), NULL); hFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT); SendMessage(hButton, WM_SETFONT, (WPARAM)hFont, 1); return 0 ; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, message, wParam, lParam) ; }
Получается такая:

А как сделать кнопку, по стилю как в остальных приложениях (такую, например: ). Система Windows 7, компилятор gcc.exe (tdm64-1) 5.1.0.


Ответ

Действительно, как сказал Abyx, надо было добавить манифест (я надеялся, что есть путь проще). В итоге порядок действий:
Создать файл Application.manifest (например в директории с main.c):
Just button. Создать файл ресурсов resources.rc в той же директории, что и манифест, в которой будет одна строка:
1 24 "Application.manifest" Далее нужно скомпилировать файл ресурсов (выполнить команду в командной строке):
windres resources.rc -o resources.o Нужно добавить некоторый код в main.cpp
#define _WIN32_WINNT 0x0600 //для запуска нужна система Vista или новее #include #include int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { INITCOMMONCONTROLSEX icex; icex.dwSize = sizeof(INITCOMMONCONTROLSEX); icex.dwICC = ICC_STANDARD_CLASSES; InitCommonControlsEx(&icex); /* Далее код создания окна и все остальное */ } Ну и теперь нужно непосредственно скомпилировать программу (естественно надо не забыть про библиотеку):
g++ -o program.exe main.cpp resources.o -lcomctl32 -mwindows

Java - эмуляция ввода

Можно ли в Java юзать эмуляцию клавиатуры, и как это сделать ? С помощью Robot я разобрался только как вводить единичные символы - т.е. по одному. Пытаясь сделать это в цикле - как-то так:
for(char ch:str.toCharArray()){ robot.keyPress((int)ch); robot.keyRelease((int)ch); }
выходит какая-то ересь. Есть ли какой-нибудь метод, типа someMethod("text"), которой отправляет в текстбокс переданную ему аргументом строку ? Если кто-то подскажет java api для Sikuli - тоже буду рад ответу.


Ответ

Сделал так, оказывается, все просто: после того, как курсор оказался в поле для ввода, нужно просто вызвать метод type для объекта Screen и передать ему аргументом нужную строку. И все работает. [sikuli api for java]
UPD_0:
public class GITest { private Screen _screen; ....... private static final String _user = "user_139"; ....... } private void setPersonalData(){ try{ // сейчас курсор окажется в текстбоксе _screen.click("img/004.png"); // следующая операция - ввод _screen.type(_user); ........ } catch (FindFailed | InterruptedException ex){ _rbuffer.append("One of searching element not find.
"); writeLogBufferToFile(); System.exit(-1); } }