Страницы

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

четверг, 6 июня 2019 г.

Возможность перевести GC в режим реального времени

Недавно увидел что на хабре промелькнула информация о том, что ..в C# есть возможность перевести GC в режим реального времени (возможность гарантировать выполнение кода последовательно без перерыва на сборку мусора). может поподробней кто нибудь пожалуйста объяснить как это сделать?


Ответ

В пространстве имен System.Runtime имеется статический класс GCSettings, у которого есть свойство LatencyMode, определяющее уровень вмешательства сборщика в работу вашего приложения при выполнении сборки мусора. Подробнее о режимах, регулируемых этим свойством, можно прочитать в этой статье

Клиент -android, сервер -java app

Здравствуйте, помогите пожалуйста! Есть Клиент под Android и сервер на java на pc - когда запускаешь с эмулятора - все работает - сообщения передаются. Когда запускаешь приложение на android устройстве - при нажатии на кнопку отправить всё вылетает. Очень нужна ваша помощь.
Код Клиента:
package com.example.client; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.net.Socket; import java.net.UnknownHostException; import com.example.client.R; import android.app.Activity; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity {
private Socket client; private PrintWriter printwriter; private EditText textField; private Button button; private String messsage; String ip="192.168.0.80"; int port=80;
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); textField = (EditText) findViewById(R.id.textout); button = (Button) findViewById(R.id.send);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
messsage = textField.getText().toString(); Socket client =null; textField.setText(""); DataOutputStream dataOutputStream= null; DataInputStream dataInputStream = null;
try {
client = new Socket("192.168.0.80", 80); client.setSoTimeout(100); dataOutputStream = new DataOutputStream(client.getOutputStream()); dataInputStream = new DataInputStream(client.getInputStream()); dataOutputStream.writeUTF(messsage);
} catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { System.out.println("Got an IOException: " + e.getMessage()); } } }); } }


Ответ

Вы производите коннект с сервером в главном потоке, на реальном устройстве в новых версиях Android SDK это выкидывает исключение, а на эмуляторе работает.
Вам нужно создать поток Thread или Runnable и вынести всю логику коннекта и связи на этот поток.
Обновление
Вот этот код внесите в run():
client = new Socket("192.168.0.80", 80); client.setSoTimeout(100); dataOutputStream = new DataOutputStream(client.getOutputStream()); dataInputStream = new DataInputStream(client.getInputStream()); dataOutputStream.writeUTF(messsage);

Android. Проверка на регистрацию реального человека(девайса)

Есть клиент серверное приложение с регистрацией. Необходимо, чтобы регистрировался реальный человек(девайс), а не скрипт посылал пост запросы на регистрацию. Как можно в этом удостовериться? Вроде, есть у девайса аккаунты. И наверняка возможно проверить как то (например с помощью гугл апи), что девайс и аккаунт соответствуют. Но как это сделать? P.S. конкретнее надо сделать так, что бы злодей не смог зарегистрировать много(100+) аккаунтов.


Ответ

Используйте Oauth 2.0 для андроид. Суть: достаем с девайса аккаунт, генерим для него AccessToken для получения информации о email. И передаем на сервер этот AccessToken и email аккаунта. На сервера по AccessToken запрашиваем у гугла email, и если совпадает с тем, что прислал юзер - можно выдавать свой token, с которым и работать дальше. Авторизация Сама библиотека Блогозапись, которая может помочь При возникновении других вопросов - просто гуглите: информации достаточно.

Настоящий джангист [закрыт]

В связи с поиском работы в области Python/Django возник вопрос: что в Django должен знать каждый соискатель? Конечно, лучше всего фреймворк изучить досконально, но он имеет довольно большой объём и его полное изучение займёт значительное количество времени, а кушать хочется сейчас.


Ответ

