testStart := widget.NewButtonWithIcon(" Test ", theme.InfoIcon(), func() {
dialog.ShowConfirm(
"Начать парсинг?",
fmt.Sprintf("Ссылки для парсинга получены"),
func(yes bool) {
if yes {
progress.Show() // Порказываем и запускаем прогрессбар
progress.Start()
fmt.Println("Start")
go doTheJob()
} else {
return
}
},
myWindow,
)
})
func doTheJob() {
qty, file_name := parsing(urls) // функция - парсинг товаров по ссылкам
//time.Sleep(5 * time.Second)
// Обновление виджетов разрешено делать только из главной горутины,
// поэтому нужно шедулить обновление виджетов через fyne.Do
fyne.Do(func() {
progress.Stop()
dialog.NewInformation("Данные получены", "Все работает!", myWindow).Show()
})
}
#
является спецсимволом, который требуется кодировать как %23
.http://site.ru/dw/?url=https%3A%2F%2Fmega.nz%2Ffile%2Fe8hzUIJS%23eE1Nb6VdmFmtF2YlgO8a25X09l_fa9uxtTOjNNBgIS
#
. Такой вид ссылки гарантированно будет работать так, как вы хотите.rawurlencode()
. session_write_close()
непосредственно перед выводом файла:header('Pragma: private');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-Length: ' .filesize($file));
session_write_close(); // <--- вот здесь
readfile($file);
exit();
second
и third
не успевают встать в ожидание condition.var c = new SomeClass();
try (var t = Executors.newFixedThreadPool(3)) {
t.submit(c::second);
t.submit(c::third);
Thread.sleep(100);
t.submit(c::first);
}
Опишу проблему: я не совсем понимаю связь между json-сущностями которые отгружаются rest-методом и таблицами в базе данных.
Каждый ли ключ обязательно должен маппится с полем в какой-то таблице?
Так что же тогда нужно понимать под фразой "сущность отгружается полностью"?
На всякий случай отмечу: я знаю, что "одна таблица не равно одна сущность". Сущность может быть раскидана по нескольким таблицам.
Мой вопрос больше про маппинг полей в json-объектах отгружаемых Postman/Devtools и полями в таблицах бд.
<?php
.?>
в db.php или же переходить на аналоги ? bunny, к примеру
phpunit.xml.dist
в который прописываются все настройки по умолчанию, кроме чувствительных к безопасности (api ключи, пароли и пр). Файл phpunit.xml
добавляется в .gitignore
. Таким образом, если пользователю нужно кастомизировать какие-то параметры, он просто копирует файл phpunit.xml.dist в phpunit.xml и добавляет свои секреты в последний. Это безопасно, так как phpunit.xml заигнорен.Зачем Clang использует gcc? Для компиляции?Сам компилятор не используется. Только линкер и стандартная библиотека.
Почему считается, что использовать Clang для (кросс-)компиляции, и в CMake лучше, если он использует тот же gcc?Потому что clang строго следует букве стандарта, в отличии от gcc, который трактует стандарт вольно и в целом ориентирован на поддержку экзотических костылей и исторически сложившихся традиций. Поэтому при использовании clang проще писать кроссплатформенный код.
FileChannel channel = FileChannel.open(Path.of("test.txtx"),StandardOpenOption.CREATE,
StandardOpenOption.WRITE, StandardOpenOption.READ);
ByteBuffer buffer = ByteBuffer.allocate(15);
buffer.put("hello world".getBytes()); // записали в буфер данные
buffer.flip(); // <--- переключили буфер из режима записи в режим чтения
channel.write(buffer, 0); // теперь channel.write сможет прочитать записанные в
// буфере данные и записать их в файл
ByteBuffer buffer2 = ByteBuffer.allocate(15);
channel.read(buffer2, 0); // channel.read прочитал данные из файла и записал их в буфер
buffer2.flip(); // <--- переключаем из записи в чтение
System.out.println(StandardCharsets.UTF_8.decode(buffer2)); // decode читает данные из буфера
// и составляет из них строку
// Здесь ничего не выводилось, потому что без flip ничего и не записалось в файл.
System.out.println(new String(buffer2.array())); // ничего не выведет
$format = bcdiv("580000000", "1000000000", 2); // "0.58"
var_dump(bcmul($format, "100")); // string(2) "58"