当我单击“开始试用”时,我收到消息“获取 PS / <电子邮件地址> 的许可证时出错:您的试用期已结束。要继续使用 PhpStorm 2024.1,请购买订阅。”,尽管 Jet Brains 帐户刚刚创建,即试用期肯定尚未用完。 Php Storm 2022版本也存在同样的问题。
Pavel Sumarokov's questions
这个问题是关于编写干净代码的原则以及一些关于 IT 道德的问题。是否可以使用该函数从日期时间字符串中获取日期字符串substr
?
$a = '2024-03-29 19:46:00';
// На самом деле значение берется из БД, столбца формата даты-времени
// Т.е. в полученной строке $a кроме даты-времени ничего быть не может
$b = substr($a, 0, 10);
该项目的首席 PHP 开发人员反对说,在任何情况下都不可能这样写,因为 本文并不反映该行动的意图,但提出了以下选择:
$b = date('Y-m-d', strtotime($a));
// Аналогично, date, 'Y-m-d' и strtotime заменяют функции и константы для работы с временем из проекта
此言论是否公平?如果是,有哪些建议规范此准则和其他类似的代码原则?
主机-Windows。在虚拟机-Ubuntu中,Docker容器中有一个PHP项目,适配器是一个网桥,从主机通过IP 192.168.0.104访问。虚拟机中的项目映射到IP 172.16.100.1(端口10443)。使用 JetBrains Gateway,我在主机系统上打开此项目(在远程计算机上安装 PhpStorm)。我配置了一切,这些设置的结果在屏幕截图中。
xdebug.ini 文件:
[xdebug]
zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.mode=coverage,debug
xdebug.start_with_request=yes
xdebug.remote_port=9003
xdebug.client_port=9000
xdebug.remote_host=172.16.100.1
xdebug.client_host=localhost
xdebug.discover_client_host=1
xdebug.remote_connect_back = 0
; xdebug.remote_log=/tmp/xdebug.log
; xdebug.log=/tmp/xdebug.log
启用 XDebug。我在index.php的最开始放置了一个断点。我正在 PowerShell 中转发隧道。
ssh -R 9000:localhost:9003 [电子邮件受保护]
md.mydomain.local 在文件 C:\Windows\System32\drivers\etc\hosts 中绑定到 IP 192.168.0.104。
我在浏览器中访问 md.mydomain.local:10443 - 远程 PhpStorm 不会停止,也不会显示类似“...而没有暂停”的消息。我还需要配置什么才能进行调试?
在Python中,可以同时给多个变量赋值:
a, b = 1, 2
a, b = b, a
同时,在声明函数时,允许指定默认值:
def myfunc(a, b=0):
return a+b
原来“逗号”运算符在第一种情况下的优先级高于赋值运算符,而在第二种情况下赋值运算符的优先级更高?在这种情况下,运算符优先级实际上是如何计算的,如果可能的话,你能告诉我(大概)这种变量优先级是如何在 Python 中实现的吗?
PS。为什么需要这个:我正在为应用程序开发一种宏语言(为此,为了不重新发明轮子,我以其他语言为例),并且我想实现批量分配和默认参数。为此,我需要确定运算符的优先级,并以某种方式解决这个问题:我不想硬编码,为逗号设置变量优先级,检查它是否在括号中,这会使解析器代码复杂化并使其不便于进一步扩展。
首先,我会从文件中脱离出来,从而解释我最终想要得到什么。PHP 有一个反射扩展,允许您显示有关代码及其元素(类、函数等)的信息
require __DIR__ . '/../vendor/autoload.php';
...
$reflectionClass = new ReflectionClass('\\MyNameSpace\\MyClass'); //Создаёт отражение класса
$reflectionMethod = new ReflectionMethod('MyClass', 'myMethod'); //Создаёт отражение метода
因此,通过这样的反射,您可以获得有关代码元素的信息。至于php,我可以分享我的例子:https ://github.com/tivewsalaeharad/study/blob/main/src/functions.php
但是关于js,我想知道有没有办法做这个反射。我知道在 php 中它起着很大的作用,它极大地促进了 PSR 自动加载标准,当然,如果库是按照标准编写的,幸运的是,在大多数情况下,一个文件是一个类. 但是在js中,据我了解,没有这样的标准,一个文件中可以存在多个类,以及一堆函数。因此,目标问题如下,javascript中是否存在类似的功能:
allClasses('path/to/module.js'); // Вывести перечень классов из module.js
allFunctions('path/to/module.js'); // Вывести перечень функций из module.js
allFields(MyClass); // Вывести перечень (вообще любых) составляющих класса MyClass
我马上做一个保留:javascript中类的概念是非常相对的,以至于一个类不一定可以通过构造来声明class
,但是,有没有办法将js文件转换为某种摘要或目录或逻辑结构图?
我正在制作一个 Windows 窗体 (.NET Framework) 应用程序。我在应用程序中添加了一个图标 - 一切正常。但是,当我决定在表单中添加一个图标时,VS 让我再次从磁盘中选择图标(不提供使用应用程序图标),编译后,项目大小从 100 增长到 500 kB,并且最烦人的是,当我把表单中的图标全部删除时,为了缩小项目,编译后项目仍然有500kB,好像这些重复的图标存放在哪里(我不知道)。
我知道这是题外话,但如果他们帮助我将非重复图标分配给来自一个资源的表单,我会很高兴,这样同一个文件就不会多次增加大小。但是在这篇文章中,至少我想得到一个问题的答案,我现在如何从项目中“清理垃圾”并删除增加EXE文件大小的重复图标?
之前一切正常。但是最近在执行功能时:
$somebean = R::dispense('sometable');
...
R::store($somebean); //<-- эта строка генерирует ошибку
RedBeanPHP 库,当我们向现有表添加条目时,会发生错误:
致命错误:未捕获 [23000] - SQLSTATE [23000]:违反完整性约束:1048列 'id' 不能为空跟踪:#0 W:\domains\EOPMS\eopms\libs\rb.php(1035): RedBeanPHP\Driver\RPDO->runQuery('INSERT INTO us...', Array) #1 W:\domains\EOPMS \eopms\libs\rb.php(1072): RedBeanPHP\Driver\RPDO->GetAll('INSERT INTO us...', Array) #2 W:\domains\EOPMS\eopms\libs\rb.php(4246 ): RedBeanPHP\Driver\RPDO->GetOne('INSERT INTO us...', Array) #3 W:\domains\EOPMS\eopms\libs\rb.php(5762): RedBeanPHP\Adapter\DBAdapter->getCell ('INSERT INTO us...', Array, 0) #4 W:\domains\EOPMS\eopms\libs\rb.php(5889): RedBeanPHP\QueryWriter\AQueryWriter->insertRecord('users', Array, Array ) #5 W:\domains\EOPMS\eopms\libs\rb.php(8651): RedBeanPHP\QueryWriter\AQueryWriter->updateRecord('users', Array, 0) #6 W:\domains\EOPMS\eopms\libs \rb.php(8222): RedBeanPHP\Repository\Fluid->storeBean(Object(RedBeanPHP\OODBBean)) #7 W:\domains\EOPMS\eopms\libs\rb.php(9371): RedBeanPHP\Repository->store(Object(RedBeanPHP\OODBBean)) #8 W:\domains\EOPMS\eopms\libs\rb.php in W:\ domain\EOPMS\eopms\libs\rb.php 在第 768 行
关键短语以粗体突出显示。我不明白当我调用一个列并自动分配行 ID时如何id
获取一个值。null
R::dispense('sometable')
此外,当从控制台调用带有函数的脚本R::store($somebean)
时,会发生挂起,即使将记录添加到新表也是如此。
在租用的服务器上,执行相同的脚本根本不会造成任何问题,也就是说,这显然不是代码编写错误的问题。
谁遇到过 OpenServer 的类似行为?也许某些设置只是不小心弄乱了?OpenServer 的当前版本是 5.2.2。
我在主机上订购了电子邮件服务。创建了一个邮箱 support@mydomain.tk。但是运行命令后:
mail('mylogin@mail.ru', 'subject', 'message', 'From: support@mydomain.tk\r\nX-Mailer: PHP/'.phpversion());
这封信没有从 support@mydomain.tk 邮箱发送到另一个邮箱。怎么修
需要在页面上写什么,以便所有访问该页面的浏览器无一例外都不会访问缓存,而是每次都从附件中重新读取样式和脚本,因为。总是有变化。以下处方完全没有效果:
<meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="expires" content="Fri, 20 Mar 2014 00:00:00 GMT" />
PHP中的类似命令也没有效果:
<?php
header('Cache-Control: max-age=0, no-cache, no-store, must-revalidate');
header('Pragma: no-cache');
header('Expires: Fri, 20 Mar 2014 00:00:00 GMT');
?>
如何永久和所有浏览器禁用所有内容(css和js)的缓存?
菜单项,以及不同类型(div、button)在弹出对话框的顶部弹出。只有菜单项被刺穿,其他所有内容都“位于”弹出窗口下:
你甚至可以选择它们:
dialog {
background: rgba(255, 255, 255, 0.7);
width: 300px;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
border-radius: 5px;
}
nav {
width: 100%;
margin: 0;
text-align: center;
}
ul {
list-style: none;
margin: 0;
padding: 0;
}
.topmenu>li {
display: inline-block;
margin-right: 20px;
position: relative;
}
.topmenu>li:last-child {
margin-right: 0;
}
.topmenu button {
background-color: inherit;
float: left;
border: none;
outline: none;
cursor: pointer;
padding: 10px 10px;
transition: 0.5s linear;
font-family: "Times New Roman";
font-size: 16;
}
.topmenu button:hover {
background-color: #ddd;
}
.topmenu div {
display: block;
float: left;
padding: 10px 10px;
text-decoration: none;
outline: none;
transition: .5s linear;
}
.topmenu div:hover {
background-color: #ddd;
}
.fa {
color: inherit;
padding-left: 10px;
}
.submenu {
position: absolute;
top: 100%;
left: 0;
width: 100%;
z-index: 10;
-webkit-transition: 0.5s ease-in-out;
-moz-transition: 0.5s ease-in-out;
-o-transition: 0.5s ease-in-out;
transition: 0.5s ease-in-out;
}
.submenu button {
width: 100%
}
.menu-bar ul {
background: #f1f1f1;
}
.menu-bar ul a {
color: #000000;
}
.menu-bar .submenu {
display: none;
background: #c0c0c0;
}
.menu-bar ul li:hover .submenu {
display: block;
}
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>dialog</title></head>
<body>
<dialog>
<p>Полинезийцы называют Млечный путь Манго-Роа-И-Ата, что в переводе с маори означает «Длинная акула на рассвете».</p>
<p><input type="text" name="some_text" id="some_text"></p>
<p><button onclick="document.querySelector('dialog').close();">Закрыть окно</button></p>
</dialog>
<nav class="menu-bar">
<p style="color: green">Некоторый текст</p>
<ul class="topmenu">
<li><button onclick="document.querySelector('dialog').show();">Окно</button></li>
<li><div>Меню1</div><ul class="submenu">
<li><button type="submit" name="do_create">Пункт002</button></li>
<li><button type="submit" name="do_paint">Пункт003</button></li>
</ul></li>
<li><div>Меню2</div><ul class="submenu">
<li><button type='button'>Пункт004</button><li>
<li><button type='button'>Пункт005</button><li>
<li><button type='button'>Пункт006</button><li>
<li><button type='button'>Пункт007</button><li>
</ul></li>
<li><button type="submit" name="do_export">МенюN</button></li>
<li><div>Меню3</div><ul class="submenu">
<li><button type="submit" name="do_show">Пункт1</button></li>
<li><button type="submit" name="do_show">Пункт2</button></li>
<li><button type="submit" name="do_show">Пункт3</button></li>
<li><button type="submit" name="do_show">Пункт4</button></li>
</ul></li>
<li><div>Меню4</div><ul class="submenu">
<li><button type="submit" name="do_show">Пункт01</button></li>
<li><button type="submit" name="do_show">Пункт02</button></li>
<li><button type="submit" name="do_show">Пункт03</button></li>
<li><button type="submit" name="do_tune">Пункт04</button></li>
</ul></li>
<li><button>Меню5</button></li>
<li><button>Меню6</button></li>
</ul>
</nav>
</body>
</html>
如何解决,如果可能的话,使对话框弹出时,它下面的所有内容都被阻止,即页面上的所有内容,除了弹出窗口?
当格式从 MS Excel 表中消失时,日期变成了数字。例子:
2018 年 7 月 20 日 => 43301
2018 年 8 月 17 日 => 43329
03.10.2018 => 43376
2018 年 10 月 4 日 => 43377
PHP 现在如何将这些数字转换回日期?
我使用其中一个以前的库创建了一个新应用程序,在 settings.gradle 中指定:
include ':app', ':classification'
project(':classification').projectDir = new File('C:\\base_android\\AndroidStudioProjects\\SPACE\\classification')
同时我也在新项目的build.gradle中注册了依赖:
implementation project(':classification')
图书馆已连接。问题是这两个项目不能在智能手机上同时共存。当一个应用程序安装在智能手机上并安装另一个应用程序时,第一个应用程序将被销毁。
如何解决这个问题,而不创建 *.jar 或 *.aar 文件,因为在开发一个和另一个应用程序的过程中,经常需要编辑库?
我有一个带有 TextView 元素的 LinearLayout。每个 TextView 元素都分配有一个处理程序
... new View.OnTouchListener() {
int initialX = 0;
int initialY = 0;
static final int MAX_CLICK_DURATION = 200;
long startClickTime;
@Override
public boolean onTouch(View v, MotionEvent event) {
long clickDuration = Calendar.getInstance().getTimeInMillis() - startClickTime;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
initialX = (int) event.getX();
initialY = (int) event.getY();
startClickTime = Calendar.getInstance().getTimeInMillis();
break;
case MotionEvent.ACTION_MOVE:
if (clickDuration > MAX_CLICK_DURATION) {
int currentX = (int) event.getX();
int currentY = (int) event.getY();
dcl.setText(String.format(Locale.getDefault(), "(%d,%d)", currentX, currentY));
}
break;
case MotionEvent.ACTION_UP:
if (clickDuration < MAX_CLICK_DURATION) v.performClick();
break;
}
return true;
}
});
理想情况下,当我松开手指时,我打算将开始拖放的元素放在它被拉伸到的元素之前,但现在我只显示坐标,检查监听器的工作。
问题是当手指离开原始元素时,包括移动到另一个 TextView 元素,处理程序停止工作(在这个“预调试”示例中,坐标停止更新),这开始滚动包含此 LinearLayout 元素的 ScrollView .
如何使其在离开原始元素时也可以拖动,并且仅当您将手指从 TextView 元素中捏在 ScrollView 的可用空间上时才进行滚动?即使短按,您也需要保存 TextView 的 OnClick,但我或多或少想通了,这行负责:
if (clickDuration < MAX_CLICK_DURATION) v.performClick();
PS。我知道使用 DragListView 更容易做到这一点,但在这种情况下这是不可能的。TextView所在的LinearLayout是继承在层次结构深处的组件的一部分,您不能将LinearLayout更改为ListView,因为 此层次结构的其他组件将崩溃。
为了便于查看,逗号已替换为连字符。
作为输入,一组数值数组。例子:
2-1-2-0-6-7
2-1-2-0-7-0
2-1-2-0-7-1-2-1-3-1-6
2-1-2-0-7-1-2-1-3-2-8
2-1-2-0-7-1-3-4
2-1-2-0-7-1-3-5
2-1-2-0-7-1-4
2-1-2-0-7-1-4-6
2-1-2-0-8
2-1-2-2
输出应该是一棵树,其顶点是其从属数组的初始子数组。可以创建新数组,但是如果创建新数组,那么每个顶点必须从属于至少两个数组,即如果ab类中只有一个abcde类,则不必选择ab类(除非ab 在输入处指定),通过直接嵌套到 a 类 abcde。
从我给出的例子中应该可以得出以下内容,在保持层次结构的同时,这里用空格表示:
2-1-2 (создаётся класс)
2-1-2-0 (создаётся класс)
2-1-2-0-6-7
2-1-2-0-7 (создаётся класс)
2-1-2-0-7-0
2-1-2-0-7-1 (создаётся класс)
2-1-2-0-7-1-2-1-3 (создаётся класс)
2-1-2-0-7-1-2-1-3-1-6
2-1-2-0-7-1-2-1-3-2-8
2-1-2-0-7-1-3 (создаётся класс)
2-1-2-0-7-1-3-4
2-1-2-0-7-1-3-5
2-1-2-0-7-1-4
2-1-2-0-7-1-4-6
2-1-2-0-8
2-1-2-2
重要的是,当处理器遇到一个 2-1-2-0-7-1-3-4 的数组时,它必须创建一个类 2-1-2-0-7-1,并在类 2-1-2 -0-7 和 2-1-2-0-7-1-2-1-3(后者是从前面两个数组的初始比较中获得的),因为数组 2-1 -2-0- 将进一步放置在这个类 7-1-3-4 中(在这种情况下是间接的),它不是类 2-1-2-0-7-1-2-1 的代表-3,但属于创建的类 2-1-2-0-7 -1。
编程语言可能是java,但不一定——排序原则很重要。
我正在使用 OpenServer 应用程序。在 ..\OSPanel\domains\localhost\ 我放置了 base.db 数据库
代码片段
$link = mysql_connect('localhost', 'root');
if (!$link) { die('Ошибка соединения: ' . mysql_error()); }
$db_selected = mysql_select_db('base.db', $link);
if (!$db_selected) { die ('Базы данных не существует: ' . mysql_error()); }
但是,在执行这段代码时,出现错误“数据库不存在:未知数据库'base'”。删除数据库扩展并对代码进行适当的更改也没有效果。告诉我需要做什么,例如,将数据库放在哪里以及如何命名它,以便它可以被 mysql_select_db 函数识别。
我从一个 PHP 教程中举了一个例子:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Заголовок страницы</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<header>
<div class = "hdr">
<p>Ваш заголовок</p>
</div>
</header>
<main>
<form action="php/test.php" method="get">
<p>HDD:</p>
<input type="text" name="HDD" />
<br />
<p>CD-ROM:</p>
<input type="text" name="CD-ROM" />
<br />
<input type="submit" value="Отправить" />
</form>
</main>
<footer>
<p class = "footerstyle">Текст внизу<p>
</footer>
</body>
</html>
然后我从同一本教科书中摘录了以下文字
<?php
echo "<p>HDD is " . $_GET['HDD'] . "</p>";
echo "<p>CDROM is " . $_GET['CDROM'] . "</p>";
?>
并将其粘贴到 php/test.php 文件中。但是当我在 HTML 编辑器中打开我的页面,输入字段值并点击提交时,test.php 文件以纯文本形式打开。如何将其作为可执行文件打开?
PS。示例来源:https://ru.wikibooks.org/wiki/PHP,我在其中替换了 localhost ,因为我还没有弄清楚如何配置它,但这是另一个问题的主题。