当我使用缩放图像时
$result->scaleImage($result->getImageWidth()*1.1, $result->getImageHeight() * 1.1);
有图片和公司。每个公司可以有很多图片。它看起来像是一对多的关系。
但是,有时对公司没有约束力。
使用数据透视表实现链接以链接到 image_id、company_id 上的主键是否有意义?或者仅将 null 分配给 images 表中的 company_id 字段就足够了吗?
添加。问题 - 阅读什么以免出现此类问题?
有一个 js 脚本可以连接到不同的站点并向我的 API 发出请求。
我将知道这些域的内容,并且我需要在后端允许仅接受来自它们的请求。
我找到了一个解决方案 - 检查请求的 Origin 标头。问题是这个解决方案有多可靠?
码头工人-compose.yml
version: '3'
services:
web:
build: .
ports:
- 80:80
volumes:
- ./:/var/www/html
Dockerfile
FROM php:7.2-apache
# Set public directory as root for Apache
ENV APACHE_DOCUMENT_ROOT=/var/www/html/public
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
WORKDIR /var/www/html
RUN apt-get update \
&& apt-get install -y git \
&& curl --silent --show-error https://getcomposer.org/installer | php \
&& php composer.phar install
Composer 在安装依赖项时抛出错误
错误:服务 'web' 无法构建:命令 '/bin/sh -c apt-get update && apt-get install -y git && curl --silent --show-error https://getcomposer.org/installer | php && php composer.phar install' 返回一个非零代码:1
同时,如果你直接进入容器并通过composer安装,那么一切正常。
我在项目中使用https://github.com/mpociot/laravel-apidoc-generator 来创建文档。
出现了几个问题。
不显示请求参数中数组元素的验证规则,即
'array.*.item' => 'required|bool'
不显示字段的自定义规则,尽管该方法
__toString
在规则本身中进行了描述。
关于第一个问题 - 在这个文件中,该方法getParameters
接收来自验证器的参数,但除了数组元素的规则之外的所有内容。
如何强制验证器返回为路由描述的所有规则?
try{
1/0;
}catch (\DivisionByZeroError $error){
echo $error->getMessage();
}
从理论上讲,catch 应该有效,但由于某种原因它会输出
警告:在第 4 行的 C:\path\index.php 中被零除
您需要什么:用于为您的项目轻松创建容器的 linux 环境。我想尽可能简单地做到这一点。
现在只要下载安装程序就可以了(我有Win 10),不需要使用docker工具箱吗?
有几个问题(可能有点老生常谈):由于工作是在 Windows 上进行的,因此您需要一个 linux 系统,在该系统上已经安装了所有必要的应用程序 - php、mysql、nginx 等。所有这些优点都被打包到一个图像中,容器将进一步引用该图像。如有不妥,请指正。
某处是否有现成的配置,还是所有东西都需要从头开始安装?
int main(void)
{
double arr[3][2];
double ** arrP = set(arr);
return 0;
}
double** set(double array[][2]){
for(int i = 0; i < 3; i++){
array[i][0] = (2.5 + pow(2 + i, 2));
array[i][1] = 2.5 + 3 - i;
}
return array;
}
任务是将一个数组传递给一个函数,填充它,然后返回一个指向数组的指针。返回时出现错误:
从不兼容的指针类型返回
但是二维数组是数组的数组;因此它的类型将是double **
?
您需要string
始终存储 300 个字符。
据我了解,内存是在分配时动态分配的,例如:
string ex = "Example";
我需要明确地为每个字符分配一个值,
ex.at(100) = '2';
但是执行代码的时候会报错,因为 没有分配内存,是否可以像在字符数组中那样明确指定字符串的大小?
这个选项不是很
for(int i=0;i<300;i++)
ex += " ";
class BigInt
{
private:
static const int max_length = 300;
int c;
int number[max_length];
int to_int(char symbol)
{
return (symbol >= '0' && symbol <= '9') ? (int)symbol - '0' : -1;
}
public:
BigInt(char* str)
{
c = strlen(str) - 1;
int pos = 0;
if (c > max_length)
{
cout << "Max length is " << max_length << "but your number has length"
<< c << endl;
return;
}
for (int i = c; i <= 0; i--)
{
number[pos] = to_int(str[i]);
pos++;
}
}
void printNumber(void)
{
for (int i = c; i >= 0; i--)
{
cout << number[i];
}
cout << "\n";
}
};
有一个构造函数接受一个字符串数字,其数字被写入数字数组。输出这个数组时,出于某种原因我得到了随机值。
int main(void)
{
char str[]="111111111";
BigInt test(str);
test.printNumber();
return 0;
}
任务:创建类——双向链表,创建构造函数、析构函数。使用列表的方法:添加、删除元素、排序列表、在其中搜索。
我勾勒了一个小类结构,我对C ++几乎不熟悉,也许有更正确的实现方式。
直接在构造函数中输入数据是否正确?或者您是否需要为此创建一个私有方法并调用它?
struct tList
{
int key;
tList * prev;
tList * next;
};
class List
{
private:
tList * beginList;
tList * endList;
tList* getElement(void){
//выделение памяти
//заполнение данных в структуре
}
public:
List(){
//ввод данных в список
//вызов addElement
}
void addElementEnd(){
//вызов getElement
//добавление элемента в конец списка
}
void addElementBegin(){
//вызов getElement
//добавление элемента в начало списка
}
void deleteElement(tList * element){
// удаление элемента
}
void sortAsc(){
// по возростанию
}
void sortDesc(){
// по убыванию
}
tList* searchElement(int key){
//поиск элемента
}
void printList(){
//печать списка
}
~List(){
//освобождение памяти
}
};
我想获得该组的禁止用户。但它会引发错误
{"error":{"error_code":15,"error_msg":"Access denied: no access to call this method","request_params":[{"key":"oauth","value":"1"},{"key":"method","value":"groups.getBanned"},{"key":"group_id","value":"ХХХХХХХ"},{"key":"v","value":"5.62"}]}}
我有组管理员权限,在安装过程中我要求访问组:
"https://oauth.vk.com/authorize?client_id=".APP_ID."&display=page&redirect_uri=".REDIRECT_URI."&scope=groups&revoke=1&response_type=code&v=".V
该应用程序还表示要求访问群组。
令牌有效。本地主机上的网站。
account.getAppPermissions
返回位掩码 262144 - 访问用户组。
我使用编辑广告的方法。
作为回应,我收到以下错误:
["error_code"]=>100
["error_msg"]=>"One of the parameters specified was missing or invalid: data[data][ad_id] is invalid"
数据数组本身:
string(185) "{"data":{"0":{"ad_id":"15142751","cpc":4.4},"1":{"ad_id":"15142643","cpc":4.4},"2":{"ad_id":"15210287","cpc":4.4},"3":{"ad_id":"15210280","cpc":4.4},"4":{"ad_id":"15210269","cpc":4.4}}}"
广告 ID 是正确的,很可能我正在神经形成一个对象数组。
$data = json_encode(array('data' => $data), JSON_FORCE_OBJECT);
有错误的完整响应:
array(1) {
["error"]=>
array(3) {
["error_code"]=>
int(100)
["error_msg"]=>
string(84) "One of the parameters specified was missing or invalid: data[data][ad_id] is invalid"
["request_params"]=>
array(5) {
[0]=>
array(2) {
["key"]=>
string(5) "oauth"
["value"]=>
string(1) "1"
}
[1]=>
array(2) {
["key"]=>
string(6) "method"
["value"]=>
string(13) "ads.updateAds"
}
[2]=>
array(2) {
["key"]=>
string(10) "account_id"
["value"]=>
string(10) "xxxxxxxxxx"
}
[3]=>
array(2) {
["key"]=>
string(4) "data"
["value"]=>
string(151) "{"data":[{"ad_id":22981362,"cpc":4.4},{"ad_id":22975854,"cpc":4.4},{"ad_id":22721708,"cpc":4.4},{"ad_id":26690417,"cpc":0},{"ad_id":22690359,"cpc":0}]}"
}
[4]=>
array(2) {
["key"]=>
string(1) "v"
["value"]=>
string(4) "5.62"
}
}
}
}
有几个复选框,您需要根据状态更改它们的状态radiobutton
:
<label><input value="0" id="time_0" type="checkbox">0</label>
<label><input value="1" id="time_1" type="checkbox">1</label>
<label><input value="2" id="time_2" type="checkbox">2</label>
<label><input value="3" id="time_3" type="checkbox">3</label>
<input id="day" value="Пн" checked="" name="day" type="radio">Пн
<input id="day" value="Вт" name="day" type="radio">Вт
<input id="day" value="Ср" name="day" type="radio">Ср
从数据库中获取一个带有复选框状态的数组。
处理程序:
$('input[name=day]').change(function() {
$.ajax({
dataType: "json",
type: "POST",
url: "time.php",
data: {
get: "",
user: $('#user').val(),
day: $('input[name=day]:checked').val(),
}
success: function(html){
alert(html);
}
});
});
在文件中time.php
输出一个 json 数组。但是当你点击radiobutton
它时,什么也没有发生。
树元素:
typedef struct tree{
char * word;
struct tree *left,*right;
}TREE;
#define NL 7
您需要移除所有长度为的word >= NL
元素 一个元素移除函数:
#define NoSubTree 0
#define LeftSubTree -1
#define RightSubTree 1
#define TwoSubTrees 2
void deleteNode(char* word, TREE** his_root)
{
TREE* proot = *his_root, * new_root, *ppar;
int cmp, substr, word_l, root_l;
if (proot == NULL)
{
return;
}
cmp = strcmp(proot->word, word);
word_l = strlen(word);
root_l = strlen(proot->word);
if (cmp == 0)
{
if (proot->left == NULL && proot->right == NULL)
{
substr = NoSubTree;
}
else if (proot->right == NULL)
{
substr = LeftSubTree;
}
else if (proot->left == NULL)
{
substr = RightSubTree;
}
else
{
substr = TwoSubTrees;
}
switch (substr)
{
case NoSubTree:
*his_root = NULL;
break;
case LeftSubTree:
*his_root = proot->left;
break;
case RightSubTree:
*his_root = proot->right;
break;
case TwoSubTrees:
new_root = proot->left;
ppar = proot;
while (new_root->right != NULL)
{
ppar = new_root;
new_root = new_root->right;
}
new_root->right = proot->right; // присоединяем правое поддерево
if (new_root != proot->left) //если не вершина левого поддерева
{
ppar->right = new_root->left;
new_root->left = proot->left; // присоединяем левое поддерево
}
*his_root = new_root;//замена корня
freeNode(proot);
return;
}
}
if (root_l > word_l || (cmp > 0 && root_l == word_l))
{
deleteNode(word, &proot->left);
}
if (word_l > root_l || (cmp < 0 && root_l == word_l))
{
deleteNode(word, &proot->right);
}
}
遍历树并寻找匹配的单词(root
是指向根的全局指针)。
void search_words(TREE* proot)
{
if (proot == NULL)
{
return;
}
search_words(proot->right);
if (strlen(proot->word) >= NL)
{
deleteNode(proot->word, &root);
}
search_words(proot->right);
}
删除 1 个元素有效,据我所知,问题在于搜索单词。
有这么一个函数,参数是行数,和行后。
void up_strings(int count, unsigned char string[150], ... ){
int i;
unsigned char * str;
va_list other_strings;
va_start (other_strings,string);
for ( i = 0; i < count; i++ ){
str = va_arg( other_strings,unsigned char* );
printf("%s",str);
}
va_end(other_strings);
}
unsigned char str[]="adag asd";
up_strings(1 ,str);
程序在这一行崩溃
str = va_arg( other_strings,unsigned char* );
我有一个动态指针数组
char ** pointer = (char **) calloc(count,sizeof(char*));
在线上。您需要从中删除元素,即 实际上释放给定指针指向的内存,然后赋值给指针NULL
0x0
问题是之后,在输出数据的时候,显示的是“left”数据,虽然理论上这个指针的地址应该是0х0
void delete_elem(char ** p){
char ** p_str = p;
free(*p_str);
p=NULL;
}