Писать внутри класса A метод getInstance, то есть делать синглтон, как в чистом пхп, не хочется, т.к мне кажется, что yii2 уже должен иметь способ создать объект одиночку.
Токен - это ключ, с помощью которого можно получить доступ к ресурсу. Правильно?
У меня заказ на сервис, к которому нужно иметь доступ через api. Как реализовать токен?
Я считаю, что токен это аналог куки сессии. Правильно? Если правильно, то могу ли я использовать этот факт в своем приложении. Разница будет лишь в том, что значения кука (то есть уже токена) буду передавать в отдельном заголовке.
Есть вариант хранить токены в базе данных, но нужно будет запускать крон, на удаления устаревших токенов. Плюс ко всему скорость доступа к базе данных ниже чем к memcache или redis (правдe пишу?).
Если бы это был просто сайт, то можно было бы хранить в сессии, а так я разрабатываю api. Соответственно нету куков, к которой привязать сессию.
Как быть? я склоняюсь к тому, чтобы хранить в redis. Плюсы, минусы?
Речь идет не о пакетах подключаемых через import, а о полноценных программных модулях. Например под апач есть много модулей.
Хочу чтобы приложения состояло с модулей, каждый с которых можно включить или отключить. Грубо говоря, есть ядро и вокруг него крутятся модули.
Как такое реализовать в питоне? Можно пример? Как модули отразятся на перформенсе?
#python
def callback(data):
print(data)
cpplib.function(callback)
#c++
void function(py_callback) {
for(int i = 0; i <= 1000; ++i) {
if (i % 5 == 0) py_callback(i);
}
}
cpplib - это обертка над питоновским сtypes.
Как видно из питона вызывается функция из С библиотеки, которая при возникновении определенного события вызывает функцию, переданную в ей в качестве аргумента.
Перед тем как задавать вопрос я погуглил и нарыл, что реально вызвать python функцию из С. Правда ничего не написано о моем варианте. Конечно, я могу попытаться накрутить в С коде кучу враперов для пайтона, но С код представляет собой библиотеку, которую хотелось бы использовать не только в пайтоне, а в любом другом языке.
Чтобы разобрать аргументы использую getopt_long.
Первый параметр (param) обязательный и его я получаю без getopt_long. Следующие уже через ее.
Но эта функция начинает парсить аргументы начиная с program, чего мене не нужно.
В качестве решения можно создавать дополнительный массив, перекопировав в его нужные аргументы.
Существует ли способ обойтись без массива, сказав функции начинать работать после второго индекса?
Все исходники лежать в папке sourses, которая не есть подпроектом, модулем и т.д. Просто все лежит в папке sourses.
Как правильно избежать повторений sourses/ в add_executable?
class Container_2 {
std::string key,
std::map<std::string, int> value
}
class Container {
//хранить в себе много данных типа Container_2
}
Собственно, что лучше использовать для хранения Container_2 *: list, vector, std::array, простой массив Container_2 *? Последний вариант конечно лучше в плане доступа до элементов.
Но чтобы добавить элемент в массив типа Container_2 * нужно создать новый массив размером на 1 больше и перекопировать в него все с первого массива, удалив затем начальный массив. Можно ли переместить элементы через &&? Пример?