我第一次在 OSX Yosemite 上尝试 Vagrant,并使用 LAMP 堆栈从http://rove.io下载了 Vagrantfile/Cheffile 。
\n\n他们来了:
\n\n厨师文件
\n\n# encoding: utf-8\n\nsite \'http://community.opscode.com/api/v1\'\n\ncookbook "apt"\ncookbook "mysql", {}\ncookbook "nodejs", {:github=>"mdxp/nodejs-cookbook"}\ncookbook "python", {}\ncookbook "git", {}\ncookbook "php", {}\ncookbook "nginx", {}\nRun Code Online (Sandbox Code Playgroud)\n\n流浪者文件
\n\n# encoding: utf-8\n# This file originally created at http://rove.io/36f03d7ed905b30118b48bfe3d16ee07\n\n# -*- mode: ruby -*-\n# vi: set ft=ruby :\n\nVagrant.configure("2") do |config|\n\n config.vm.box = "opscode-ubuntu-12.04_chef-11.4.0"\n config.vm.box_url = "https://opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_ubuntu-12.04_chef-11.4.0.box"\n config.ssh.forward_agent = true\n\n config.vm.network :forwarded_port, guest: 80, host: 8080\n\n config.vm.provision :chef_solo do |chef|\n chef.cookbooks_path = ["cookbooks"]\n chef.add_recipe :apt\n chef.add_recipe …Run Code Online (Sandbox Code Playgroud) 我正在学习反应原生,现在我因为这个错误而被困在州课上:
_this2.setState is not a function.
Run Code Online (Sandbox Code Playgroud)
这是当前的代码块.
...
export default class StopWatch extends Component {
constructor(props){
super(props);
this.state = {
timeElapsed: null
}
}
handleStartStopClick(){
var startTime = new Date();
setInterval(() => {
this.setState(previousState => {
return {timeElapsed:new Date() - startTime};
});
}, 100);
}
...
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我正在尝试查看 Laravel Queue 的工作情况,但遇到了一些问题。
所以我添加了一个 testJob
protected function schedule(Schedule $schedule)
{
$schedule->job(new TestJob)->everyMinute();
}
Run Code Online (Sandbox Code Playgroud)
工作类没有任何作用,只是一个测试
class TestJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public function __construct()
{
//
}
public function handle()
{
//
}
}
Run Code Online (Sandbox Code Playgroud)
正如文档所说,将 cron 添加到服务器
* * * * * cd /home/ec2-user/myproject-prod && php artisan schedule:run >> /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)
最后,添加了主管工人
[program:myproject-queue]
process_name=%(program_name)s_%(process_num)02d
command=php /home/ec2-user/myproject-prod/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=ec2-user
numprocs=1
redirect_stderr=true
stdout_logfile=/home/ec2-user/supervisor-myproject-prod.log
Run Code Online (Sandbox Code Playgroud)
因此,正如下面的日志所示,在同一秒您可以看到同一个作业运行多次。
有时相同的作业运行一次(正确),很多时候它运行两次,有几次它运行 4 次。
[2019-11-14 08:25:02][5537] Processing: App\Jobs\TestJob
[2019-11-14 08:25:02][5537] Processed: …Run Code Online (Sandbox Code Playgroud) 我目前在选项卡中有一条子路线:
/mytab
/mytab/subpage
Run Code Online (Sandbox Code Playgroud)
因此,当我在子页面中时,单击另一个选项卡并返回,我将看到之前所在的子页面(默认行为)。
我想让它在单击选项卡按钮时始终显示根页面(而不是子页面) 。
我尝试将按钮参数更改tab='mytab'为href='/mytab'- 它有效,但每次单击时都会导致页面刷新。
<ion-tab-button href="/tabs/mytab">
<ion-icon name="ios-list"></ion-icon>
<ion-label>mytab</ion-label>
</ion-tab-button>
Run Code Online (Sandbox Code Playgroud)
还有其他方法可以达到这个目的吗?
我正在尝试创建一个 /status 以与 newrelic 一起使用,但它总是返回 404。
$ curl 127.0.0.1/status
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.17.1</center>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这是我的 nginx conf 文件(它也使用 certbot)。
server {
server_name mysite.com api.mysite.com painel.mysite.com;
location / {
root /var/www/mysite-prod/public;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.(php|phar)(/.*)?$ {
root /var/www/mysite-prod/public;
fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$;
fastcgi_intercept_errors on;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php-fpm;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mysite.com/fullchain.pem; # managed by …Run Code Online (Sandbox Code Playgroud) 我正在使用 Laravel 5.6 和这个中间件来允许 Ionic 应用程序调用我的 API
<?php
namespace App\Http\Middleware;
use Closure;
class Cors
{
public function handle($request, Closure $next)
{
return $next($request)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE, OPTIONS')
->header('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-Requested-With, X-XSRF-TOKEN');
}
}
Run Code Online (Sandbox Code Playgroud)
因此,这会导致我强制下载文件的两个请求出现错误。
Call to undefined method Symfony\Component\HttpFoundation\BinaryFileResponse::header()
Run Code Online (Sandbox Code Playgroud)
我的要求1
return Excel::download(new \App\Exports\FleetExport($fleetId), 'debts.xlsx');
Run Code Online (Sandbox Code Playgroud)
我的要求2
return \Response::download($file_path,
$file_name,
array('Content-Type: application/octet-stream','Content-Length: '. filesize($file_path))
)->deleteFileAfterSend(true);
Run Code Online (Sandbox Code Playgroud)
禁用这个中间件可以使我的请求正常工作。
难道我做错了什么?
这两天我试图发布我的 Android 版 React Native 应用程序,但遇到了以下错误:
> Task :react-native-device-info:compileReleaseJavaWithJavac FAILED
/Users/myuser/project/node_modules/react-native-device-info/android/src/main/java/com/learnium/RNDeviceInfo/RNDeviceModule.java:368: error: cannot find symbol
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
^
symbol: variable P
location: class VERSION_CODES
/Users/myuser/project/node_modules/react-native-device-info/android/src/main/java/com/learnium/RNDeviceInfo/RNDeviceModule.java:370: error: cannot find symbol
locationEnabled = mLocationManager.isLocationEnabled();
^
symbol: method isLocationEnabled()
location: variable mLocationManager of type LocationManager
Note: /Users/myuser/project/node_modules/react-native-device-info/android/src/main/java/com/learnium/RNDeviceInfo/RNDeviceModule.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
2 errors
FAILURE: Build failed with an exception.
Run Code Online (Sandbox Code Playgroud)
我的project/android/build.gradle文件是:
buildscript {
ext {
buildToolsVersion = "27.0.3"
minSdkVersion = 23 …Run Code Online (Sandbox Code Playgroud) 我使用此代码来查找元素并获取其文本:
// helper method to find elements
async function findElementByText(page, tag, searchValue, conditionType) {
const items = await page.$$(tag)
for (var i = 0; i < items.length; i++) {
let valueHandle = await items[i].getProperty('innerText');
let itemText = await valueHandle.jsonValue();
const text = getItemText(itemText);
if(conditionType == 'contains'){
if (text.indexOf(searchValue) !== -1) return items[i]
}else if(conditionType == 'equals'){
if (searchValue == text) return items[i]
}
}
return false;
}
// find an element using helper
let searchResult = await findElementByText(parent, 'span', 'R$', …Run Code Online (Sandbox Code Playgroud) 我已经在我的 Ionic 4 应用程序中实现了 FireBaseX 来发送远程通知。
this.platform.ready().then(() => {
let platforms = this.platform.platforms();
if(platforms.includes('ios') || platforms.includes('android') || platforms.includes('mobile')){
this.firebase.getToken().then(token => {
console.log(`FIREBASE TOKEN ${token}`);
if(platforms.includes('ios')) this.firebase.grantPermission();
});
this.firebase.onMessageReceived().subscribe(data => {
console.log('FIREBASE MESSAGE', data);
});
}
});
Run Code Online (Sandbox Code Playgroud)
因此,当我在 iOS 中打开该应用程序时,它会正确请求权限。
然后我发送测试消息并且 console.log() 正确显示。
2020-02-05 17:35:38.282123-0300 Parkaz[86464:2354851] didReceiveMessage: {
"collapse_key" = "com.myapp.app";
from = 678323471xxxx;
notification = {
body = teste;
e = 1;
tag = "campaign_collapse_key_5659280550157990837";
title = teste;
};
}
Run Code Online (Sandbox Code Playgroud)
但是,如果未打开该应用程序,则什么也不会发生。通知横幅没有出现,没有徽章,没有声音......没有......
难道我做错了什么?
我需要在用户第一次访问该页面时向他显示欢迎模式。
这段代码工作正常:
if(this.app_data) {
if(this.app_data['company']){
if(this.app_data['company']['welcomed'] === false){
this.openWelcomeModal();
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是检查嵌套变量结构的混乱代码。
明确的方法是使用一行,如下所示:
if(this.app_data['company']['welcomed'] === false){
this.openWelcomeModal();
}
Run Code Online (Sandbox Code Playgroud)
但这会产生错误:
Run Code Online (Sandbox Code Playgroud)if(this.app_data) { if(this.app_data['company']){ if(this.app_data['company']['welcomed'] === false){ this.openWelcomeModal(); } } }
有没有办法在一行中完成它,而不需要检查嵌套对象的每一层?
我尝试运行 phpunit 并收到此错误:
PHP Fatal error: Declaration of Illuminate\Foundation\Testing\TestCase::setUp() must be compatible with PHPUnit\Framework\TestCase::setUp(): void in /Users/xxx/dev/xxx/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php on line 65
Run Code Online (Sandbox Code Playgroud)
所以我找到了解决方案:在测试中添加:void和setUp()方法tearDown。
所以我改变了laravel里面的文件:vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php
public function setUp():void
{
parent::setUp();
}
public function tearDown():void
{
parent::tearDown();
}
Run Code Online (Sandbox Code Playgroud)
它有效,但重点是我正在修改vendor目录内的一个文件,并且它可能会被作曲家命令覆盖。
如何应用此解决方案而不修改vendor目录内的文件?
我的composer.json 文件
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"php": ">=7.2",
"aloha/twilio": "^4.0",
"aws/aws-sdk-php": "^3.154",
"bensampo/laravel-enum": "^1.11",
"crockett/csv-seeder": "^1.1",
"cviebrock/eloquent-sluggable": "^4.5",
"fideloper/proxy": "^4.0",
"guzzlehttp/guzzle": …Run Code Online (Sandbox Code Playgroud) 我需要阻止用户从上午 9 点到下午 6 点访问某些页面。
那么,实现这一目标的最佳方法是什么?我应该创建一个中间件吗?还是内核条件?或者向控制器添加条件?