Sparkjava: Нужны Ли Маршруты Главным Образом?
Я новичок в sparkjava и люблю его в целом. Однако следует ли в основном методе определять новые маршруты/конечные точки? Для любого значимого веб-приложения это приведет к очень длинному основному методу или мне необходимо иметь несколько основных методов (и, следовательно, разделять серверные ресурсы между несколькими экземплярами).
Кажется, что эти две страницы документации по искровной системе определяют маршруты в основном методе: http://sparkjava.com/documentation.html#routes и здесь http://sparkjava.com/documentation.html#getting-started.
Есть ли другой способ сделать это, чего я не вижу? Беглый поиск в Google не показал мне лучшего способа...
=========
Вот полное решение, которое я сделал на основе ответа Андрея. На мой взгляд, добавление конечных точек за пределы основного метода должно быть частью страницы документации sparkjava:
Основной метод:
public static void main(String[] args) {
//Do I need to do something more with the Resource instance so that sparkjava notices it and/or reads the routes?
Resource resource= new Resource(new Service());
}
Мой ресурс:
import static spark.Spark.*;
class Resource{
private Service service;
Resource(Service service){
this.service = service;
setupEndpoints();
}
private void setupEndpoints() {
get("/user/:id", "application/json",(request, response)
-> service.find(request.params(":id")), new JsonTransformer());
get("/users", "application/json", (request, response)
-> service.findAll(), new JsonTransformer());
}
}
Мой сервис:
public class Service {
public Object find(String id) {
return null;
}
public Object findAll() {
return null;
}
}
Мой JsonTransformer:
import spark.ResponseTransformer;
public class JsonTransformer implements ResponseTransformer {
@Override
public String render(Object model) throws Exception {
return null;
}
}
routes spark-java
Интерактивный Просмотр Контроллера Увольнения И Изменения Статусаbarstyle Несовместим?
Я представляю модальный UINavigationController с интерактивным увольнением. Контроллер родительского представления имеет темную строку состояния, а контроллер модального представления - индикатор состояния. Я использую конфигурацию отображения строки состояния на основе контроллера iOS 7.
Все работает нормально, пока я представляю и отклоняю контроллер представления не интерактивно. Однако, когда я начинаю интерактивный переход с отменой и отменяет его, цвет строки состояния остается темным.
Я создал образец проекта. Нажмите кнопку "Меню", затем запустите интерактивный переход путем панорамирования с правого края экрана.
Вещи, которые я пробовал:
- вызов
-setNeedsStatusBarAppearanceUpdateна любом из контроллеров навигации и просмотра, которые были задействованы после того, как переход был отменен. - Изменение параметра navigationBar.barStyle на
UIBarStyleDefaultи обратно наUIBarStyleBlack
Я также подтвердил, что statusBarStyle моего модального контроллера навигации настроен правильно:
(lldb) p (UIStatusBarStyle) [[[[[UIApplication sharedApplication] keyWindow] rootViewController] presentedViewController] preferredStatusBarStyle]
(UIStatusBarStyle) $8 = UIStatusBarStyleLightContent
Тем не менее, строка состояния черная.
Любая дальнейшая идея, что я мог попробовать?
ios cocoa-touch uikit uiviewcontroller statusbar
Почему Моя Функция Swift Задает Мне Неправильные Переменные
Я создал структуру и функцию внутри нее, и я не понимаю, почему он спрашивает меня о неправильных параметрах, когда я пытаюсь назвать это. Вот мое объявление функции:
struct UserInterfaceVariables {
func applyCustomAnimation(view: AnimatableView, animationType: String, duration: Double, delay: Double, damping: CGFloat, velocity: CGFloat, force: CGFloat) {
view.animationType = animationType
view.duration = duration
view.delay = delay
view.damping = damping
view.velocity = velocity
view.force = force
}
}
И в другом представлении контроллера, я пытаюсь его вызвать, он запрашивает у меня параметр "UserInterfaceVariables", но это не тот тип параметра, который я хочу ввести... Я хочу ввести параметры из объявления моей функции (" animationType "и т.д.)
UserInterfaceVariables.applyCustomAnimation(UserInterfaceVariables)
Обратите внимание, что запись "UserInterfaceVariables" (в круглых скобках) является типом ожидаемого параметра... т.е. Это выглядит так, как на Xcode:
Почему это не спрашивает меня о параметрах, объявленных в определении моей функции?
EDIT 1 Ориентировочное решение:
let userInterfaceVariables = UserInterfaceVariables()
applyCustomAnimation(view: ..., .....)
ios swift
Вставить Изображение С Помощью Javascript Onpaste Не Работает Для Ie, Работая С Хромом
Я пытаюсь сохранить изображение/скриншот через пасту Ctrl + V в div #pasteImageDiv пользователем. Он отлично работает с Chrome, но не работает с IE.
Я использую IE10.
До сих пор то, что я смог найти, заключается в том, что если я вставляю какой-либо текст в div #pasteImageDiv, он поймает событие onpaste должным образом, даже в IE. Но если я onpaste образ вместо текста, он даже не поймает onpaste (IE даже не входит в функцию, которая обрабатывает событие onpaste).
document.getElementById('pasteImageDiv').onpaste = function (event) {Он хорошо работает в Chrome, вставляю ли я текстовую строку или изображение. Надеюсь, вы понимаете, с какими проблемами я сталкиваюсь. Тем не менее, если какая-либо дополнительная информация необходима, пожалуйста, дайте мне знать.
$('#pasteImageHere, #pasteImageDiv').click(function(e){ //on paste image button click
e.preventDefault();
$('#hideOnPaste').hide();
//document.getElementById('pasteImageDiv').click();
document.getElementById('pasteImageDiv').style.backgroundColor = "#F1F1F1";
document.getElementById('pasteImageDiv').onpaste = function (event) {
$('#hideOnPaste').hide();
//console.log(event.clipboardData.getData('image/png'));
// use event.originalEvent.clipboard for newer chrome versions
var items = (event.clipboardData || event.originalEvent.clipboardData).items;
console.log(JSON.stringify(items)); // will give you the mime types
// find pasted image among pasted items
var blob = null;
for (var i = 0; i < items.length; i++) {
if (items[i].type.indexOf("image") === 0) {
blob = items[i].getAsFile();
}
}
// load image if there is a pasted image
if (blob !== null) {
var reader = new FileReader();
reader.onload = function(event) {
console.log(event.target.result); // data url!
var elem = document.createElement("img");
elem.setAttribute("id", "pastedImage");
elem.setAttribute("height", "200");
elem.setAttribute("width", "300");
document.getElementById("pasteImageDiv").appendChild(elem);
document.getElementById("pastedImage").src = event.target.result;
document.getElementById('inputImageData').value = event.target.result;
console.log($('#inputImageData').val());
$('#pastedImage').css('width', '300px');
$('#pastedImage').css('height', '200px');
document.getElementById("pastedImage").style.height = '200px';
};
reader.readAsDataURL(blob);
$('#removePastedImage').show();
}
}
});javascript jquery cross-browser internet-explorer-10
Сохранить Как Опцию В Java
У меня есть файл, который не читается до тех пор, пока я не открою и не сохраню его, используя save as. Существуют некоторые проблемы с форматированием, поскольку они создаются с использованием кода SAS. Есть ли опция "сохранить как" в java (автоматизированный способ), поскольку выходной формат не может быть изменен (из SAS).
Код SAS генерирует csv в таком формате:
"Obs","P10","P20","P30","P40","P50","P60","P70","P80","P90","P91","P92","P93","P94","P95","P96","P97","P98","P99","P100"
"1",.005632791,.007874444,0.010690,0.014358,0.019461,0.027262,0.039370,0.059857,0.10087,0.10837,0.11616,0.12403,0.13478,0.14563,0.15924,0.17487,0.19465,0.22304,0.49123
---The Текстовые значения заключаются в двойные кавычки
и когда файл будет сохранен с сохранением по мере его создания:
Obs,P10,P20,P30,P40,P50,P60,P70,P80,P90,P91,P92,P93,P94,P95,P96,P97,P98,P99,P100,,,,,,,,,,,,
1,0.005632791,0.007874444,0.01069,0.014358,0.019461,0.027262,0.03937,0.059857,0.10087,0.10837,0.11616,0.12403,0.13478,0.14563,0.15924,0.17487,0.19465,0.22304,0.49123,,,,,,,,,,,,
java csv save
Elasticsearch - Имя Поля По Умолчанию
В 2.0 alpha для гнезда я изо всех сил DefaultFieldNameInferrer установить DefaultFieldNameInferrer в camelCase.
После выяснения того, как просмотреть "тело запроса" (по настройке DisableDirectStreaming на true, несмотря на то, что значение по умолчанию истинно...), я вижу, что для запроса типа:
...fil.Bool(b2 => b2.Must(m => m.Term(t => t.DomainName, host))))...
он отправляет DomainName с надписью D:
...{"term":{"DomainName":{"value":"example.com"}}}]}...
Версия 1.7 всегда отправила camelCase, и, следовательно, мои сопоставления - все camelCase.
Как я могу изменить это обратно на camelCase?
редактировать
Подключение:
ElasticClient = new ElasticClient
(new ConnectionSettings(new Uri(WebConfigMethods.GetElasticSearchUri())).MapDefaultTypeIndices
(new ElasticsearchMethods().ElasticSearchDefaultTypeIndices)
.DisableDirectStreaming(true)
.DefaultFieldNameInferrer
(s =>
{
if (string.IsNullOrEmpty(s))
return s;
if (!char.IsUpper(s[0]))
return s;
string camelCase = char.ToLower(s[0], CultureInfo.InvariantCulture)
.ToString(CultureInfo.InvariantCulture);
if (s.Length > 1)
camelCase += s.Substring(1);
return camelCase;
}));
Запрос:
var result = elasticClient.Search<ADocType>
(s => s.Take(1)
.Query
(qu =>
qu.Bool
(b => b.Filter(fil => fil.Bool(b2 => b2.Must(m => m.Term(t => t.DomainName, host)))))));
Какое гнездо фактически отправляет:
{"size":1,"query":{"bool":{"filter":[{"bool":{"must":[{"term":{"DomainName":{"value":"example.com"}}}]}}]}}}
elasticsearch nest
Передача Данных В Контейнер Просмотр Из Родительского Просмотра
Итак, я видел несколько примеров этого и пытался их реализовать, но, похоже, не может заставить его работать. У меня есть два VC (оба отмечены как VC1 на моей фотографии), которые идут во второй контроллер представления (VC2 на фотографии). VC2 имеет вид контейнера. Я передаю данные из свойства на VC1 в свойство на VC2, а затем мне нужно передать эти данные из V2 в свойство в представлении контейнера. Основываясь на использовании некоторых NSLogs, кажется, что подготовка к segue для моего встроенного segue, который идет от VC2 к моему представлению контейнера, срабатывает, прежде чем свойство на VC2 будет установлено данными, передаваемыми VC1, что означает, что никакие данные не передаются мой контейнерный вид. Любой способ обойти это? Спасибо заранее.
Это мой метод подготовки к VC2:
мой контейнерный вид - WineryPhotosCVC. Я пытаюсь установить винный завод WineryPhotosCVC с собственностью VC2s winery. Свойство winery VC2s не устанавливается VC1 перед вызовом метода prepareForSegue в мой контейнер.
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqual: @"containerViewSegue"]) {
WineryPhotosCVC *wineryPhotosCVC = segue.destinationViewController;
wineryPhotosCVC.winery = _winery;
}
}
ios objective-c uicontainerview segue
Мониторинг Потока Данных В Реальном Времени С Помощью Флеш-Веб-Приложения
Это основано на ответе, опубликованном в qaru.site/questions/147215/...
Я хотел бы отслеживать поток данных и подталкивать его к интерфейсу, аналогичному приведенному выше ответу, но где поток начинает генерировать/контролировать данные, как только приложение запускается, и клиент всегда видит текущий состояние потока данных (который продолжает работать независимо от того, запрашивают ли они данные с сервера).
Я уверен, что мне нужно отделить поток данных от front-end через потоки, но я не очень практикован с потоковым/асинхронным программированием и считаю, что я делаю это неправильно. Может быть, вместо threading мне нужно использовать многопроцессорность? Здесь примерно то, что я пытаюсь сделать (измененный из ответа, связанного выше):
app.py
#!/usr/bin/env python
from __future__ import division
import itertools
import time
from flask import Flask, Response, redirect, request, url_for
from random import gauss
import threading
app = Flask(__name__)
# Generate streaming data and calculate statistics from it
class MyStreamMonitor(object):
def __init__(self):
self.sum = 0
self.count = 0
@property
def mu(self):
try:
outv = self.sum/self.count
except:
outv = 0
return outv
def generate_values(self):
while True:
time.sleep(.1) # an artificial delay
yield gauss(0,1)
def monitor(self, report_interval=1):
print "Starting data stream..."
for x in self.generate_values():
self.sum += x
self.count += 1
stream = MyStreamMonitor()
@app.route('/')
def index():
if request.headers.get('accept') == 'text/event-stream':
def events():
while True:
yield "data: %s %d\n\n" % (stream.count, stream.mu)
time.sleep(.01) # artificial delay. would rather push whenever values are updated.
return Response(events(), content_type='text/event-stream')
return redirect(url_for('static', filename='index.html'))
if __name__ == "__main__":
# Data monitor should start as soon as the app is started.
t = threading.Thread(target=stream.monitor() )
t.start()
print "Starting webapp..." # we never get to this point.
app.run(host='localhost', port=23423)
static/index.html
<!doctype html>
<title>Server Send Events Demo</title>
<style>
#data {
text-align: center;
}
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
if (!!window.EventSource) {
var source = new EventSource('/');
source.onmessage = function(e) {
$("#data").text(e.data);
}
}
</script>
<div id="data">nothing received yet</div>
Этот код не работает. Сообщение "Starting webapp..." никогда не печатается, равно как и обычные сообщения об флажках и посещение обслуживаемого URL-адреса не подтверждают, что приложение не работает.
Как заставить монитор данных работать в фоновом режиме таким образом, чтобы флажок мог получить доступ к значениям, которые он видит, и подтолкнуть текущее состояние к клиенту (лучше даже: до тех пор, пока клиент слушает, нажмите текущее состояние при изменении соответствующих значений)?
python multithreading flask stream network-programming
Как Вы Можете Клонировать Объект Wpf?
У кого-нибудь есть хороший пример того, как глубоко клонировать объект WPF, сохраняя привязки данных?
Отмеченный ответ - первая часть.
Вторая часть состоит в том, что вам нужно создать ExpressionConverter и ввести его в процесс сериализации. Подробности здесь:
http://www.codeproject.com/KB/WPF/xamlwriterandbinding.aspx?fid=1428301&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=2801571
c# clone wpf binding
Jquery Ajax Вызов Для Входа В Passportjs В Express (Nodejs) Framework
Я пытаюсь использовать AJAX для вызова проверки входа, используя библиотеку Passport в приложении Express. Я использую локальную стратегию следующим образом:
router.post('/login', function(req, res, next) {
passport.authenticate('loginUsers', function(err, user, info) {
if (err) {
return next(err);
}
// if user is not found due to wrong username or password
if (!user) {
//return res.render('login', {});
res.json({detail: info});
}//(!user)
//passport.js has a logIn user method
req.logIn(user, function(err) {
if (err) { return next(err); }
return res.render('account', {});
}); //req.logIn
})(req, res, next);
});
Проблема в том, что я не знаю, как передать переменные в Passport, эмулируя функцию bodyparser.json(), и пытаюсь сделать что-то вроде этого:
$(document).ready(function() {
$('form').submit(function() {
$.ajax({
type:'POST',
url:'/login',
data: {username: $('#us').val(), password: $('#pass').val()},
success:function(result){
if(!result){
//$('form input[name="username"]').css("background-color", "red");
}
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr.status);
console.log(thrownError);
}
});
return false;
});
});
ИЗМЕНИТЬ -
Моя стратегия:
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(user, done) {
done(null, user);
});
passport.use('loginUsers', new LocalStrategy(
function(username, password, done) {
users.findOne({email: username}, function(err, user) {
if (err) { return done(err); }
if (!user) {
console.log('[+] DB: user/password failure'.red);
return done(null, false, {error: ''});
}else if(!bcrypt.compareSync(password, user.hashed_password)){
console.log(("[+] Password error").red);
return done(null, false, {error: ''});
}else if(user.verified === false){
console.log("[+] DB: user not verified");
return done(null, false, {error: ''});
}else{
console.log("[+] DB: user/password success".green);
return done(null, user);
} //else
}); //findOne
}
));
Ошибка при передаче учетных данных сохраняется, im geting:
Объект {detail: Object} detail: Objectmessage: "Отсутствующие учетные данные" Прото:
Может ли кто-нибудь указать мне в правильном направлении?
jquery node.js ajax express passport.js
Заполнить Вектор С Вероятностными Вычислениями
У меня есть следующие векторы:
s = [1 0 2];
lambda = [1 2 3];
Эти векторы могут быть n-мерными, а не только трехмерными. Основываясь на этой информации, я хотел бы создать "вектор вероятности":
p = [poisspdf(0, lambda(1))+poisspdf(1, lambda(1)) poisspdf(0,lambda(2)) poisspdf(0,lambda(3))+poisspdf(1,lambda(3))+poisspdf(2,lambda(3))]
Таким образом, вектор s определяет, сколько членов существует для вектора вероятности, например s (1) = 3 означает p (1) = P (X = 0) +P (X = 1) +P (X = 2),
Я попробовал что-то вроде этого:
p = sum(poisspdf(0:s,lambda));
Однако это работает только для s = [0 0 0] и сбрасывается при s = [1 0 0] и так далее. (Ошибка в poisspdf: требуется нескалярные аргументы для соответствия по размеру.)
Заранее спасибо!
matlab
Данные Дочернего Канала Donit Proivide При Нажатии И Открытии В Приложении Для Android
Я создал ссылку, используя приложение примера ветвей, и установил все, как указано. Приложение примера ветки При создании ссылки я могу видеть данные в панели управления веткими, связанные с этой ссылкой. Но всякий раз, когда я нажимаю эту ссылку в своем устройстве и приложении Android, я получаю sessionparams и referparams как пустые, я пробовал
Branch branch = Branch.getInstance();
branch.initSession(new Branch.BranchReferralInitListener() {
@Override
public void onInitFinished(JSONObject referringParams, BranchError error) {
String referringParamsString = (String) sessionParams.toString();
//{"+clicked_branch_link":false,"+is_first_session":false}
JSONObject sessionParams = Branch.getInstance().getFirstReferringParams();
//{Empty }
}
});
Пожалуйста, помогите, раньше он работал нормально. Теперь он не работает. Я попытался изменить Branch.getAutoInstance (это); → Branch.getAutoInstance (это, правда); используется JSONObject sessionParams = Branch.getInstance(). getFirstReferringParams(); без ветвления. Тем не менее, я не получаю никаких значений. Заранее спасибо.
android deep-linking branch.io
Тикер Остановить Поведение В Голанге
Если я перемещаюсь по каналу тикера и остановке вызова(), канал останавливается, но не закрывается.
В этом примере:
package main
import (
"time"
"log"
)
func main() {
ticker := time.NewTicker(1 * time.Second)
go func(){
for _ = range ticker.C {
log.Println("tick")
}
log.Println("stopped")
}()
time.Sleep(3 * time.Second)
log.Println("stopping ticker")
ticker.Stop()
time.Sleep(3 * time.Second)
}
Запуск производит:
2013/07/22 14:26:53 tick
2013/07/22 14:26:54 tick
2013/07/22 14:26:55 tick
2013/07/22 14:26:55 stopping ticker
Так что горутин никогда не выходит. Есть ли лучший способ справиться с этим делом? Должен ли я беспокоиться, что горутин никогда не выходил?
go ticker
Если Условный Оператор Для Значения Возвращается Из Nsjsonserialization
У меня возникла проблема с условным выражением для значения, возвращаемого из NSJSONSerialization. Я пытаюсь выяснить, вошел ли пользователь в систему. JsonData возвращает значение userStatus, которое должно быть либо loggedIn, либо notLoggedIn. Когда я пытаюсь выполнить оператор "if", я получаю следующую ошибку:
Невозможно подстроить значение типа [[String: AnyObject] с индексом типа String.
Любая помощь будет принята с благодарностью.
У меня есть следующий код:
do {
let jsonData = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as! [[String:AnyObject]]
let userStatus = jsonData["userStatus"] as! String
if userStatus == "loggedIn" {
print("The user is loggedIn")
} else {
print("The user is not loggedIn")
}
} catch {
print("Error...")
}
ios swift2
Функция Ajax Не Работает При Передаче Одной Из Переменных Через Параметр, Php, Javascript, Ajax
Я пытаюсь написать функцию, чтобы получить значение из оператора select, и эхо значение на экране. Он работает, когда я помещаю точное имя select внутри функции ajax, но он перестает работать, когда я пытаюсь передать имя выбора через параметры. Я знаю, что он прошел через параметр успешно, и я знаю, что это было правильное имя выбора, предупредив его на экране внутри функции, когда я его тестировал. Поэтому я думаю, что фактическая проблема может быть в этой строке:
data: { select: $('select[name=theName]').val()},
Но я не уверен, что с ним не так. У меня есть 2 версии моих кодов ниже. Первая версия работает, а вторая версия - нет. Первая версия имеет точное имя выбора внутри параметра, а вторая версия передается через параметр "theName". Взгляни, пожалуйста:
ajax.php
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type = "text/javascript">
function ajax(url,theName,id) {
alert(theName)
$.ajax({
type: "POST",
url: url,
data: { select: $('select[name="select1"]').val()},
error: function(xhr,status,error){alert(error);},
success:function(data) {
document.getElementById( id ).innerHTML = data;
}
});
}
</script>
test1
<?php
echo "<select name = 'select1' onchange = 'ajax(\"test2.php\",\"select1\",\"output\")'>";
?>
^ ---This версия работает.
ajax.php
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type = "text/javascript">
function ajax(url,theName,id) {
alert(theName)
$.ajax({
type: "POST",
url: url,
data: { select: $('select[name=theName]').val()},
error: function(xhr,status,error){alert(error);},
success:function(data) {
document.getElementById( id ).innerHTML = data;
}
});
}
</script>
test1
<?php
echo "<select name = 'select1' onchange = 'ajax(\"test2.php\",\"select1\",\"output\")'>";
?>
^ ---This версия не работает.
javascript jquery ajax php
Добавить Флеш-Сообщение Для Создания Без Потери Страницы
Я использую node.js и express для создания веб-приложения CRUD, и я пытаюсь выяснить, как получить флэш-сообщение в форме ввода данных, когда проверка на стороне сервера не удалась. Я использую экспресс-флеш для флеш-сообщений.
Код проверки работает, возвращая ошибки, и я создаю флэш-сообщение:
var errors = validateForm(req);
if(errors){
req.flash('info',errors);
res.render('edit', {messages: req.flash('info')});
}
И отобразите сообщение в файле edit.jade:
if messages.info
p #{messages.info}
Проблема в том, что я редактирую конкретный объект, а URL-адрес не редактируется, а /edit/objectID. Доступ к странице выглядит следующим образом:
router.get('/edit/:id', function(req, res) {
var db = req.db;
var collection = db.get('mydb');
collection.find({ID: req.params.id},{},function(e,docs){
res.render('edit', {"object" : docs});
});
});
Можно ли добавить флэш-сообщение для проверки на стороне сервера после отправки POST без потери идентификатора страницы? Мне не нужны все данные из редактирования, будет проверка на стороне клиента, чтобы, надеюсь, подобрать какие-либо ошибки, но я бы хотел, чтобы ошибки проверки на стороне сервера заставили пользователя приземлиться на той же странице объекта, что и они.
node.js pug express
Не Удалось Переделать 2-Мерный Массив.
У меня был массив размером 2 (от 1 до 406, от 1 до 8)
когда я пытаюсь переделать и сохранить ценность
ReDim Preserve arr(1 To UBound(arr()) + 1, 1 To 8)
он выскакивает ошибка Подстрочный вне диапазона, что на самом деле Im делает неправильно?
vba excel-vba excel
Шаблон Для Однопользовательского Процесса Приложения С Использованием Базы Данных
У меня есть бэкэнд-процесс, который поддерживает состояние в базе данных PostgreSQL, которое должно быть видимым для интерфейса. Я хочу:
-
Правильно обрабатывайте бэкэнд, который остановлен и запущен. Это само по себе так же просто, как очистка таблиц состояния бэкэнда при запуске.
-
Охрана от нескольких экземпляров бэкэнда, попирающих друг друга. Там должен быть только один бэкэнд-процесс, но если я случайно запускаю второй экземпляр, я хочу убедиться, что либо первый экземпляр убит, либо второй экземпляр заблокирован, пока первый экземпляр не умрет.
Решения, о которых я могу думать, включают:
-
Используйте тот факт, что мой серверный процесс прослушивает порт. Если второй экземпляр процесса пытается начать, он не сработает с "Адресом, который уже используется". Я просто должен убедиться, что он выполняет шаг
listenперед подключением к базе данных и уничтожением таблиц состояний. -
Откройте дополнительное соединение и выполните следующее:
BEGIN; LOCK TABLE initech.backend_lock IN EXCLUSIVE MODE;Примечание. Причина
IN EXCLUSIVE MODEзаключается в том, чтоLOCKумолчанию установлен в режим блокировки AccessExclusive.Это конфликтует с блокировкой AccessShare, полученнойpg_dump.Не совершайте. Оставьте таблицу заблокированной до тех пор, пока программа не умрет.
Какая хорошая модель для поддержки одного backend-процесса, поддерживающего состояние в базе данных PostgreSQL? В идеале я бы приобрел блокировку на время соединения, но LOCK TABLE не может использоваться за пределами транзакции.
Задний план
Рассмотрите приложение с "брокерским" процессом, который ведет переговоры с базой данных и принимает подключения от клиентов. Каждый раз, когда клиент подключается, процесс брокера добавляет запись для него в базу данных. Это дает два преимущества:
-
Интерфейс может запрашивать базу данных, чтобы узнать, какие клиенты подключены.
-
Когда строка изменяется в другой таблице с именем
initech.objects, и клиенты должны знать об этом, я могу создать триггер, который генерирует список клиентов, чтобы уведомлять об изменении, записывать его в таблицу, а затем использовать NOTIFY для пробуждения брокерский процесс.Без таблицы подключенных клиентов приложение должно выяснить, какие клиенты уведомлять. В моем случае это оказалось довольно запутанным: сохраните копию таблицы
initech.objectsв памяти, и в любой момент, когда строка изменится,initech.objectsстарые строки и новую строку обработчикам, которые проверяют, изменилась ли строка и действовала ли она сделал. Для этого эффективно создавать "индексы" как для хранимой таблицы, так и для обработчиков, заинтересованных в изменениях строк. Я делаю плохую копию SQL-индексирования и запросов в программе брокера. Я предпочел бы переместить эту работу в базу данных.
В заключение я хочу, чтобы брокерский процесс поддерживал некоторые из его состояний в базе данных. Это значительно упрощает отправку изменений конфигурации клиентам, но для этого требуется одновременное подключение только одного экземпляра брокера к базе данных.
postgresql
Css-Классы Шрифтов Не Работают
Это, вероятно, что-то ОЧЕНЬ неловкое; однако это некоторое время подтачивало меня.
В приведенном ниже примере, почему размеры шрифта не применяются к тексту?
.1px {
font-size: 1px;
}
.100px {
font-size: 100px;
} <p class="1px"> Hello, world. </p>
<p class="100px"> Hello, world. </p>Нет, я не использую bootstrap, не говоря уже о том, что любой плагин перезаписывает размер шрифта.
EDIT: Спасибо за ответы, я назвал это будет неловко.
css
Загрузка Необработанных Данных Изображения С Использованием Ajax
Я пытаюсь сделать немного интеграции facebook с веб-сайтом, и там есть конкретный вызов на facebook api, который размещает картинку в учетной записи пользователя. Одним из параметров является необработанные данные изображения. Изображение хранится локально на веб-сервере, и у меня есть URL-адрес. Я собирался загрузить изображение на клиенте с помощью javascript, пока не узнаю, что не могу этого сделать. В настоящее время я пытаюсь вызвать HTTPxml-вызов на сервер с URL-адресом изображения и намереваться вернуть данные изображения. Этот пример кода работает с URL-адресом для файла csv, но, похоже, он не хочет читать содержимое файлов изображений. Я получаю сообщение об ошибке при попытке xmlhttp.responseText. Вызов api, который я хочу использовать для этих данных изображения:
http://wiki.developers.facebook.com/index.php/Photos.upload
function getFile(pURL,pFunc) {
xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
if (xmlhttp) {
eval('xmlhttp.onreadystatechange='+pFunc+';');
xmlhttp.open('GET', pURL, false);
xmlhttp.send();
}
}
function makeList() {
if (xmlhttp.readyState==4) {
if (xmlhttp.status==200) {
var tmpArr=xmlhttp.responseText;
document.getElementById('theExample').innerHTML=tmpArr;
}
}
}
Пожалуйста, извините мое страшное понимание этого материала в Интернете. Мне нужно это изучить, но мне также нужно сделать эту небольшую работу, прежде чем я смогу сесть и изучить все эти хорошие вещи. Я слишком долго укоренился в мире С#/С++.
javascript ajax facebook xmlhttprequest
Частичный Ключ, Соответствующий Qhash
У меня QHash определяется следующим образом
QHash<QString, QString> hashLookup;
Я вставил несколько значений в этот хэш следующим образом:
hashLookup.insert("OMG", "Oh my God!");
hashLookup.insert("LOL", "Laugh out loud");
hashLookup.insert("RIP", "Rest in peace");
// and so on
У меня есть несколько QStrings следующим образом:
QString a = "OMG_1";
QString b = "LOL_A";
QStirng c = "OMG_YOU";
QString d = "RIP_two";
Я должен найти, существуют ли эти значения в hashLookup, т. OMG_1 Поскольку OMG_1 содержит OMG, я должен быть в состоянии получить Oh my God! ,
Я попытался сделать это, используя
if(hashLookup.contains(a)
//do something
который, конечно же, пытается найти ключевой OMG, который отсутствует в таблице поиска и ничего не возвращает. Возможно ли частичное сопоставление ключевых значений в Qt? Если да, как мне следует это реализовать.
qt qhash
Flexmojos 4.2-Beta Mergeresourcebundle
Что нового в Flexmojos 3.8
<mergeResourceBundle>true</mergeResourceBundle>
flexmojos flex-mojos
Configuration.manger В Модульном Тестировании
Я уже прочитал несколько замечательных вопросов и отвечу на эту проблему, например, Can not Use ConfigurationManager в проекте Unit Test
и как издеваться над ConfigurationManager.AppSettings с moq
На данный момент решение, которое я использую в своих модульных тестах, как и файл App.config для проекта модульных тестов. и он работает нормально.
моя цель - динамически загружать плагин (*.dll) в мой проект С#.
вот мой оригинальный App.config
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicFormattedKeyToken=b77a5c561934e089">
<section name="IQCMain.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicFormattedKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
<section name="CalibrationToolsSection" type="sec.Calibration.Configuration.CalibrationToolsSection,sec" />
</configSections>
<CalibrationToolsSection>
<!-- This section contains the calibration tools' loading-enabling options, and versioning parameters as follows:
toolname - the calibration tool name as returned by GetName() in ICalibrationPlugin (for static tool) or as appears in the records (for auto-gen tool)
isvisible - if set to "false" the tool will not be loaded. Deafult value: true
version - if set to "false" the tool will not be loaded. Deafult value: true /-->
<!--IpuToolCalibration-->
<IpuToolCalibrations>
<add ipu="p1">
<CalibrationToolsLoadingSettings>
<add toolname="AE" version="1" isvisible="false"/>
<add toolname="AE2" version="1" isvisible="true"/>
</CalibrationToolsLoadingSettings>
</add>
<add ipu="p2">
<CalibrationToolsLoadingSettings>
<add toolname="AE" version="1" isvisible="false"/>
<add toolname="AE2" version="1" isvisible="true"/>
</CalibrationToolsLoadingSettings>
</add>
<add ipu="p3">
<CalibrationToolsLoadingSettings>
<add toolname="AE" version="1" isvisible="false"/>
<add toolname="AE2" version="1" isvisible="true"/>
</CalibrationToolsLoadingSettings>
</add>
<add ipu="p4">
<CalibrationToolsLoadingSettings>
<add toolname="AE" version="1" isvisible="false"/>
<add toolname="AE2" version="1" isvisible="true"/>
</CalibrationToolsLoadingSettings>
<PalAteConnectivitySettings>
<add pal-uuid="1111" connect-ate="true" name="p4_wb" />
<add pal-uuid="2222" connect-ate="true" name="p4_lsc" />
<add pal-uuid="3333" connect-ate="true" name="p4_blc" />
<add pal-uuid="4343" connect-ate="true" name="p4_disparity" />
<add pal-uuid="9999" connect-ate="true" name="p4_gridbaseob" />
</PalAteConnectivitySettings>
</add>
<add ipu="p5">
<CalibrationToolsLoadingSettings>
<add toolname="ACMCmc" version="1" isvisible="true"/>
<add toolname="ACM3A" version="1" isvisible="true"/>
<add toolname="AE" version="1" isvisible="false"/>
<add toolname="AE2" version="1" isvisible="true"/>
<add toolname="llolo" version="1" isvisible="true" />
<add toolname="lalla" version="1" isvisible="true" />
</CalibrationToolsLoadingSettings>
<PalAteConnectivitySettings>
<add pal-uuid="32398" connect-ate="true" name="p5_wb" />
<add pal-uuid="53711" connect-ate="true" name="p5_lsc" />
<add pal-uuid="40661" connect-ate="true" name="p5_blc" />
<add pal-uuid="55093" connect-ate="true" name="p5_disparity" />
<add pal-uuid="46517" connect-ate="true" name="p5_gridbaseob" />
</PalAteConnectivitySettings>
</IpuToolCalibrations>
</CalibrationToolsSection>
<appSettings>
<add key="DisableCalibrationCheck" value="false" />
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
Я видел, что вы можете динамически создавать коллекции, например
ConfigurationManager.AppSettings["mykey"] = "myvalue";
прямо сейчас я использую такие классы, используя System.Configuration;
namespace Manager.Calibration.Configuration
{
public class CalibrationToolsSection : ConfigurationSection
{
public static readonly string CALIBRATION_SECTION_NAME = "CalibrationToolsSection";
[ConfigurationProperty("IpuToolCalibrations")]
public IpuToolCalibrationCollection IpuToolCalibrations
{
get
{
return ((IpuToolCalibrationCollection)this["IpuToolCalibrations"]);
}
set
{
this["IpuToolCalibrations"] = value;
}
}
}
}
а также
public class IpuToolCalibrationCollection : ConfigurationElementCollection
{
public IpuToolCalibration this[int index]
{
get { return base.BaseGet(index) as IpuToolCalibration; }
set
{
if (base.BaseGet(index) != null)
{
base.BaseRemoveAt(index);
}
this.BaseAdd(index, value);
}
}
protected override ConfigurationElement CreateNewElement()
{
return new IpuToolCalibration();
}
protected override object GetElementKey(ConfigurationElement element)
{
return ((IpuToolCalibration)element).Ipu;
}
}
и так далее
public class IpuToolCalibration : ConfigurationElement
{
public static readonly string IPU_TOOL_CALIBRATION_SECTION_NAME = "IpuToolCalibration";
[ConfigurationProperty("ipu", IsRequired = true)]
public string Ipu
{
get { return (string)this["ipu"]; }
set { this["ipu"] = value; }
}
[ConfigurationProperty("CalibrationToolsLoadingSettings")]
public ToolSettingElementCollection ToolsLoadingSettingsCollection
{
get
{
return ((ToolSettingElementCollection)this["CalibrationToolsLoadingSettings"]);
}
set
{
this["CalibrationToolsLoadingSettings"] = value;
}
}
[ConfigurationProperty("PalAteConnectivitySettings")]
public FilterAteConnectivityElementCollection PalAteConnectivityCollection
{
get
{
return ((FilterAteConnectivityElementCollection)this["PalAteConnectivitySettings"]);
}
set
{
this["PalAteConnectivitySettings"] = value;
}
}
}
}
Может ли кто-нибудь объяснить, как я могу создать их из кода, так как все они являются статическими классами без конструкторов, как я могу их высмеять, я использую NSubstitute. если, например, я хочу загрузить часть плагинов, а не все из них?
c# unit-testing
Не Изменять Версию Сборки Для Dll Проблемы В Wp7?
У меня есть проект для одной dll, который я использую в игре wp7. После изменения кода dll и переопределения исходной dll из игры у него были некоторые проблемы с запуском. Или запускался эмулятор, и программа сразу же выходила или использовала еще старую dll. Удаление ссылки, чтобы добавить ее снова, восстановление проекта или его удаление из эмулятора не всегда помогало. Что сработало, так это изменение AssemblyVersion в проекте dll.
Мой вопрос теперь, если я изменю dll и забуду отрегулировать AssemblyVersion, это может привести к проблемам при публикации? Есть ли совместное использование WP7 DLL файлов между различными приложениями/играми или после переустановки приложения/игры?
.net dll windows-phone-7
Как Вычислить 3d-Центр?
Есть ли даже такая вещь, как 3D-центр? Позвольте мне быть совершенно ясным: я читал и читал о центроидах последние 2 дня как на этом сайте, так и в Интернете, поэтому я прекрасно разбираюсь в существующих сообщениях по этой теме, включая Wikipedia.
Итак, позвольте мне объяснить, что я пытаюсь сделать. В принципе, я хочу взять ряд ребер и/или вершин, но НЕ лица. Затем я хочу поместить объект в положение 3D-центра тяжести.
Я расскажу вам, чего я не хочу:
- Средние вершины, которые будут слишком далеко перемещаться в любом направлении с более высокой детализацией сетки.
- Центр ограничивающей рамки, потому что у меня уже есть что-то, работающее для этого сценария.
Я открыт для предложений о центре масс, но я не вижу, как это будет работать, потому что вершины или ребра сами по себе не определяют какую-либо массу, особенно когда у меня только выбран край.
Для пинок я покажу вам PyMEL, с которым я работал, используя @Emile code в качестве ссылки, но я не думаю, что он работает так, как должен:
from pymel.core import ls, spaceLocator
from pymel.core.datatypes import Vector
from pymel.core.nodetypes import NurbsCurve
def get_centroid(node):
if not isinstance(node, NurbsCurve):
raise TypeError("Requires NurbsCurve.")
centroid = Vector(0, 0, 0)
signed_area = 0.0
cvs = node.getCVs(space='world')
v0 = cvs[len(cvs) - 1]
for i, cv in enumerate(cvs[:-1]):
v1 = cv
a = v0.x * v1.y - v1.x * v0.y
signed_area += a
centroid += sum([v0, v1]) * a
v0 = v1
signed_area *= 0.5
centroid /= 6 * signed_area
return centroid
texas = ls(selection=True)[0]
centroid = get_centroid(texas)
print(centroid)
spaceLocator(position=centroid)
python average maya

