小编qui*_*tin的帖子

componentDidMount调用BEFORE引用回调

问题

我正在ref使用内联函数定义设置反应

render = () => {
    return (
        <div className="drawer" ref={drawer => this.drawerRef = drawer}>
Run Code Online (Sandbox Code Playgroud)

那么在componentDidMountDOM引用中没有设置

componentDidMount = () => {
    // this.drawerRef is not defined
Run Code Online (Sandbox Code Playgroud)

我的理解是ref应该在mount期间运行回调,但是在ref回调函数之前调用添加console.log语句.componentDidMount

我看过的其他代码示例,例如github上的这个讨论表明了相同的假设,componentDidMount应该在定义的任何回调之后ref调用render,甚至在对话中说明

因此,在执行了所有的ref回调后,componentDidMount被触发了?

是.

我正在使用反应15.4.1

我试过的其他东西

为了验证ref函数被调用,我尝试在类上定义它

setDrawerRef = (drawer) => {
  this.drawerRef = drawer;
}
Run Code Online (Sandbox Code Playgroud)

然后在 render

<div className="drawer" ref={this.setDrawerRef}>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,控制台日志记录显示回调确实在调用之后 componentDidMount

javascript reactjs

71
推荐指数
1
解决办法
2万
查看次数

通过 OAuth2 和 python MSAL 库进行 Office 365 IMAP 身份验证

我正在尝试升级旧版邮件机器人以通过 Oauth2 而不是基本身份验证进行身份验证,因为它现在已在两天后被弃用

该文档指出应用程序可以保留其原始逻辑,同时仅交换身份验证位

使用这些协议构建发送、阅读或以其他方式处理电子邮件的应用程序的应用程序开发人员将能够保留相同的协议,但需要为其用户实现安全、现代的身份验证体验。此功能构建在 Microsoft Identity 平台 v2.0 之上,支持访问 Microsoft 365 电子邮件帐户。

注意我已经明确选择了客户端凭据流程,因为文档指出

这种类型的授权通常用于必须在后台运行的服务器到服务器交互,而不需要立即与用户交互。

因此,我有一个 python 脚本,可以使用MSAL python 库检索访问令牌。现在我尝试使用该访问令牌向 IMAP 服务器进行身份验证。有一些现有的线程展示了如何连接到 Google,我想我的情况与非常接近,只是我正在连接到 Office 365 IMAP 服务器。这是我的脚本

import imaplib
import msal
import logging

app = msal.ConfidentialClientApplication(
    'client-id',
    authority='https://login.microsoftonline.com/tenant-id',
    client_credential='secret-key'
)

result = app.acquire_token_for_client(scopes=['https://graph.microsoft.com/.default'])

def generate_auth_string(user, token):
  return 'user=%s\1auth=Bearer %s\1\1' % (user, token)

# IMAP time!
mailserver = 'outlook.office365.com'
imapport = 993
M = imaplib.IMAP4_SSL(mailserver,imapport)
M.debug = 4
M.authenticate('XOAUTH2', lambda x: generate_auth_string('user@mydomain.com', result['access_token'])) …
Run Code Online (Sandbox Code Playgroud)

python email imap oauth-2.0 office365

21
推荐指数
2
解决办法
2万
查看次数

Doctrine2 - annotations vs yml/xml

Doctrine2中实体描述的注释的正面是什么?

在Doctrine1&Propel(我已经多次使用过)中,对数据库进行逆向工程以创建yml或xml,然后生成模型是一个非常快速的工作流程.

在Doctrine2中,选择注释,必须编写大量的锅炉板代码才能使实体到位.然而,注释似乎是"走的路".

我错过了什么?

php orm doctrine-orm

15
推荐指数
2
解决办法
8278
查看次数

如何在php中接收xml请求并发送响应xml?

所以我需要构建一个接收xml请求的应用程序,基于此我将不得不返回响应xml.我知道如何发送请求并收到响应,但我从来没有这样做过.我会像这样发送请求:

private function sendRequest($requestXML)
{
    $server = 'http://www.something.com/myapp';
    $headers = array(
    "Content-type: text/xml"
    ,"Content-length: ".strlen($requestXML)
    ,"Connection: close"
    );

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $server);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 100);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $requestXML);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    $data = curl_exec($ch);



    if(curl_errno($ch)){
        print curl_error($ch);
        echo "  something went wrong..... try later";
    }else{
        curl_close($ch);
    }

    return $data;

}
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 接收方的代码是什么?我如何捕获传入的请求?谢谢.

php xml api

14
推荐指数
1
解决办法
4万
查看次数

RedHat守护进程功能用法

我正在为RHEL上的Jetty创建一个init脚本.试图使用daemoninit library(/etc/rc.d/init.d/functions)提供的功能.

我找到了这个简洁的文档一个在线示例(我也一直在查看系统上的其他init脚本).

从在线查看此片段以启动守​​护程序

daemon --user="$DAEMON_USER" --pidfile="$PIDFILE" "$DAEMON $DAEMON_ARGS &"
RETVAL=$?
pid=`ps -A | grep $NAME | cut -d" " -f2`
pid=`echo $pid | cut -d" " -f2`
if [ -n "$pid" ]; then
        echo $pid > "$PIDFILE"
fi
Run Code Online (Sandbox Code Playgroud)

为什么要费心查找$PID并手写$PIDFILE?我想我想知道--pidfiledaemon功能选项的重点是什么.

linux bash redhat daemon init

14
推荐指数
1
解决办法
3万
查看次数

cuRL returnin 404错误

我正在使用cuRL从远程服务器获取一些数据...响应是JSON格式..这是我的代码:

