Задать вопрос
  • Какой из текстовых редакторов Linux умеет работать по FTP?

    @AlexVWill
    А зачем заходить на сервер по ftp, когда давно придуман sshfs?
    Замепь удалённую папку как локальный том, и работай любым редактором напрямую с файлами на сервере.
    Ответ написан
    Комментировать
  • Как сделать обработку нажатия в диалоге?

    @AlexVWill
    Методом DialogInterface.OnClickListener()
    Я уже как то отвечал на похожий вопрос, посмотри код, там есть готовое решение: https://qna.habr.com/q/1105428
    И не надо скриншоты выкладывать, выкладывай лучше текст кода под спойлер.
    Ответ написан
    4 комментария
  • Что за странные страницы Битрикса?

    @AlexVWill
    В списке сохраненных страниц технологии композита непонятные страницы. Сотни страниц.

    это не список страниц, а список запросов, по идее да - кто-то брутфорсит, что неприятно, т.к. повышает загрузку на сервер, поставь Fail2ban и настрой его например при 5 неудачных запросов с какого то IPшника блокируем его на уровне iptables на час... количество таких запросов во много раз сократится...
    Ответ написан
    Комментировать
  • Чем плохие бесплатные VPN?

    @AlexVWill
    И каким образом они монетизируются?

    Спам, торговля персональными данными, реклама и пр.

    чем плохи бесплатные сервисы VPN

    ну хотя бы тем, что подмену DNS для них сделать - как два пальца, а ты и знать ничего не будешь...
    Ответ написан
    2 комментария
  • Как вывести отдельный layout в виде всплывающего окна?

    @AlexVWill
    Сначала нарисовать Layout и зазвать его policy_popup (для данного примера, ну или как тебе хочется)
    spoiler
    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <ScrollView
            android:id="@+id/scrollView4"
            android:layout_width="wrap_content"
            android:layout_height="250dp"
            android:layout_marginStart="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginTop="8dp"
            android:layout_marginEnd="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginBottom="8dp"
            app:layout_constraintBottom_toTopOf="@+id/donotshow"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">
    
            <androidx.constraintlayout.widget.ConstraintLayout
                android:id="@+id/linearLayout4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
    
                <TextView
                    android:id="@+id/policy_text"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="8dp"
                    android:layout_marginLeft="8dp"
                    android:text="@string/policy_disclosure_ru"
                    android:textColor="#000000"
                    android:textSize="16sp"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent" />
    
            </androidx.constraintlayout.widget.ConstraintLayout>
        </ScrollView>
    
        <CheckBox
            android:id="@+id/donotshow"
            android:layout_width="wrap_content"
            android:layout_height="48dp"
            android:layout_marginStart="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginEnd="8dp"
            android:layout_marginRight="8dp"
            android:text="Больше не показывать"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent" />
    
    </androidx.constraintlayout.widget.ConstraintLayout>


    Второй data_popup
    spoiler
    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <ScrollView
            android:id="@+id/scrollView4"
            android:layout_width="wrap_content"
            android:layout_height="300dp"
            android:layout_marginStart="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginTop="8dp"
            android:layout_marginEnd="8dp"
            android:layout_marginRight="8dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">
    
            <androidx.constraintlayout.widget.ConstraintLayout
                android:id="@+id/linearLayout4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
    
                <TextView
                    android:id="@+id/data_text"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="8dp"
                    android:layout_marginLeft="8dp"
                    android:text="@string/data_disclosure_ru"
                    android:textColor="#000000"
                    android:textSize="16sp"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent" />
            </androidx.constraintlayout.widget.ConstraintLayout>
        </ScrollView>
    
    </androidx.constraintlayout.widget.ConstraintLayout>

    Потом где то в коде Main Activity написать
    spoiler
    public void policytextshow(){
            LayoutInflater li = LayoutInflater.from(this);
            View promptsView = li.inflate(R.layout.policy_popup, null);
            //Make AlertDialog
            AlertDialog.Builder mDialogBuilder = new AlertDialog.Builder(this);
            //Настраиваем .xml для нашего AlertDialog:
            mDialogBuilder.setView(promptsView);
            //Настраиваем отображение поля для ввода текста в открытом диалоге:
            //Настраиваем сообщение в диалоговом окне:
            CheckBox hidebox = (CheckBox) promptsView.findViewById(R.id.donotshow);
            mDialogBuilder
                    .setCancelable(false)
                    .setIcon(R.drawable.shield1)
                    .setTitle("Политика информации")
                    .setPositiveButton("OK",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog,int id) {
                                    if (hidebox.isChecked()) {
                                        SharedPreferences.Editor editor = mSettings.edit();
                                        editor.putString(APP_PREFERENCES_SHOWPOLICY, "1");
                                        editor.apply();
                                    }
                                    dialog.cancel();
                                    // if policy alert dialog closed - work with contacts list
                                    contacts();
                                }
                            });
            //Создаем AlertDialog:
            AlertDialog alertDialog = mDialogBuilder.create();
            //и отображаем его:
            alertDialog.show();
    
            LayoutInflater li1 = LayoutInflater.from(this);
            View promptsView1 = li1.inflate(R.layout.data_popup, null);
            //Make AlertDialog
            AlertDialog.Builder mDialogBuilder1 = new AlertDialog.Builder(this);
            //Настраиваем .xml для нашего AlertDialog:
            mDialogBuilder1.setView(promptsView1);
            //Настраиваем отображение поля для ввода текста в открытом диалоге:
            //Настраиваем сообщение в диалоговом окне:
            mDialogBuilder1
                    .setCancelable(false)
                    .setIcon(R.drawable.shield1)
                    .setTitle("Используемые данные")
                    .setPositiveButton("OK",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog1,int id) {
                                    if (hidebox.isChecked()) {
                                        SharedPreferences.Editor editor = mSettings.edit();
                                        editor.putString(APP_PREFERENCES_SHOWPOLICY, "1");
                                        editor.apply();
                                    }
                                    dialog1.cancel();
                                }
                            });
            //Создаем AlertDialog:
            AlertDialog alertDialog1 = mDialogBuilder1.create();
            //и отображаем его:
            alertDialog1.show();
        }

    По этому коду сначала выскакивает одно сообщение, потом, при нажатии на Ок - второе, потом оно закрывается.
    Ответ написан
  • Как отключить Rst для установки убунту?

    @AlexVWill
    Не менялся ли случайно диск? Какое то странное поведение BIOS, у меня есть ноут Asus X200M, так там BIOS все показывает верно:

    spoiler
    61e347ad7b3bf422904485.jpeg

    К слову сказать, Ubuntu на нем отлично работает, глюков с оборудованием нет вообще, работает абсолютно все, и все клавиатурные макросы даже, без каких то доп. драйверов и плясок с бубном.
    Может быть попробовать сброс сделать? Save-Exit -> Restore Defaults или путем отключения автономного питания? (хотя врятли причина в этом)
    Ответ написан
    1 комментарий
  • Как обновить версию php в линуксе?

    @AlexVWill
    Есть же много инструкций на эту тему, вот например: https://eternalhost.net/base/vps-vds/obnovlenie-php
    А зачем тебе 8ка?
    Ответ написан
    1 комментарий
  • Можно ли на сайте-конструкторе сделать сайт с функционалом социальной сети?

    @AlexVWill
    Есть opensource социальная сеть, https://www.opensource-socialnetwork.org/
    Нормальная такая социалка, с постами, лайками, комментами, блекджеком и шлюхами.
    СтОит - 0, работает на PHP, ставится за полчаса.
    Большой плюс в том, что исходники есть, можно самому допиливать что угодно и как угодно.
    Ответ написан
    8 комментариев
  • Как отключить автоподключение к VPN если уже забыл как его настраивал?

    @AlexVWill
    nm-connection-editor
    Выбираешь сетевой интерфейс, на котором работает автоподключение VPN.
    Во вкладке 'General' сбрасываешь галочку с 'Automatically connect to VPN'.

    spoiler
    61cc7a11bfcb1778544425.png

    Только зачем отключать то автозагрузку, если VPN можно в любой момент выключить через Network Manager или через консоль
    sudo killall openvpn
    Ответ написан
    3 комментария
  • Как в android studio сделать чтобы пользователь мог добавлять выбранный рецепт в закладки?

    @AlexVWill
    Смотри https://developer.android.com/reference/android/co...
    Каждому рецепту должен быть присвоен свой уникальный код. Напротив рецепта, например, можно поставить звездочку "добавить в избранное", коды избранных рецептов сохранить с помощью SharedPreferences в предназначенный для этого XML файл, при открытии другого активити с "Избранным" прочитать эти коды и вывести нужные рецепты списком.
    Иной вариант: если ты собираешься хранить локально большой список рецептов в виде базы данных, где будут разные поля: название, тип, дата, и так далее, предусмотреть одно поле - favorites, и сделать все тоже, что написал выше, но в базе данных. Используй для этого SQLite
    Ответ написан
    Комментировать
  • Как в Android Studio сделать чтобы пользователь по нажатию кнопки мог добавлять свои элементы в массив?

    @AlexVWill
    C Kotlin помочь не могу, т.к. не владею, а в Java это делается путем intent.putExtra()

    Вот так передать (в одной Activity):

    public void editcontent(int position){
            Intent intent = new Intent(mContext, EditUserItemAd.class);
            intent.putExtra("adid", adid.get(position));
            intent.putExtra("image1_url", mImages1.get(position));
            intent.putExtra("image2_url", mImages2.get(position));
            intent.putExtra("image3_url", mImages3.get(position));
            intent.putExtra("short_name", shortNames.get(position));
            intent.putExtra("full_name", fullNames.get(position));
            intent.putExtra("ad_price", price.get(position));
            intent.putExtra("ad_currency", currency.get(position));
            intent.putExtra("ad_neworused", neworused.get(position));
            intent.putExtra("ad_category1", adcat_ind1.get(position));
            intent.putExtra("ad_category2", adcat_ind2.get(position));
            intent.putExtra("imagename1", Imagename1.get(position));
            intent.putExtra("imagename2", Imagename2.get(position));
            intent.putExtra("imagename3", Imagename3.get(position));
            intent.putExtra("adactivated", activated.get(position));
            mContext.startActivity(intent);
        }


    А вот так принять (в другой Activity):

    private void getIncomingIntent() throws JSONException {
            Log.d(TAG, "getIncomingIntent: checking for incoming intents.");
            if(getIntent().hasExtra("image1_url") && getIntent().hasExtra("short_name")){
                Log.d(TAG, "getIncomingIntent: found intent extras.");
                String useradid =   getIntent().getStringExtra("adid");
                String image1Url =  getIntent().getStringExtra("image1_url");
                String image2Url =  getIntent().getStringExtra("image2_url");
                String image3Url =  getIntent().getStringExtra("image3_url");
                String shortName =  getIntent().getStringExtra("short_name");
                String fullName =   getIntent().getStringExtra("full_name");
                String price =      getIntent().getStringExtra("ad_price");
                String currency =   getIntent().getStringExtra("ad_currency");
                String condition =  getIntent().getStringExtra("ad_neworused");
                String category1 =  getIntent().getStringExtra("ad_category1");
                String category2 =  getIntent().getStringExtra("ad_category2");
                String imagename1 = getIntent().getStringExtra("imagename1");
                String imagename2 = getIntent().getStringExtra("imagename2");
                String imagename3 = getIntent().getStringExtra("imagename3");
                String adactive =   getIntent().getStringExtra("adactivated");
                photopath0 = imagename1;
                photopath1 = imagename2;
                photopath2 = imagename3;
                makeItemInterface(useradid, image1Url, image2Url, image3Url, shortName, fullName, price,currency,condition, category1,category2, adactive);
            }
        }
    Ответ написан
    Комментировать
  • Как настроить VPN PPTP (LINUX) чтобы не отрубался интернет?

    @AlexVWill
    настроить маршрутизацию вручную, чтобы default с более высоким приоритетом при подключенном VPN был не сетевой интерфейс VPN, а роутера...
    подключи VPN и покажи
    ip route
    а потом то же, но без vpn
    Ответ написан
  • Как получить root права на android?

    @AlexVWill
    Просто скачать apk , нажать кнопку и все готово.

    APK приложение работает на уровне виртуальной машины Java, т.е. на уровне пользователя, а не на уровне системы, т.е. к загрузчику оно не имеет доступа. Что такое Android? Это, упрощенно говоря - Linux + JavaVM, для того, чтобы программы не имели доступ к критически важным компонентам системы: загрузчику, ядру ОС, драйверам и файловой системе и сделано так, что они работают на безопасном уровне виртуальной машины. Иначе любой зловред, скачанный в виде APK получит бесконтрольный доступ ко всех системе, а через нее к клавиатуре, камере, микрофону, данным пользователей и пр.
    Ответ написан
    Комментировать
  • Выход в интернет с L2TP VPN-сервер на StrongSwan, как добавить роутинг?

    @AlexVWill
    подключи клиентов к серверу и покажи
    ip route и ip xfrm policy на сервере

    еще сделай на клиенте
    traceroute google.com
    traceroute 216.58.204.142
    чтобы понять маршрут и есть ли проблема с DNS
    Ответ написан
  • Как окирпичить диск путем стирания gpt?

    @AlexVWill
    это не самоуничтожение, это самовнушение... чтобы данные уничтожить на 100%, надо все данные нулями перезаписать
    Ответ написан
    4 комментария
  • Есть ли local storage для apk?

    @AlexVWill
    Хочу понять есть ли у мобильных приложений local sorage?и если есть , стирается он при закрытии приложения?

    https://developer.android.com/training/data-storage

    где хранить токен, который я буду отправлять

    токен нигде лучше не хранить, токен по уму штука одноразовая если надо реализовать все с т.з. правильного подхода к безопасности
    Ответ написан
    Комментировать
  • Как использовать встроенный текстовый редактор linux и редактировать в нем файлы по ssh?

    @AlexVWill
    хочется ssh 192.168.1.xx
    sudo subl /var/www/html/index.html
    ctrl+S

    Для того, чтобы редактировать удаленные файлы на сервере, не обязательно заходить туда через SSH терминал, достаточно замепить удаленную папку как локальный том через SSHFS и редактировать удаленные файлы через тот редактор, который установлен на десктопе. Я так правлю PHP код на своем web-сервре, через Sublime или Visual Stuidio с PHP плагинами.
    Ответ написан
    Комментировать
  • Почему днс сервер перестал быть доступен по имени?

    @AlexVWill
    Рискну предположить, что если DNS сервер был DoH, и SSL сертификат был выдан Let's encrypt, то либо устарел сам сертификат сервера, либо корневой сертификат. Надо обновить сертификат.
    Ответ написан
    4 комментария
  • Как реализовать свой протокол?

    @AlexVWill
    переходит по моей ссылке вида: custom-protocol://mysite.com,

    вопрос не в сервере, а в клиенте, обработка URL, т.е. открытие соответствующего приложения является локальной задачей, а дальше уже локальное приложение отвечает за то, куда направляется запрос, на какой адрес по какому порту, и что на том конце на сервере на этот запрос отвечает... web сервер работает только с HTTP(S), на то он и web, чтобы был реализован ответ на какой то кастомный протокол, надо чтобы на удаленной стороне соответствующий порт слушал кастомный сервер
    Ответ написан
    Комментировать