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;
    }
}

Подробнее (4 ответа)

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

Тем не менее, строка состояния черная.

Любая дальнейшая идея, что я мог попробовать?

Подробнее (2 ответа)

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:

enter image description here

Почему это не спрашивает меня о параметрах, объявленных в определении моей функции?

EDIT 1 Ориентировочное решение:

let userInterfaceVariables = UserInterfaceVariables()
applyCustomAnimation(view: ..., .....)

Подробнее (2 ответа)

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();
			  }
			  
			}
	
		});

Подробнее (1 ответ)

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,,,,,,,,,,,,

Подробнее (1 ответ)

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"}}}]}}]}}}

Подробнее (1 ответ)

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;
   }
}

введите описание изображения здесь

Подробнее (2 ответа)

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-адреса не подтверждают, что приложение не работает.

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

Подробнее (1 ответ)

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

Подробнее (4 ответа)

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: "Отсутствующие учетные данные" Прото:

Может ли кто-нибудь указать мне в правильном направлении?

Подробнее (1 ответ)

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: требуется нескалярные аргументы для соответствия по размеру.)

Заранее спасибо!

Подробнее (1 ответ)

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(); без ветвления. Тем не менее, я не получаю никаких значений. Заранее спасибо.

Подробнее (1 ответ)

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

Так что горутин никогда не выходит. Есть ли лучший способ справиться с этим делом? Должен ли я беспокоиться, что горутин никогда не выходил?

Подробнее (4 ответа)

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...")
}

Подробнее (1 ответ)

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 версия не работает.

Подробнее (2 ответа)

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 без потери идентификатора страницы? Мне не нужны все данные из редактирования, будет проверка на стороне клиента, чтобы, надеюсь, подобрать какие-либо ошибки, но я бы хотел, чтобы ошибки проверки на стороне сервера заставили пользователя приземлиться на той же странице объекта, что и они.

Подробнее (1 ответ)

node.js pug express

Не Удалось Переделать 2-Мерный Массив.

У меня был массив размером 2 (от 1 до 406, от 1 до 8)

когда я пытаюсь переделать и сохранить ценность

 ReDim Preserve arr(1 To UBound(arr()) + 1, 1 To 8)

он выскакивает ошибка Подстрочный вне диапазона, что на самом деле Im делает неправильно?

Подробнее (1 ответ)

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-индексирования и запросов в программе брокера. Я предпочел бы переместить эту работу в базу данных.

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

Подробнее (2 ответа)

postgresql

Css-Классы Шрифтов Не Работают

Это, вероятно, что-то ОЧЕНЬ неловкое; однако это некоторое время подтачивало меня.

В приведенном ниже примере, почему размеры шрифта не применяются к тексту?

.1px {
  font-size: 1px;
}
.100px {
  font-size: 100px;
}
<p class="1px"> Hello, world. </p>
<p class="100px"> Hello, world. </p>

Нет, я не использую bootstrap, не говоря уже о том, что любой плагин перезаписывает размер шрифта.

EDIT: Спасибо за ответы, я назвал это будет неловко.

Подробнее (4 ответа)

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;
        }
    }
}

Пожалуйста, извините мое страшное понимание этого материала в Интернете. Мне нужно это изучить, но мне также нужно сделать эту небольшую работу, прежде чем я смогу сесть и изучить все эти хорошие вещи. Я слишком долго укоренился в мире С#/С++.

Подробнее (2 ответа)

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? Если да, как мне следует это реализовать.

Подробнее (2 ответа)

qt qhash

Flexmojos 4.2-Beta Mergeresourcebundle

Что нового в Flexmojos 3.8

<mergeResourceBundle>true</mergeResourceBundle>

Подробнее (1 ответ)

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. если, например, я хочу загрузить часть плагинов, а не все из них?

Подробнее (1 ответ)

c# unit-testing

Не Изменять Версию Сборки Для Dll Проблемы В Wp7?

У меня есть проект для одной dll, который я использую в игре wp7. После изменения кода dll и переопределения исходной dll из игры у него были некоторые проблемы с запуском. Или запускался эмулятор, и программа сразу же выходила или использовала еще старую dll. Удаление ссылки, чтобы добавить ее снова, восстановление проекта или его удаление из эмулятора не всегда помогало. Что сработало, так это изменение AssemblyVersion в проекте dll.

Мой вопрос теперь, если я изменю dll и забуду отрегулировать AssemblyVersion, это может привести к проблемам при публикации? Есть ли совместное использование WP7 DLL файлов между различными приложениями/играми или после переустановки приложения/игры?

Подробнее (1 ответ)

.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)

Подробнее (4 ответа)

python average maya