$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER , 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_URL, 'http://www.myaddress.com/mypage.php');
curl_setopt($ch, CURLOPT_POSTFIELDS, array("id" => $id));
$return = curl_exec($ch);
curl_close($ch);
Run Code Online (Sandbox Code Playgroud)

如果我在浏览器中访问链接页面加载OK,但如果我通过cuRL访问返回404错误...

php curl http

11
推荐指数
2
解决办法
2万
查看次数

fgetcsv/fputcsv $ escape参数从根本上打破了

概观

fgetcsvfputcsv支持一个$escape参数,然而,它要么被破坏,要么我不理解它应该如何工作.忽略这样一个事实,即您没有看到记录的$escape参数fputcsv,它在PHP源代码中受支持,有一个小错误阻止它在文档中出现.

该函数还支持$delimiter$enclosure参数,分别默认为逗号和双引号.我希望$escape传递参数是为了让一个字段包含任何一个元字符(反斜杠,逗号或双引号),但事实并非如此.(我现在从阅读维基百科了解到,这些都用双引号括起来).

我试过的

例如,fgetcsv文档中评论部分中影响众多海报的陷阱.我们想要在字段中写一个反斜杠的情况.

$r = fopen('/tmp/test.csv', 'w');
fwrite($r, '"\"');
fclose($r);

$r = fopen('/tmp/test.csv', 'r');
var_dump(fgetcsv($r));
fclose($r);
Run Code Online (Sandbox Code Playgroud)

这回来了false.我也尝试过"\\",但是也会回来false.用一些含糊不清的文本填充反斜杠会fgetcsv得到它需要的提升...... "hi\\there"并且"hi\there"解析并得到相同的结果,但结果只有1个反斜杠,那么究竟是什么意思$escape呢?

我没有在双引号中包含反斜杠时观察到相同的行为.编写包含字符串的'CSV'文件\,并\\在解析时得到相同的结果fgetcsv,1反斜杠.

让我们问一下PHP如何将反斜杠编码为CSV中的字段 fputcsv

$r = fopen('/tmp/test.csv', 'w');
fputcsv($r, array('\\'));
fclose($r);
echo file_get_contents('/tmp/test.csv');
Run Code Online (Sandbox Code Playgroud)

结果是一个双引号封闭的单反斜杠(我已经尝试了3个版本的PHP> 5.5.4,当$enclose支持被添加到fputcsv)时.这个的欢闹是fgetcsv根据我上面的笔记甚至无法正确阅读它,它会返回 …

php csv

10
推荐指数
1
解决办法
5331
查看次数

附带php的内置SoapClient?

有没有办法可以使用PHP的内置SoapClient类为请求添加soap附件?看起来它不支持,但也许我可以手动构建mime边界?我知道PEAR SOAP库支持它们,但是为了使用它我必须重写我的整个库来使用它.

php soap attachment

8
推荐指数
1
解决办法
8245
查看次数

无法在Windows上安装XDEBUG?

我的php版本是PHP版本5.3.6.

php.ini中的Xdebug设置:

[Xdebug]

 zend_extension_ts="D:\php\ext\php_xdebug-2.1.2.dll"
xdebug.remote_enable=1

;IP
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.auto_trace = On
xdebug.show_exception_trace = On
xdebug.remote_autostart = On
xdebug.collect_vars = On
xdebug.collect_return = On
xdebug.collect_params = On
Run Code Online (Sandbox Code Playgroud)

我已经安装了PHP 5.3 VC6(32位)/ PHP 5.3 VC9(32位).他们都失败了.

当在cmd上键入"php --ini"时.表明: 在此输入图像描述

php windows xdebug

8
推荐指数
1
解决办法
1万
查看次数

为什么我试图写的文件"不存在"?

我的CI应用程序中有一个自定义配置文件.在我的Web应用程序的管理面板中,我想有一个表单,我可以用它来更改自定义文件的配置数组的值.我现在的问题是write_file函数总是返回false,我不知道为什么.我很确定我正在正确编写函数中的路径,并且config目录不是只读的(这是wamp,所以是windows).该文件肯定存在.我究竟做错了什么?

这是application/controllers/config/assets.php

$file = FCPATH . 'application\config\assets_fe.php';
if(is_writable($file)) {
    $open = fopen($file, 'W');
    if(!fwrite($open, $frontend)){
        echo "Could not write file!";
    } else {
        echo "File written!";
    }
} else {
    echo "File not writable!";
}
Run Code Online (Sandbox Code Playgroud)

这是该文件在Windows资源管理器中的位置的屏幕截图. 配置文件夹

我在write_file函数中尝试了以下文件路径:

write_file(FCPATH.'application/config/assets_fe.php', $frontend, 'W');
write_file('application/config/assets_fe.php', $frontend, 'W');
write_file('./application/config/assets_fe.php', $frontend, 'W');
Run Code Online (Sandbox Code Playgroud)

以上文件路径都没有工作......它可能是别的吗?

仅供参考:FCPATH ='W:\ wamp\www\zeus \',它由CI的前端控制器定义,以返回该文件的路径.

更新:我尝试只使用本机PHP版本,它说文件或目录不存在.也许我正在使用错误的道路.它应该是什么?

php codeigniter file

8
推荐指数
1
解决办法
331
查看次数

标签 统计

php ×7

api ×1

attachment ×1

bash ×1

codeigniter ×1

csv ×1

curl ×1

daemon ×1

doctrine-orm ×1

email ×1

file ×1

http ×1

imap ×1

init ×1

javascript ×1

linux ×1

oauth-2.0 ×1

office365 ×1

orm ×1

python ×1

reactjs ×1

redhat ×1

soap ×1

windows ×1

xdebug ×1

xml ×1