Боюсь расстроить, но для хорошей востребованности на рынке труда одним фреймворком не обойдешься. Что касательно самого фреймворка - не такой уж он и большой как может показаться на первый взгляд, со временем поймешь. Досконально знать и не нужно - важно уметь ориентироваться в документации. Т.е. если сегодня возникла задача сделать какую-то "фишку", то ты должен знать есть ли средства для этого в приделах фреймворка? Если да, то в каком разделе смотреть документацию? Если нет, то идешь искать сторонние пакеты. И только потом, если ничего не найдешь, пишешь свой велосипед ). Вообще, когда рассматриваешь веб-инструменты как средство заработка, то я бы советовал целиться сразу на конкретную вакансию(в лучшем случае), конкретную компанию или отрасль(на худой конец). Приведу пример двух кардинально отличающихся направления деятельности веб-разработчика: 1. Поподаешь в крупную команду, которая пилит уже несколько лет социальную сеть, где менеджмент внутри конторы налажен добротно и тебе дают работку по твоему уровню, сидишь там API расширяешь и никуда больше не лезешь. 2. Маленькая команда которая параллельно штампует мелкие интернет-магазины по несколько штук в месяц. Там тебе нужно будет быть универсальным солдатом: модели, формы, на фронт лезть, платежные системы прикручивать и т.д. Чувствуется разница? Вот потому конкретного ответа на твой вопрос быть не может.

Регулярка на js “не искать внутри кавычек, но все выражение в кавычках - да”

Всем доброго дня! В общем, нужно найти все слова (буквы и цифры), перед которыми стоит знак минус. Трудность в том, что если это находится где-то внутри кавычек - то искать не надо. Примеры. -словоКотороеНайдет этоеНет -этоСноваНадет -"этоНайдет полностью и меня и меня" "-аВот я ненужен" -аЯНужен "и я -неНужен"


Ответ

Вот что получилось
/(^|[\s
])-(([^\s"'][^"']*?)(?=\s)|(["'])([^\s"'][^"']*?)\4)/g
Это не сработает
"например -"для вот такой конструкции"" "для -этого слова"
Перед выражением должен бы пробел, перевод строки или начало текста, а кавычки должны стоять прямо перед и сразу после текста. Это необходимое условие,иначе выражение, оказавшееся между двумя выражениями в кавычках, тоже будет пропускаться. По этой же причине нельзя отследить второе исключение из списка выше:
@eicto, да, это пропустит, вы правы. Но отслеживать кавычки обрамлённые пробелами бессмысленно, потому как такая форма проверки отсеит и текст не заключённый в кавычки, а находящийся между двумя фразами в кавычках, потому остаётся предполагать, что кавычки стоят прямо перед текстом, или сразу после него. Так же пропустит "вот -это слово", так как ни одна кавычка не стоит рядом с ним. Если же сделать проверку на наличие кавычек более дотошной, учитывающей такой вариант, то она отсеит -это "слово".
Выражение проверяет как двойные, так и одинарные кавычки.
Для более тщательной проверки стоит использовать несколько последовательных обработок текста, как советует @VenZell.

Как склеить строки ?

Вопрос в заголовке. Только не все строки. Про tr -d '
' мне известно. Пример: abc ; fgh ; " qwe rty " ; " asd " ; end В конвейере нужно превратить в: abc;fgh;"qwe rty";"asd";end
Другими словами, сделать нормальный CSV из вывода, где поля в отдельных строках, разделитель полей ';' тоже в отдельной строке и поля, которые могут содержать
, обрамлены строками '"'. Последний
надо заменить на
Для программы (на Си?) я бы сформулировал задачу просто: убрать все
вне "...", а внутри "..." убрать первый сразу за '"'. (на Си писать не надо, если "однострочник" не получится, то на нем сам как-нибудь напишу). ... Пока замер на проблеме, что я никак не могу заставить работать что-нибудь типа s/
;
/;/ ни в sed, ни в perl (т.е. работать с выражением для 2-х строк) P.S. python 2.4 тоже подойдет.


Ответ

perl -0777 -lpe 'BEGIN{$\="
"}s#
;
#;#gsm;s#;"
#;"#gsm'

Сделать кроссдоменный запрос к стороннему серверу

Подскажите, пожалуйста, как сделать кроссдоменный запрос к стороннему серверу на jQuery ??? Тестировал на своем хостинге, и если делаю запрос с локального сервера на свой хостинг то ответ я получу только в том случае если на хостинге в файле .htaccess явно прописано Header add Access-Control-Allow-Origin "*", может я чего не так понимаю, но хотелось бы узнать как сделать запрос не прописывая такой строчки в .htaccess, и возможно ли это ?


Ответ

Нет, это не возможно стандартными средствами JavaScript. Все дело в политике безопасности браузера, он требует подтверждения на стороне сервера, что такой запрос разрешен. Если сервер не отошлет специальный заголовок в ответ на Ajax запрос, то сам браузер блокирует ответ от сервера, хотя вы его получаете. Тут остается только использовать обходные пути. Можете почитать подробнее: http://learn.javascript.ru/xhr-crossdomain