Use:
typedef MyData struct {
Data string `json:"data"`
FieldName *int64 `json:"-"`
}
Adding the `json:"-"` will make the Unmarshal command disregard this field
Points regarding computing that I always forget - so I write them here to find them easily and maybe other could benefit too.
Use:
typedef MyData struct {
Data string `json:"data"`
FieldName *int64 `json:"-"`
}
Adding the `json:"-"` will make the Unmarshal command disregard this field
You have to do the following steps:
Run defrag in the guest (Windows only)
Nullify free space:
With a Linux Guest run this:
dd if=/dev/zero of=/var/tmp/bigemptyfile bs=4096k ; rm /var/tmp/bigemptyfile
Or:
telinit 1
mount -o remount,ro /dev/sda1
zerofree -v /dev/sda1
With a Windows Guest, download SDelete from Sysinternals and run this:
sdelete.exe c: -z
(replace C: with the drive letter of the VDI)
Shutdown the guest VM
Now run VBoxManage's modifymedium command with the --compact option:
With a Linux Host run this:
vboxmanage modifymedium --compact /path/to/thedisk.vdi
With a Windows Host run this:
VBoxManage.exe modifymedium --compact c:\path\to\thedisk.vdi
With a Mac Host run this:
VBoxManage modifymedium --compact /path/to/thedisk.vdi
This reduces the vdi size.
https://superuser.com/questions/529149/how-to-compact-virtualboxs-vdi-file-size
caddy
https://caddyserver.com/docs/install#debian-ubuntu-raspbian
sudo apt update
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo tee /etc/apt/trusted.gpg.d/caddy-stable.asc
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
# the code sits in /var/www
# create link to the local directory
ln -s /var/www/ /home/xxx/myprojects/web
# set the user to be xxx and the group caddy
sudo chown -R xxx:caddy ./www
# add us to caddy groups
sudo usermod -a -G caddy xxx
sudo usermod -a -G www-data xxx
Install php-fpm
sudo apt install php-cli php-fpm php-mysql php-mbstring php-curl
https://www.howtoforge.com/tutorial/ubuntu-caddy-web-server-installation/
configure caddy with php
sudo nano /etc/php/8.1/fpm/pool.d/www.conf
#change users to caddy (user, group, listen.owner, listen.group)
#take the socket name: listen = /run/php/php8.1-fpm.sock
nano php.ini # set E_ALL view all errors
sudo systemctl restart php8.1-fpm
#set socket in Caddyfile: php_fastcgi unix//run/php/php8.1-fpm.sock
sudo service caddy stop && sudo service caddy start
Caddyfile
website.com {
#:80 {
tls /var/www/fullchain.pem /var/www/privkey.pem
# Set this path to your site's directory.
root * /var/www/website.com
php_fastcgi unix//run/php/php7.4-fpm.sock
# Enable the static file server.
# file_server
rewrite /symbol/* s.php?s={path}
# rewrite /symbol/ {
# r ^/(\w+)/?$
# to /symbol.php?symbol={1}
# }
file_server
encode gzip
log {
output file /var/log/caddy/example.com.access.log {
roll_size 3MiB
roll_keep 5
roll_keep_for 48h
}
format console
}
# Another common task is to set up a reverse proxy:
# reverse_proxy localhost:8080
# Or serve a PHP site through php-fpm:
# php_fastcgi localhost:9000
#RewriteRule ^symbol/jscss/([^/]*)\.([^/]*)$ /jscss/$1.$2 [L] # no need for those since we used <base href="../" />
#RewriteRule ^symbol/images/([^/]*)\.([^/]*)$ /images/$1.$2 [L]
#rewrite /symbol/* / symbol.php?symbol={query}
}
I had the same problem whith my docker php-fpm and I fixed it by modifing parameters
in these files: /usr/local/etc/php-fpm.d/www.conf /usr/local/etc/php-fpm.d/www.conf.default
The new parameters are :
pm = dynamic
pm.max_children = 25
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500
- ADD how to enabled logs in PHP
Linux terminal shell command line to show a list of just the files in the directory
find . -type f
php8 COM Exception Type Mistmtach in paramater #0 when calling MS Word COM object SaveAs
I saw this:
https://bugs.php.net/bug.php?id=73605
When calling $word->SaveAs($filename, 8);
You should change to $word->SaveAs($filename, new variant(8, VT_I4);
Got an error that ldap_connect is not a recognize function to use with apache 2.4, php 8 on windows
Here is a solution:
1.
Enable extension=ldap in the php.ini
2.
Copy .dll files from the php installation directory into the apache/bin installation directory
Please note, ldap_sort function was deprecated
mysqld.cnf
datadir = /new/data/dir
mysqld --user=mysql --initialize
innodb_flush_log_at_trx_commit= 0
ssl=0 # (5.7 community (self built) might not use SSL for cases. 8.0 always use ssl by default, might be slower)
innodb_doublewrite_pages=120 # (if doublewrite enabled for recent 8.0.x "on HDD")
innodb_undo_log_truncate=OFF
innodb_log_writer_threads=OFF
plugin-load-add=auth_socket.so
auth_socket=FORCE_PLUS_PERMANENT
sudo systemctl stop apparmor
sudo systemctl disable apparmor
sudo mysqldump --master-data=1 --flush-logs --single-transaction --routines --quick --all-databases > db20230116_1852.sql
CREATE USER 'XXXXX'@'%' IDENTIFIED WITH mysql_native_password BY 'XXXXXX';
GRANT ALL PRIVILEGES ON *.* TO 'XXXXX'@'%' WITH GRANT OPTION;
FLUSH PRIVILIGES;
use
mysql --ssl-mode=DISABLED -p
How to enable php error logging with caddy and php-fpm
Inside the file:
pool.d/www.conf
Edit at the end:
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = on
catch_workers_output = yes
#!/bin/bash
#
# Run this script on a file named urls.txt with all your URLs and pipe the output to an HTML file.
# Example: ./convert_url_file.sh > bookmarks.html
echo "<!DOCTYPE NETSCAPE-Bookmark-file-1>"
echo '<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">'
echo '<TITLE>Bookmarks</TITLE>'
echo '<H1>Bookmarks</H1>'
echo '<DL><p>'
cat urls.txt |
while read L; do
echo -n ' <DT><A HREF="';
echo ''"$L"'">'"$L"'</A>';
done
echo "</DL><p>"
sudo apt install squid
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.original
sudo chmod a-w /etc/squid/squid.conf.original
sudo nano /etc/squid/squid.conf
inside squid.conf
http_port XXXXX
http_access allow all
sudo update-rc.d squid disable
sudo systemctl restart squid.service
sudo systemctl status squid
sudo systemctl disable squid
sudo systemctl stop squid
sudo snap connect mysql-workbench-community:password-manager-service :password-manager-service
Had this annoying problem in my linux Xubuntu 20.04 when putting on suspend the system then starts even though I put it in suspend and sleep.
Using acpitool to turn off wake-up from unnecessary devices.
But the problem the change is not permanent and does not survive a restart.
So I used cron @reboot to make sure it is always off:
@reboot acpitool -W 3 && acpitool -W 9 && acpitool -W 10 && acpitool -W 17 && acpitool -W 63 && acpitool -W 64 && acpitool -W 66 && acpitool -W 68 && acpitool -W 74
CREATE TABLE tzt(
id MEDIUMINT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
ts TIMESTAMP NOT NULL,
dt DATETIME NOT NULL
);
SELECT @@global.time_zone, @@session.time_zone;
SET GLOBAL time_zone = 'Asia/Jerusalem';
SET SESSION time_zone = 'Asia/Jerusalem';
INSERT INTO tzt SET ts='2021-08-22 13:30:00', dt='2021-08-22 13:30:00';
SELECT * FROM tzt\G
SET GLOBAL time_zone = 'America/Sao_Paulo';
SET SESSION time_zone = 'America/Sao_Paulo';
SELECT * FROM tzt\G
In order to be able to connect to MySQL remote server using encrypted connection overt TLS1.2 you will need a .pem certificate of CA.
You can obtain the certificate here: https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem
(DigiCertGlobalRootCA.crt.pem)
Read more here:
https://docs.microsoft.com/en-us/azure/mysql/flexible-server/how-to-connect-tls-ssl
Here is a PHP sample for connection with SSL to MySQL encrypted connection on TLS1.2:
self::$mysqli = mysqli_init();
//self::$mysqli->options(MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);
self::$mysqli->ssl_set(NULL, NULL, "DigiCertGlobalRootCA.crt.pem", NULL, NULL);
self::$mysqli->real_connect(host', 'username', 'password', 'database'); // , 3306, MYSQLI_CLIENT_SSL);
//self::$mysqli = new mysqli('hots', 'username', 'password', 'database');
self::$mysqli->set_charset('utf8');
return self::$mysqli;
-----BEGIN CERTIFICATE----- MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG 9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt 43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg 06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= -----END CERTIFICATE-----
Some pitfalls for using PWA and ServiceWorker I hoped I knew before - So I am writing them here so maybe others will get to rid them before or I can find them again when I'll need them again.
This is not a tutorial for PWA, ServiceWorker. Those are just a few points that I encountered while developing a PWA (Progressive Web App) and ServiceWorker using Vanilla JavaScript and caching mechanism for Offline usage. There are plenty of good PWA ServiceWorker Caching tutorial on the internet.
Full Vanilla JavaScript code is attached all the way at the bottom
First, the cache made by the cache mechanism which you as a coder decide what will be saved in this cache using the cache.addAll() command.
And the second cache is the one the browser automatically caches for example images and javascripts code or others.
Hence might be that when you work offline the browser will return cached images which you did not stated that should be cached only because the browser caching mechanism have cached them.
You develop and everything works cool from your localhost server but when deploying and installing on production on your website the offline cache of the serviceworker is empty in the devtools of your Chrome browser. When you work Online you do see the cache.
Now weather I think it appears empty it is a Chrome bug because the cache is there - apparently your code does not recognize the cache using caches.match and tries to request it from the network.
There are two things needed to be done:
So no need to reinstall the worker when you go offline and the list of resources need to be relative to the service worker location:
const includeToCache = [
'./',
'index.php',
// 'loader.js?20211118a', // the serviceWorker loader
// 'sw1.js', // the serviceWorker itself
];
The full code of the serviceWorker
// service worker for PWA loaded from loader.js in pwa.class.php
const cacheName = 'pwa_v10';
const includeToCache = [
'./',
'index.php',
// 'loader.js?20211118a',
// 'sw1.js',
];
// Start the service worker and cache all of the app's content
self.addEventListener('install', e => {
self.skipWaiting();
e.waitUntil(
caches.open(cacheName).then(cache => {
let c = cache.addAll(includeToCache).catch(err => console.log('SW install addAll FAIL:', err));
return c;
})
);
});
// Serve cached content when offline
self.addEventListener('fetch', e => {
e.respondWith(
caches.match(e.request, {ignoreVary: true}).then(response => {
return response || fetch(e.request);
})
);
});
// replacing new cache if needed
self.addEventListener('activate', e => {
// delete any caches that aren’t in cacheName
// which will get rid of older versions
e.waitUntil(
caches.keys().then(keys => Promise.all(
keys.map(key => {
if(cacheName !== key) {
return caches.delete(key);
}
}))).then(() => {
console.log(cacheName + ' now ready to handle fetches!');
})
);
});
How to combine or embed and insert another .docx file (Microsoft office docx word document) into another one using PHPWord
Joining two .docx document using php (phpword library)
$mainTemplateProcessor = new \PhpOffice\PhpWord\TemplateProcessor("file1");
//$mainTemplateProcessor ->setValue('var_name', $value);
$innerTemplateProcessor = new \PhpOffice\PhpWord\TemplateProcessor("file2");
//$innerTemplateProcessor->setValue('var2_name', $value2);
// extract internal xml from template that will be merged inside main template
$innerXml = $innerTemplateProcessor->gettempDocumentMainPart();
$innerXml = preg_replace('/^[\s\S]*<w:body>(.*)<\/w:body>.*/', '$1', $innerXml);
// remove tag containing header, footer, images
$innerXml = preg_replace('/<w:sectPr>.*<\/w:sectPr>/', '', $innerXml);
// inject internal xml inside main template
$mainXml = $mainTemplateProcessor->gettempDocumentMainPart();
$mainXml = preg_replace('/<\/w:body>/', '<w:p><w:r><w:br w:type="page" /><w:lastRenderedPageBreak/></w:r></w:p>' . $innerXml . '</w:body>', $mainXml);
$mainTemplateProcessor->settempDocumentMainPart($mainXml);
$mainTemplateProcessor->saveAs($result_file_name);
In order for the above code to work, you need to modify edit and add to the TemplateProcessor.php file those two functions:
public function gettempDocumentMainPart()
{
return $this->tempDocumentMainPart;
}
public function settempDocumentMainPart($new)
{
return $this->tempDocumentMainPart = $new;
}
This answer is based on the answer of @pfleu here: https://github.com/PHPOffice/PHPWord/issues/1130
Teusonho.org - Online Interprete Seus Sonhos
https://teusonho.org é um software de interpretatação online de sonhos usando IA para análise em tempo real de sonhos repetidos e símbolos de sonhos.I took my website for dream analysis using Artificial Intelligence and Machine Learning that I have created in Hebrew https://dreamon.co.il and also in English https://understandmydreams.com and created a version in Portuguese https://teusonho.org with new dream symbols and new dreams.
Peguei meu site para análise de sonhos usando Inteligência Artificial e Aprendizado de Máquina que criei em hebraico https://dreamon.co.il e também em inglês https://understandmydreams.com e criei uma versão em português https://teusonho.org com novos símbolos de sonho e novos sonhos.
Also on twitter: https://twitter.com/OrgTeusonho
In order to rewrite for example:
https://www.teusonho.org/symbol/casa to /symbol.php=casa
You can use:
location /symbol {
rewrite ^/symbol/([^/\.]*)$ /symbol.php?symbol=$1;
}
When loading and importing a large .sql mysql dump file and you wish to know how long is it going to take and where does the process status is standing using a progress bar from the mysqldump loading you can us pv (pipe viewer)
For example:
pv sqldumpfile.sql | mysql database name
About pv (pipe viewer) utility for Linux:
"The default collation for utf8mb4 differs between MySQL 5.7 and 8.0 ( utf8mb4_general_ci for 5.7, utf8mb4_0900_ai_ci for 8.0). When the 8.0 client requests a character set of utf8mb4 , what it sends to the server is the default 8.0 utf8mb4 collation; that is, the utf8mb4_0900_ai_ci."
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8
default_authentication_plugin = mysql_native_password
sudo service mysql restart
CREATE USER 'username'@`location` IDENTIFIED WITH mysql_native_password BY '[somepassword]';