<!-- Matomo -->
<script>
  var _paq = window._paq = window._paq || [];
    /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
    _paq.push(['trackPageView']);
    _paq.push(['enableLinkTracking']);
      (function() {
	          var u="//analytics.wasya.co/";
		      _paq.push(['setTrackerUrl', u+'matomo.php']);
		      _paq.push(['setSiteId', '15']);
		          var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
		          g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
			    })();
    </script>
<!-- End Matomo Code -->
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.wasya.co/index.php?feed=atom&amp;namespace=0&amp;title=Special%3ANewPages</id>
		<title>Wasya Wiki - New pages [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.wasya.co/index.php?feed=atom&amp;namespace=0&amp;title=Special%3ANewPages"/>
		<link rel="alternate" type="text/html" href="https://wiki.wasya.co/index.php/Special:NewPages"/>
		<updated>2026-05-25T22:36:15Z</updated>
		<subtitle>From Wasya Wiki</subtitle>
		<generator>MediaWiki 1.26.0</generator>

	<entry>
		<id>https://wiki.wasya.co/index.php/Drupal_Performance</id>
		<title>Drupal Performance</title>
		<link rel="alternate" type="text/html" href="https://wiki.wasya.co/index.php/Drupal_Performance"/>
				<updated>2026-05-02T21:19:08Z</updated>
		
		<summary type="html">&lt;p&gt;Piousbox: /* changes I'm making */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Add these to settings.php:&lt;br /&gt;
&lt;br /&gt;
  $settings['cache']['bins']['render'] = 'cache.backend.database'&lt;br /&gt;
  $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.database'&lt;br /&gt;
  $settings['cache']['bins']['page'] = 'cache.backend.database'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
reconfigure /etc/mysql/conf.d/docker.conf&lt;br /&gt;
&lt;br /&gt;
  [mysqld]&lt;br /&gt;
  # skip-host-cache&lt;br /&gt;
  # skip-name-resolve&lt;br /&gt;
  max_connections = 300&lt;br /&gt;
&lt;br /&gt;
= part IV =&lt;br /&gt;
&lt;br /&gt;
See how long the request takes:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  curl -o /dev/null -s \&lt;br /&gt;
    -w 'dns=%{time_namelookup} connect=%{time_connect} tls=%{time_appconnect} ttfb=%{time_starttransfer} total=%{time_total}\n' \&lt;br /&gt;
    https://piousbox.com/issues/2025q2-issue&lt;br /&gt;
&lt;br /&gt;
Add nginx log temporarily:&lt;br /&gt;
&lt;br /&gt;
  log_format timing '$remote_addr - $request '&lt;br /&gt;
                  'rt=$request_time '&lt;br /&gt;
                  'urt=$upstream_response_time '&lt;br /&gt;
                  'uht=$upstream_header_time '&lt;br /&gt;
                  'uct=$upstream_connect_time';&lt;br /&gt;
  #&lt;br /&gt;
  access_log /var/log/nginx/timing.log timing;&lt;br /&gt;
&lt;br /&gt;
Interpretation:&lt;br /&gt;
* high request_time + high upstream_*&lt;br /&gt;
**  → backend app is slow&lt;br /&gt;
* high request_time + no upstream times&lt;br /&gt;
**  → nginx/static filesystem issue&lt;br /&gt;
* high upstream_connect_time&lt;br /&gt;
**  → nginx struggling to reach upstream&lt;br /&gt;
* high upstream_header_time&lt;br /&gt;
**  → app slow before first byte&lt;br /&gt;
&lt;br /&gt;
For containerized Drupal, a 3–4 second first-hit delay is commonly one of:&lt;br /&gt;
* PHP-FPM worker cold start&lt;br /&gt;
* Drupal cache rebuild/bootstrap&lt;br /&gt;
* slow DB query&lt;br /&gt;
* uncached Twig/container compilation&lt;br /&gt;
* network latency to DB/Redis&lt;br /&gt;
* bind-mounted filesystem slowness&lt;br /&gt;
* OPCache not configured&lt;br /&gt;
* reverse DNS / external HTTP calls&lt;br /&gt;
&lt;br /&gt;
== check php cache ==&lt;br /&gt;
&lt;br /&gt;
  php -i | grep opcache&lt;br /&gt;
&lt;br /&gt;
== changes I'm making ==&lt;br /&gt;
&lt;br /&gt;
  opcache.validate_timestamps=0 # made no difference&lt;br /&gt;
  realpath_cache_ttl = 600&lt;/div&gt;</summary>
		<author><name>Piousbox</name></author>	</entry>

	<entry>
		<id>https://wiki.wasya.co/index.php/Html</id>
		<title>Html</title>
		<link rel="alternate" type="text/html" href="https://wiki.wasya.co/index.php/Html"/>
				<updated>2026-04-12T14:32:11Z</updated>
		
		<summary type="html">&lt;p&gt;Piousbox: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
 certbot run -d $DOMAIN --nginx -n --expand&lt;br /&gt;
&lt;br /&gt;
Color picker: https://www.w3schools.com/colors/colors_picker.asp&lt;br /&gt;
&lt;br /&gt;
Unlimited music downloads: https://www.bensound.com/pricing&lt;br /&gt;
&lt;br /&gt;
Google cloud billing (make sure it's at zero): https://console.cloud.google.com/billing/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;text-center&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;video width=&amp;quot;640&amp;quot; height=&amp;quot;480&amp;quot; controls=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;source src=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
    Your browser does not support the video tag.&lt;br /&gt;
  &amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;text-center&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;video width=&amp;quot;640&amp;quot; height=&amp;quot;360&amp;quot; controls=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;source src=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
    Your browser does not support the video tag.&lt;br /&gt;
  &amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;text-center&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;video width=&amp;quot;300&amp;quot; height=&amp;quot;225&amp;quot; controls=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;source src=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
    Your browser does not support the video tag.&lt;br /&gt;
  &amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;text-center&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;video width=&amp;quot;480&amp;quot; height=&amp;quot;640&amp;quot; controls=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;source src=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
    Your browser does not support the video tag.&lt;br /&gt;
  &amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Piousbox</name></author>	</entry>

	<entry>
		<id>https://wiki.wasya.co/index.php/Postal</id>
		<title>Postal</title>
		<link rel="alternate" type="text/html" href="https://wiki.wasya.co/index.php/Postal"/>
				<updated>2026-04-07T13:25:52Z</updated>
		
		<summary type="html">&lt;p&gt;Piousbox: Created page with &amp;quot;  == enable TLS ==  From: https://docs.postalserver.io/features/smtp-tls    openssl req -x509 -newkey rsa:4096 -keyout /opt/projects/annesque_email/config/postal/smtp.key \...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== enable TLS ==&lt;br /&gt;
&lt;br /&gt;
From: https://docs.postalserver.io/features/smtp-tls&lt;br /&gt;
&lt;br /&gt;
  openssl req -x509 -newkey rsa:4096 -keyout /opt/projects/annesque_email/config/postal/smtp.key \&lt;br /&gt;
    -out /opt/projects/annesque_email/config/postal/smtp.cert -sha256 -days 365 -nodes&lt;/div&gt;</summary>
		<author><name>Piousbox</name></author>	</entry>

	<entry>
		<id>https://wiki.wasya.co/index.php/Wget</id>
		<title>Wget</title>
		<link rel="alternate" type="text/html" href="https://wiki.wasya.co/index.php/Wget"/>
				<updated>2026-04-03T21:38:49Z</updated>
		
		<summary type="html">&lt;p&gt;Piousbox: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
  wget --mirror --convert-links --adjust-extension --page-requisites --no-parent $domain&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Limit download scope ===&lt;br /&gt;
&lt;br /&gt;
-l 2 → only go 2 levels deep&lt;br /&gt;
&lt;br /&gt;
  wget -r -np -k -p -E -l 1 $domain&lt;br /&gt;
&lt;br /&gt;
=== other ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-r → recursive download (follows links)&lt;br /&gt;
-np → no parent (won’t go above the starting directory)&lt;br /&gt;
-k → convert links for local viewing&lt;br /&gt;
-p → download all page assets (images, CSS, etc.)&lt;br /&gt;
-E → save files with proper extensions (like .html)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  wget -r -np -k -p -E https://example.com&lt;/div&gt;</summary>
		<author><name>Piousbox</name></author>	</entry>

	<entry>
		<id>https://wiki.wasya.co/index.php/Aws_s3</id>
		<title>Aws s3</title>
		<link rel="alternate" type="text/html" href="https://wiki.wasya.co/index.php/Aws_s3"/>
				<updated>2026-03-28T00:43:50Z</updated>
		
		<summary type="html">&lt;p&gt;Piousbox: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== get size of bucket ==&lt;br /&gt;
&lt;br /&gt;
  aws s3 ls s3://your-bucket-name --recursive --summarize --human-readable&lt;br /&gt;
&lt;br /&gt;
== remove .DS_Store ==&lt;br /&gt;
&lt;br /&gt;
  export bucket='your-bucket-name' &lt;br /&gt;
&lt;br /&gt;
preview:&lt;br /&gt;
&lt;br /&gt;
 aws s3api list-objects-v2 \&lt;br /&gt;
  --bucket $bucket \&lt;br /&gt;
  --query &amp;quot;Contents[?contains(Key, '.DS_Store')].Key&amp;quot; &lt;br /&gt;
&lt;br /&gt;
execute:&lt;br /&gt;
&lt;br /&gt;
  aws s3api list-objects-v2 \&lt;br /&gt;
    --bucket $bucket \&lt;br /&gt;
    --query &amp;quot;Contents[?contains(Key, '.DS_Store')].Key&amp;quot; \&lt;br /&gt;
    --output text | tr '\t' '\n' | while read key; do&lt;br /&gt;
      aws s3 rm &amp;quot;s3://$bucket/$key&amp;quot;&lt;br /&gt;
    done&lt;br /&gt;
&lt;br /&gt;
== remove objects that start with ._ ==&lt;br /&gt;
&lt;br /&gt;
  export bucket='your-bucket-name'&lt;br /&gt;
&lt;br /&gt;
Preview:&lt;br /&gt;
&lt;br /&gt;
  aws s3api list-objects-v2 \&lt;br /&gt;
    --bucket $bucket \&lt;br /&gt;
    --query &amp;quot;Contents[?starts_with(Key, '._') || contains(Key, '/._')].Key&amp;quot;&lt;br /&gt;
&lt;br /&gt;
execute:&lt;br /&gt;
&lt;br /&gt;
  aws s3api list-objects-v2 \&lt;br /&gt;
    --bucket $bucket \&lt;br /&gt;
    --query &amp;quot;Contents[?starts_with(Key, '._') || contains(Key, '/._')].Key&amp;quot; \&lt;br /&gt;
    --output text | tr '\t' '\n' | while read key; do&lt;br /&gt;
      aws s3 rm &amp;quot;s3://$bucket/$key&amp;quot;&lt;br /&gt;
    done&lt;/div&gt;</summary>
		<author><name>Piousbox</name></author>	</entry>

	</feed>