{
  "version": "https://jsonfeed.org/version/1",
  "title": "Black-Pixel.Net",
  "home_page_url": "https://black-pixel.net/",
  "feed_url": "https://black-pixel.net/feed.json",
  "description": "Black-Pixel.Net",
  "favicon": "https://black-pixel.net//assets/favicon.ico",
  "expired": false,
  "author": {
    "name": "Andy",
    "url": "https://black-pixel.net/"
  },
  "items": [
    
    

    
    {
      "id": "8fb5589ede9ef2de3116b0eb011cb945f25ac135",
      "title": "Project Home Server Part 2: Initial ZFS setup for Nextcloud and Virtiofs for SMB",
      "summary": "Setting up an encrypted ZFS mirror for Nextcloud on Proxmox, including device identification, pool creation, and troubleshooting email notifications for scrub logs.",
      "content_text": "In Part 1 of this series, I covered the hardware selection and initial setup of my Proxmox home server, including the choice of a Ryzen 5 PRO 5650G with ECC RAM to ensure data integrity for my Nextcloud instance. Now that the hardware is ready, it\u0026rsquo;s time to focus on the storage layer. I decided to run Nextcloud on a dedicated ZFS mirror pool and share a data disk with backups and media via a Samba VM.\nWhy ZFS? I decided to switch to ZFS mirror for the following reasons:\nData Integrity: ZFS uses checksums to detect and correct silent data corruption, which is critical for storing irreplaceable files like photos and videos. Redundancy: A mirror (RAID 1) setup with two 4TB SSDs provides protection against disk failure. Encryption: Native encryption ensures that my data is secure at rest. Step 1: Identify Disks by WWN To ensure persistent device naming, I used the World Wide Name (WWN) of each disk. This avoids issues with device names like /dev/sda or /dev/sdb changing after a reboot.\nls -l /dev/disk/by-id/ Output:\nlrwxrwxrwx 1 root root 9 Apr 20 14:17 wwn-0x500a0751e9a33671 -\u0026gt; ../../sdb lrwxrwxrwx 1 root root 9 Apr 20 14:17 wwn-0x500a0751e9a337e0 -\u0026gt; ../../sda I chose these two 4TB SSDs (Crucial BX500) for the mirror. Using /dev/disk/by-id/ ensures that ZFS will always reference the correct physical disks, regardless of their /dev/sdX assignment.\nStep 2: Create an Encrypted ZFS Mirror Proxmox\u0026rsquo;s web GUI does not support encrypted ZFS pools, so I created the pool via the command line:\nzpool create -O encryption=on -O keylocation=prompt -O keyformat=passphrase -O mountpoint=/nextcloud_zfs_mirror -O compression=lz4 nextcloud_zfs_mirror mirror /dev/disk/by-id/wwn-0x500a0751e9a33671 /dev/disk/by-id/wwn-0x500a0751e9a337e0 Explanation of Options: Option Purpose -O encryption=on Enables native ZFS encryption. -O keylocation=prompt Prompts for a passphrase on pool import. -O keyformat=passphrase Uses a passphrase (instead of a key file) for encryption. -O mountpoint=/nextcloud_zfs_mirror Sets the default mount point for the pool. -O compression=lz4 Enables transparent compression to save space. mirror Configures the pool as a RAID 1 mirror. Note: If you prefer to use a key file instead of a passphrase, replace keylocation=prompt with keylocation=file:///etc/zfs/keys/nextcloud_zfs_mirror.key and create the key file securely.\nStep 3: Verify the ZFS Pool After creating the pool, I verified its status:\nzpool status Output:\npool: nextcloud_zfs_mirror state: ONLINE config: NAME STATE READ WRITE CKSUM nextcloud_zfs_mirror ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 wwn-0x500a0751e9a33671 ONLINE 0 0 0 wwn-0x500a0751e9a337e0 ONLINE 0 0 0 errors: No known data errors The pool is ONLINE and both disks are healthy. No errors detected.\nStep 4: Integrate the ZFS Pool into Proxmox To make the ZFS pool available as a storage backend in Proxmox:\npvesm add zfspool nextcloud_zfs_mirror --pool nextcloud_zfs_mirror This allows you to create VMs or containers that use the ZFS pool for storage. In the Proxmox GUI, the pool will appear as an option when adding a new disk to a VM.\nStep 5: Verify Available Space To check the available space in the pool:\nzfs list -o name,used,avail,quota,refquota Example Output:\nNAME USED AVAIL QUOTA REFQUOTA nextcloud_zfs_mirror 128K 3.62T - - This confirms that the pool is ready to use, with ~3.6TB of available space (after accounting for ZFS overhead and mirroring).\nStep 6: Schedule Regular Scrubs To ensure data integrity, I scheduled a monthly scrub using a cron job:\ncrontab -e\n0 3 1 * * /sbin/zpool scrub nextcloud_zfs_mirror Step 7: Init script to decrypt to pool and mount it Because the ZFS pool for Nextcloud is encrypted, I manually decrypt it after a Proxmox reboot. The following steps are required:\nzfs load-key nextcloud_zfs_mirror zfs mount nextcloud_zfs_mirror Adding External Storage to a SMB VM via Virtiofs To access files stored on a HDD via a SMB VM, I mounted the HDD on the Proxmox host and added it as a Virtiofs share:\nMount the HDD on the Proxmox host:\nmkdir -p /data_disk mount /dev/sdX1 /data_disk (Replace /dev/sdX1 with the actual device name of your external HDD.)\nAdd the directory as a Virtiofs share in Proxmox:\nNavigate to Datacenter → Storage → Add → Directory. Select the mounted directory (/data_disk) and save it as a storage location. Add Virtiofs to the VM:\nGo to the VM’s Hardware tab. Click Add → Virtiofs and select the previously created directory mapping. Install and configure Virtiofs in the VM:\nInstall the required package inside the VM: sudo apt install virtiofsd # For Debian/Ubuntu Mount the Virtiofs share inside the VM: mkdir -p /data_disk mount -t virtiofs data_disk /data_disk (Replace data_disk with the tag you assigned in Proxmox.)\nThis setup allows the VM to access the HDD as if it were a local filesystem. I also needed to change the ownership of the files to my samba share user.\n",
      "content_html": "\u003cp\u003eIn \u003ca href=\"https://black-pixel.net/posts/2026-04-18-project-proxmox-home-server-part-1-hardware-and-initial-setup/\"\u003ePart 1\u003c/a\u003e of this series, I covered the hardware selection and initial setup of my Proxmox home server, including the choice of a \u003cstrong\u003eRyzen 5 PRO 5650G\u003c/strong\u003e with ECC RAM to ensure data integrity for my Nextcloud instance. Now that the hardware is ready, it\u0026rsquo;s time to focus on the \u003cstrong\u003estorage layer\u003c/strong\u003e. I decided to run Nextcloud on a dedicated ZFS mirror pool and share a data disk with backups and media via a Samba VM.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"why-zfs\"\u003eWhy ZFS?\u003c/h2\u003e\n\u003cp\u003eI decided to switch to \u003cstrong\u003eZFS\u003c/strong\u003e mirror for the following reasons:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eData Integrity\u003c/strong\u003e: ZFS uses checksums to detect and correct silent data corruption, which is critical for storing irreplaceable files like photos and videos.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRedundancy\u003c/strong\u003e: A \u003cstrong\u003emirror (RAID 1)\u003c/strong\u003e setup with two 4TB SSDs provides protection against disk failure.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEncryption\u003c/strong\u003e: Native encryption ensures that my data is secure at rest.\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch2 id=\"step-1-identify-disks-by-wwn\"\u003eStep 1: Identify Disks by WWN\u003c/h2\u003e\n\u003cp\u003eTo ensure persistent device naming, I used the \u003cstrong\u003eWorld Wide Name (WWN)\u003c/strong\u003e of each disk. This avoids issues with device names like \u003ccode\u003e/dev/sda\u003c/code\u003e or \u003ccode\u003e/dev/sdb\u003c/code\u003e changing after a reboot.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003els -l /dev/disk/by-id/\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cstrong\u003eOutput:\u003c/strong\u003e\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003elrwxrwxrwx 1 root root  9 Apr 20 14:17 wwn-0x500a0751e9a33671 -\u0026gt; ../../sdb\nlrwxrwxrwx 1 root root  9 Apr 20 14:17 wwn-0x500a0751e9a337e0 -\u0026gt; ../../sda\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eI chose these two \u003cstrong\u003e4TB SSDs\u003c/strong\u003e (Crucial BX500) for the mirror. Using \u003ccode\u003e/dev/disk/by-id/\u003c/code\u003e ensures that ZFS will always reference the correct physical disks, regardless of their \u003ccode\u003e/dev/sdX\u003c/code\u003e assignment.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"step-2-create-an-encrypted-zfs-mirror\"\u003eStep 2: Create an Encrypted ZFS Mirror\u003c/h2\u003e\n\u003cp\u003eProxmox\u0026rsquo;s web GUI does not support encrypted ZFS pools, so I created the pool via the \u003cstrong\u003ecommand line\u003c/strong\u003e:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ezpool create -O \u003cspan style=\"color:#111\"\u003eencryption\u003c/span\u003e\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003eon -O \u003cspan style=\"color:#111\"\u003ekeylocation\u003c/span\u003e\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003eprompt -O \u003cspan style=\"color:#111\"\u003ekeyformat\u003c/span\u003e\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003epassphrase -O \u003cspan style=\"color:#111\"\u003emountpoint\u003c/span\u003e\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e/nextcloud_zfs_mirror -O \u003cspan style=\"color:#111\"\u003ecompression\u003c/span\u003e\u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003elz4 nextcloud_zfs_mirror mirror /dev/disk/by-id/wwn-0x500a0751e9a33671 /dev/disk/by-id/wwn-0x500a0751e9a337e0\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"explanation-of-options\"\u003eExplanation of Options:\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eOption\u003c/th\u003e\n\u003cth\u003ePurpose\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e-O encryption=on\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eEnables native ZFS encryption.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e-O keylocation=prompt\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003ePrompts for a passphrase on pool import.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e-O keyformat=passphrase\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eUses a passphrase (instead of a key file) for encryption.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e-O mountpoint=/nextcloud_zfs_mirror\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eSets the default mount point for the pool.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003e-O compression=lz4\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eEnables transparent compression to save space.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode\u003emirror\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eConfigures the pool as a RAID 1 mirror.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e If you prefer to use a \u003cstrong\u003ekey file\u003c/strong\u003e instead of a passphrase, replace \u003ccode\u003ekeylocation=prompt\u003c/code\u003e with \u003ccode\u003ekeylocation=file:///etc/zfs/keys/nextcloud_zfs_mirror.key\u003c/code\u003e and create the key file securely.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003chr\u003e\n\u003ch2 id=\"step-3-verify-the-zfs-pool\"\u003eStep 3: Verify the ZFS Pool\u003c/h2\u003e\n\u003cp\u003eAfter creating the pool, I verified its status:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ezpool status\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cstrong\u003eOutput:\u003c/strong\u003e\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e  pool: nextcloud_zfs_mirror\n state: ONLINE\nconfig:\n\n        NAME                        STATE     READ WRITE CKSUM\n        nextcloud_zfs_mirror        ONLINE       0     0     0\n          mirror-0                  ONLINE       0     0     0\n            wwn-0x500a0751e9a33671  ONLINE       0     0     0\n            wwn-0x500a0751e9a337e0  ONLINE       0     0     0\n\nerrors: No known data errors\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThe pool is \u003cstrong\u003eONLINE\u003c/strong\u003e and both disks are healthy. No errors detected.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"step-4-integrate-the-zfs-pool-into-proxmox\"\u003eStep 4: Integrate the ZFS Pool into Proxmox\u003c/h2\u003e\n\u003cp\u003eTo make the ZFS pool available as a storage backend in Proxmox:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003epvesm add zfspool nextcloud_zfs_mirror --pool nextcloud_zfs_mirror\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThis allows you to \u003cstrong\u003ecreate VMs or containers\u003c/strong\u003e that use the ZFS pool for storage. In the Proxmox GUI, the pool will appear as an option when adding a new disk to a VM.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"step-5-verify-available-space\"\u003eStep 5: Verify Available Space\u003c/h2\u003e\n\u003cp\u003eTo check the available space in the pool:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ezfs list -o name,used,avail,quota,refquota\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cstrong\u003eExample Output:\u003c/strong\u003e\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eNAME                     USED  AVAIL  QUOTA  REFQUOTA\nnextcloud_zfs_mirror     128K  3.62T    -        -\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThis confirms that the pool is ready to use, with \u003cstrong\u003e~3.6TB of available space\u003c/strong\u003e (after accounting for ZFS overhead and mirroring).\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"step-6-schedule-regular-scrubs\"\u003eStep 6: Schedule Regular Scrubs\u003c/h2\u003e\n\u003cp\u003eTo ensure data integrity, I scheduled a \u003cstrong\u003emonthly scrub\u003c/strong\u003e using a cron job:\u003c/p\u003e\n\u003cp\u003ecrontab -e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#ae81ff\"\u003e0\u003c/span\u003e \u003cspan style=\"color:#ae81ff\"\u003e3\u003c/span\u003e \u003cspan style=\"color:#ae81ff\"\u003e1\u003c/span\u003e * * /sbin/zpool scrub nextcloud_zfs_mirror\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch2 id=\"step-7-init-script-to-decrypt-to-pool-and-mount-it\"\u003eStep 7: Init script to decrypt to pool and mount it\u003c/h2\u003e\n\u003cp\u003eBecause the ZFS pool for Nextcloud is encrypted, I manually decrypt it after a Proxmox reboot. The following steps are required:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ezfs load-key nextcloud_zfs_mirror\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ezfs mount nextcloud_zfs_mirror\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch2 id=\"adding-external-storage-to-a-smb-vm-via-virtiofs\"\u003eAdding External Storage to a SMB VM via Virtiofs\u003c/h2\u003e\n\u003cp\u003eTo access files stored on a HDD via a SMB VM, I mounted the HDD on the Proxmox host and added it as a \u003cstrong\u003eVirtiofs\u003c/strong\u003e share:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eMount the HDD on the Proxmox host:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003emkdir -p /data_disk\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003emount /dev/sdX1 /data_disk\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cem\u003e(Replace \u003ccode\u003e/dev/sdX1\u003c/code\u003e with the actual device name of your external HDD.)\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eAdd the directory as a Virtiofs share in Proxmox:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNavigate to \u003cstrong\u003eDatacenter → Storage → Add → Directory\u003c/strong\u003e.\u003c/li\u003e\n\u003cli\u003eSelect the mounted directory (\u003ccode\u003e/data_disk\u003c/code\u003e) and save it as a storage location.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eAdd Virtiofs to the VM:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGo to the VM’s \u003cstrong\u003eHardware\u003c/strong\u003e tab.\u003c/li\u003e\n\u003cli\u003eClick \u003cstrong\u003eAdd → Virtiofs\u003c/strong\u003e and select the previously created directory mapping.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eInstall and configure Virtiofs in the VM:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eInstall the required package inside the VM:\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo apt install virtiofsd  \u003cspan style=\"color:#75715e\"\u003e# For Debian/Ubuntu\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/li\u003e\n\u003cli\u003eMount the Virtiofs share inside the VM:\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003emkdir -p /data_disk\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003emount -t virtiofs data_disk /data_disk\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cem\u003e(Replace \u003ccode\u003edata_disk\u003c/code\u003e with the tag you assigned in Proxmox.)\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eThis setup allows the VM to access the HDD as if it were a local filesystem. I also needed to change the ownership of the files to my samba share user.\u003c/p\u003e\n",
      "url": "https://black-pixel.net/posts/2026-04-18-project-proxmox-home-server-part-2-initial-zfs-setup-for-nextcloud-and-virtiofs-for-smb/",
      "date_published": "25046-25-09T40:2525:00+00:00",
      "date_modified": "25046-25-09T40:2525:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "18fe3dd3ebf9b1f05a24ba40ca0e8d242fac58bc",
      "title": "Project Proxmox Home Server Part 1: Hardware and Initial Setup",
      "summary": "Building a reliable Proxmox home server with ECC RAM, Ryzen 5 PRO, and detailed hardware verification",
      "content_text": "I\u0026rsquo;ve decided to build a more sophisticated setup for my home server to replace my existing mini PC running Proxmox and document the process in this blog. In this first post, I will dive into the hardware I have selected.\nHardware Selection Here is the hardware I have picked and what I paid for it (to cry about it later :D):\nComponent Model Price CPU AMD Ryzen 5 PRO 5650G 3.9GHz 16MB L3 334.58 € CPU Cooler be quiet! Pure Rock Slim 2 23.90 € Mainboard ASRock B550M Pro4 88.90 € RAM 2x Hynix 32GB DDR4 2933 MT/s PC4-2933Y-E UDIMM ECC 289 € each Storage 2x Crucial BX500 4TB 3D NAND SATA 2.5-Inch Internal SSD 380 € each Case Chieftec CI-02B-OP 39.90 € Power Supply be quiet! System Power 11 450W ATX3.1 49.90 € I gave my notebook a bigger SSD (Lexar EQ790 2TB SSD M.2 2280 PCIe Gen4x4 NVMe 1.4 for 230 €) and I\u0026rsquo;m using the old 1 TB SSD from my Thinkpad T14 as the system drive.\nWhy ECC RAM? I decided to use ECC RAM because I will be running Nextcloud with important personal data (photos, videos, etc.), and I want to reduce the risk of file corruption. Because of the current RAM shortage, I went with DDR4 instead of DDR5, as I could still find some more or less affordable UDIMM ECC RAM.\nFrom there, I selected a mainboard and CPU that support ECC RAM, which was not as easy as I had hoped, but I found some reports on working setups. I picked a Ryzen 5 PRO CPU because I wanted a CPU with an APU, and only the PRO versions support ECC RAM.\nAssembly Here are some pictures of the assembly:\nECC Verification I have used Memtest86 to verify the ECC RAM is correctly detected. The Pro version supports a feature to inject errors so you can test whether these errors are detected and corrected. At the time of writing, I don\u0026rsquo;t own a Pro version, and I just trust it works as intended.\nTo verify ECC in Linux I booted into Proxmox and first used dmidecode to check the hardware support:\nroot@proxmox:~# dmidecode | grep -A5 \u0026#34;Physical Memory Array\\|Memory Device\\|Error Correction Type\u0026#34; Output:\nPhysical Memory Array Location: System Board Or Motherboard Use: System Memory **Error Correction Type: Multi-bit ECC** Maximum Capacity: 128 GB Error Information Handle: 0x000F Number Of Devices: 4 Handle 0x0011, DMI type 19, 31 bytes -- **Error Correction Type: Multi-bit ECC** System Type: Unified Associativity: 8-way Set-associative Handle 0x0013, DMI type 7, 27 bytes Cache Information -- **Error Correction Type: Multi-bit ECC** System Type: Unified Associativity: 8-way Set-associative -- Memory Device Array Handle: 0x0010 Error Information Handle: 0x0016 Total Width: Unknown Data Width: Unknown Size: No Module Installed -- Memory Device Array Handle: 0x0010 Error Information Handle: 0x0018 **Total Width: 72 bits** **Data Width: 64 bits** **Size: 32 GB** -- Memory Device Array Handle: 0x0010 Error Information Handle: 0x001B Total Width: Unknown Data Width: Unknown Size: No Module Installed -- Memory Device Array Handle: 0x0010 Error Information Handle: 0x001D **Total Width: 72 bits** **Data Width: 64 bits** **Size: 32 GB** The output Error Correction Type: Multi-bit ECC confirms that the motherboard and CPU support ECC. The output Total Width: 72 bits and Data Width: 64 bits indicates that the installed RAM modules are ECC-capable, as the 72-bit width includes 64 bits for data and 8 bits for ECC parity.\nThen I used dmesg to verify Linux Kernel support:\nroot@proxmox:~# dmesg | grep -i \u0026#34;ECC\\|EDAC\\|mce\u0026#34; Output:\n[ 0.426997] **EDAC MC: Ver: 3.0.0** [ 4.507588] **MCE: In-kernel MCE decoding enabled.** [ 4.509209] **EDAC MC0: Giving out device to module amd64_edac controller F19h_M50h: DEV 0000:00:18.3 (INTERRUPT)** [ 4.509212] **EDAC amd64: F19h_M50h detected (node 0).** [ 4.509213] EDAC MC: UMC0 chip selects: [ 4.509215] **EDAC amd64: MC: 0: 0MB 1: 0MB** [ 4.509216] **EDAC amd64: MC: 2: 16384MB 3: 16384MB** [ 4.509218] EDAC MC: UMC1 chip selects: [ 4.509219] **EDAC amd64: MC: 0: 0MB 1: 0MB** [ 4.509220] **EDAC amd64: MC: 2: 16384MB 3: 16384MB** The output shows that EDAC (Error Detection and Correction) is detected and the correct driver for my CPU (F19h_M50h for AMD Ryzen 5 PRO 5650G) is loaded. Additionally, the line EDAC MC: UMC chip selects: \u0026hellip; confirms that ECC is actively monitoring the RAM for errors, meaning ECC is enabled and functional on my system.\nSetting cTDP to 45W and verifying the configuration I\u0026rsquo;ve specifically selected the AMD Ryzen 5 PRO 5650G not only because of the ECC RAM support, but also because of the ability to run it with 45W cTDP-down. To enable that I went to the BIOS and under \u0026ldquo;Advanced → AMD CBS → NBIO Common Options → SMU Common Options → System Configuration AM4\u0026rdquo; I have selected \u0026ldquo;45W COMMERCIAL and CONSUMER - SYSTEM CONFIG 2\u0026rdquo;.\nTo verify the new cTDP I booted into the Proxmox installation and built the tool RyzenAdj. You can find the build instructions on the GitHub page, it is very straightforward. After successfully building it, I have verified the new cTDP:\nroot@proxmox:~/RyzenAdj/build# ./ryzenadj --info no compatible ryzen_smu kernel module found, fallback to /dev/mem CPU Family: Cezanne SMU BIOS Interface Version: 20 Version: v0.18.0 PM Table Version: 400005 | Name | Value | Parameter | | ------------------- | ---------- | ----------------- | | STAPM LIMIT | **45.000** | stapm-limit | | STAPM VALUE | 7.644 | | | PPT LIMIT FAST | 60.800 | fast-limit | | PPT VALUE FAST | 8.366 | | | PPT LIMIT SLOW | 54.000 | slow-limit | | PPT VALUE SLOW | 6.693 | | | StapmTimeConst | 200.000 | stapm-time | | SlowPPTTimeConst | 5.000 | slow-time | | PPT LIMIT APU | 54.000 | apu-slow-limit | | PPT VALUE APU | 6.693 | | | TDC LIMIT VDD | 45.000 | vrm-current | | TDC VALUE VDD | 2.899 | | | TDC LIMIT SOC | 40.000 | vrmsoc-current | | TDC VALUE SOC | 1.142 | | | EDC LIMIT VDD | 65.000 | vrmmax-current | | EDC VALUE VDD | 65.000 | | | EDC LIMIT SOC | 60.000 | vrmsocmax-current | | EDC VALUE SOC | 2.710 | | | THM LIMIT CORE | 95.000 | tctl-temp | | THM VALUE CORE | 32.746 | | | STT LIMIT APU | 0.000 | apu-skin-temp | | STT VALUE APU | 0.000 | | | STT LIMIT dGPU | 0.000 | dgpu-skin-temp | | STT VALUE dGPU | 0.000 | | | CCLK Boost SETPOINT | 50.000 | power-saving / | | CCLK BUSY VALUE | 12.442 | max-performance | Creating USB drives for Memtest86 and Proxmox While creating the USB drives to boot Memtest86 and Proxmox, I stumbled across issues getting Memtest86 onto an old USB drive. dd, which worked fine for the Proxmox drive, for some reason got stuck and seemed to run indefinitely on the second USB drive I wanted to use for Memtest86. I suspect I was simply too impatient to wait for the sync to finish, but I found what I consider a better way using pv instead of dd with the command:\npv memtest86-usb/memtest86-usb.img -Yo /dev/sda You get a progress bar, and the data is synced to the USB drive more regularly, so when it reaches 100%, the data has actually already been written to the drive. I had tried dd with conv=fdatasync but, unlike with pv, there was no progress and I got \u0026ldquo;stuck\u0026rdquo; after all data had been copied according to the dd progress.\n",
      "content_html": "\u003cp\u003eI\u0026rsquo;ve decided to build a more sophisticated setup for my home server to replace my existing mini PC running Proxmox and document the process in this blog. In this first post, I will dive into the hardware I have selected.\u003c/p\u003e\n\u003ch2 id=\"hardware-selection\"\u003eHardware Selection\u003c/h2\u003e\n\u003cp\u003eHere is the hardware I have picked and what I paid for it (to cry about it later :D):\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eComponent\u003c/th\u003e\n\u003cth\u003eModel\u003c/th\u003e\n\u003cth style=\"text-align:right\"\u003ePrice\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eCPU\u003c/td\u003e\n\u003ctd\u003eAMD Ryzen 5 PRO 5650G 3.9GHz 16MB L3\u003c/td\u003e\n\u003ctd style=\"text-align:right\"\u003e334.58 €\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eCPU Cooler\u003c/td\u003e\n\u003ctd\u003ebe quiet! Pure Rock Slim 2\u003c/td\u003e\n\u003ctd style=\"text-align:right\"\u003e23.90 €\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMainboard\u003c/td\u003e\n\u003ctd\u003eASRock B550M Pro4\u003c/td\u003e\n\u003ctd style=\"text-align:right\"\u003e88.90 €\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eRAM\u003c/td\u003e\n\u003ctd\u003e2x Hynix 32GB DDR4 2933 MT/s PC4-2933Y-E UDIMM ECC\u003c/td\u003e\n\u003ctd style=\"text-align:right\"\u003e289 € each\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eStorage\u003c/td\u003e\n\u003ctd\u003e2x Crucial BX500 4TB 3D NAND SATA 2.5-Inch Internal SSD\u003c/td\u003e\n\u003ctd style=\"text-align:right\"\u003e380 € each\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eCase\u003c/td\u003e\n\u003ctd\u003eChieftec CI-02B-OP\u003c/td\u003e\n\u003ctd style=\"text-align:right\"\u003e39.90 €\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ePower Supply\u003c/td\u003e\n\u003ctd\u003ebe quiet! System Power 11 450W ATX3.1\u003c/td\u003e\n\u003ctd style=\"text-align:right\"\u003e49.90 €\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eI gave my notebook a bigger SSD (Lexar EQ790 2TB SSD M.2 2280 PCIe Gen4x4 NVMe 1.4 for 230 €) and I\u0026rsquo;m using the old 1 TB SSD from my Thinkpad T14 as the system drive.\u003c/p\u003e\n\u003ch2 id=\"why-ecc-ram\"\u003eWhy ECC RAM?\u003c/h2\u003e\n\u003cp\u003eI decided to use ECC RAM because I will be running Nextcloud with important personal data (photos, videos, etc.), and I want to reduce the risk of file corruption. Because of the current RAM shortage, I went with DDR4 instead of DDR5, as I could still find some more or less affordable UDIMM ECC RAM.\u003c/p\u003e\n\u003cp\u003eFrom there, I selected a mainboard and CPU that support ECC RAM, which was not as easy as I had hoped, but I found some reports on working setups. I picked a Ryzen 5 PRO CPU because I wanted a CPU with an APU, and only the PRO versions support ECC RAM.\u003c/p\u003e\n\u003ch2 id=\"assembly\"\u003eAssembly\u003c/h2\u003e\n\u003cp\u003eHere are some pictures of the assembly:\u003c/p\u003e\n\u003ca href=\"/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware1.jpg\"\u003e\n  \u003cimg src=\"/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware1.jpg\" alt=\"Assembly Step 1\" style=\"width:200px;\"/\u003e\n\u003c/a\u003e\n\u003ca href=\"/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware2.jpg\"\u003e\n  \u003cimg src=\"/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware2.jpg\" alt=\"Assembly Step 2\" style=\"width:200px;\"/\u003e\n\u003c/a\u003e\n\u003ca href=\"/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware3.jpg\"\u003e\n  \u003cimg src=\"/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware3.jpg\" alt=\"Assembly Step 3\" style=\"width:200px;\"/\u003e\n\u003c/a\u003e\n\u003ca href=\"/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware4.jpg\"\u003e\n  \u003cimg src=\"/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware4.jpg\" alt=\"Assembly Step 4\" style=\"width:200px;\"/\u003e\n\u003c/a\u003e\n\u003ca href=\"/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware5.jpg\"\u003e\n  \u003cimg src=\"/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware5.jpg\" alt=\"Assembly Step 5\" style=\"width:200px;\"/\u003e\n\u003c/a\u003e\n\u003ca href=\"/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware6.jpg\"\u003e\n  \u003cimg src=\"/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware6.jpg\" alt=\"Assembly Step 6\" style=\"width:200px;\"/\u003e\n\u003c/a\u003e\n\u003ca href=\"/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware7.jpg\"\u003e\n  \u003cimg src=\"/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware7.jpg\" alt=\"Assembly Step 7\" style=\"width:200px;\"/\u003e\n\u003c/a\u003e\n\u003ch2 id=\"ecc-verification\"\u003eECC Verification\u003c/h2\u003e\n\u003cp\u003eI have used Memtest86 to verify the ECC RAM is correctly detected. The Pro version supports a feature to inject errors so you can test whether these errors are detected and corrected. At the time of writing, I don\u0026rsquo;t own a Pro version, and I just trust it works as intended.\u003c/p\u003e\n\u003cp\u003eTo verify ECC in Linux I booted into Proxmox and first used \u003ccode\u003edmidecode\u003c/code\u003e to check the hardware support:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eroot@proxmox:~# dmidecode \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e grep -A5 \u003cspan style=\"color:#d88200\"\u003e\u0026#34;Physical Memory Array\\|Memory Device\\|Error Correction Type\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eOutput:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ePhysical Memory Array\n        Location: System Board Or Motherboard\n        Use: System Memory\n        **Error Correction Type: Multi-bit ECC**\n        Maximum Capacity: 128 GB\n        Error Information Handle: 0x000F\n        Number Of Devices: 4\n\nHandle 0x0011, DMI type 19, 31 bytes\n--\n        **Error Correction Type: Multi-bit ECC**\n        System Type: Unified\n        Associativity: 8-way Set-associative\n\nHandle 0x0013, DMI type 7, 27 bytes\nCache Information\n--\n        **Error Correction Type: Multi-bit ECC**\n        System Type: Unified\n        Associativity: 8-way Set-associative\n\n--\nMemory Device\n        Array Handle: 0x0010\n        Error Information Handle: 0x0016\n        Total Width: Unknown\n        Data Width: Unknown\n        Size: No Module Installed\n--\nMemory Device\n        Array Handle: 0x0010\n        Error Information Handle: 0x0018\n        **Total Width: 72 bits**\n        **Data Width: 64 bits**\n        **Size: 32 GB**\n--\nMemory Device\n        Array Handle: 0x0010\n        Error Information Handle: 0x001B\n        Total Width: Unknown\n        Data Width: Unknown\n        Size: No Module Installed\n--\nMemory Device\n        Array Handle: 0x0010\n        Error Information Handle: 0x001D\n        **Total Width: 72 bits**\n        **Data Width: 64 bits**\n        **Size: 32 GB**\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThe output \u003cstrong\u003eError Correction Type: Multi-bit ECC\u003c/strong\u003e confirms that the motherboard and CPU support ECC. The output \u003cstrong\u003eTotal Width: 72 bits\u003c/strong\u003e and \u003cstrong\u003eData Width: 64 bits\u003c/strong\u003e indicates that the installed RAM modules are ECC-capable, as the 72-bit width includes 64 bits for data and 8 bits for ECC parity.\u003c/p\u003e\n\u003cp\u003eThen I used \u003ccode\u003edmesg\u003c/code\u003e to verify Linux Kernel support:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eroot@proxmox:~# dmesg \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e grep -i \u003cspan style=\"color:#d88200\"\u003e\u0026#34;ECC\\|EDAC\\|mce\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eOutput:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e[    0.426997] **EDAC MC: Ver: 3.0.0**\n[    4.507588] **MCE: In-kernel MCE decoding enabled.**\n[    4.509209] **EDAC MC0: Giving out device to module amd64_edac controller F19h_M50h: DEV 0000:00:18.3 (INTERRUPT)**\n[    4.509212] **EDAC amd64: F19h_M50h detected (node 0).**\n[    4.509213] EDAC MC: UMC0 chip selects:\n[    4.509215] **EDAC amd64: MC: 0:     0MB 1:     0MB**\n[    4.509216] **EDAC amd64: MC: 2: 16384MB 3: 16384MB**\n[    4.509218] EDAC MC: UMC1 chip selects:\n[    4.509219] **EDAC amd64: MC: 0:     0MB 1:     0MB**\n[    4.509220] **EDAC amd64: MC: 2: 16384MB 3: 16384MB**\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThe output shows that \u003cstrong\u003eEDAC (Error Detection and Correction) is detected\u003c/strong\u003e and the correct driver for my CPU (\u003cstrong\u003eF19h_M50h\u003c/strong\u003e for AMD Ryzen 5 PRO 5650G) is loaded. Additionally, the line \u003cstrong\u003eEDAC MC: UMC chip selects: \u0026hellip;\u003c/strong\u003e confirms that ECC is actively monitoring the RAM for errors, meaning \u003cstrong\u003eECC is enabled and functional\u003c/strong\u003e on my system.\u003c/p\u003e\n\u003ch3 id=\"setting-ctdp-to-45w-and-verifying-the-configuration\"\u003eSetting cTDP to 45W and verifying the configuration\u003c/h3\u003e\n\u003cp\u003eI\u0026rsquo;ve specifically selected the AMD Ryzen 5 PRO 5650G not only because of the ECC RAM support, but also because of the ability to run it with 45W cTDP-down. To enable that I went to the BIOS and under \u0026ldquo;Advanced → AMD CBS → NBIO Common Options → SMU Common Options → System Configuration AM4\u0026rdquo; I have selected \u0026ldquo;45W COMMERCIAL and CONSUMER - SYSTEM CONFIG 2\u0026rdquo;.\u003c/p\u003e\n\u003cp\u003eTo verify the new cTDP I booted into the Proxmox installation and built the tool \u003ca href=\"https://github.com/FlyGoat/RyzenAdj\"\u003eRyzenAdj\u003c/a\u003e. You can find the build instructions on the GitHub page, it is very straightforward. After successfully building it, I have verified the new cTDP:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eroot@proxmox:~/RyzenAdj/build# ./ryzenadj --info\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eno compatible ryzen_smu kernel module found, fallback to /dev/mem\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eCPU Family: Cezanne\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eSMU BIOS Interface Version: \u003cspan style=\"color:#ae81ff\"\u003e20\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eVersion: v0.18.0\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ePM Table Version: \u003cspan style=\"color:#ae81ff\"\u003e400005\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e Name                \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e Value      \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e Parameter         \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e ------------------- \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e ---------- \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e ----------------- \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e STAPM LIMIT         \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e **45.000** \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e stapm-limit       \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e STAPM VALUE         \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 7.644      \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e                   \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e PPT LIMIT FAST      \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 60.800     \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e fast-limit        \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e PPT VALUE FAST      \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 8.366      \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e                   \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e PPT LIMIT SLOW      \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 54.000     \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e slow-limit        \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e PPT VALUE SLOW      \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 6.693      \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e                   \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e StapmTimeConst      \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 200.000    \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e stapm-time        \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e SlowPPTTimeConst    \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 5.000      \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e slow-time         \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e PPT LIMIT APU       \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 54.000     \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e apu-slow-limit    \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e PPT VALUE APU       \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 6.693      \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e                   \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e TDC LIMIT VDD       \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 45.000     \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e vrm-current       \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e TDC VALUE VDD       \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 2.899      \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e                   \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e TDC LIMIT SOC       \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 40.000     \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e vrmsoc-current    \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e TDC VALUE SOC       \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 1.142      \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e                   \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e EDC LIMIT VDD       \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 65.000     \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e vrmmax-current    \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e EDC VALUE VDD       \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 65.000     \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e                   \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e EDC LIMIT SOC       \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 60.000     \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e vrmsocmax-current \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e EDC VALUE SOC       \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 2.710      \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e                   \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e THM LIMIT CORE      \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 95.000     \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e tctl-temp         \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e THM VALUE CORE      \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 32.746     \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e                   \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e STT LIMIT APU       \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 0.000      \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e apu-skin-temp     \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e STT VALUE APU       \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 0.000      \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e                   \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e STT LIMIT dGPU      \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 0.000      \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e dgpu-skin-temp    \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e STT VALUE dGPU      \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 0.000      \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e                   \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e CCLK Boost SETPOINT \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 50.000     \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e power-saving /    \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e CCLK BUSY VALUE     \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e 12.442     \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e max-performance   \u003cspan style=\"color:#111\"\u003e|\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"creating-usb-drives-for-memtest86-and-proxmox\"\u003eCreating USB drives for Memtest86 and Proxmox\u003c/h2\u003e\n\u003cp\u003eWhile creating the USB drives to boot Memtest86 and Proxmox, I stumbled across issues getting Memtest86 onto an old USB drive. \u003ccode\u003edd\u003c/code\u003e, which worked fine for the Proxmox drive, for some reason got stuck and seemed to run indefinitely on the second USB drive I wanted to use for Memtest86. I suspect I was simply too impatient to wait for the sync to finish, but I found what I consider a better way using \u003ccode\u003epv\u003c/code\u003e instead of \u003ccode\u003edd\u003c/code\u003e with the command:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003epv memtest86-usb/memtest86-usb.img -Yo /dev/sda\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eYou get a progress bar, and the data is synced to the USB drive more regularly, so when it reaches 100%, the data has actually already been written to the drive. I had tried \u003ccode\u003edd\u003c/code\u003e with \u003ccode\u003econv=fdatasync\u003c/code\u003e but, unlike with \u003ccode\u003epv\u003c/code\u003e, there was no progress and I got \u0026ldquo;stuck\u0026rdquo; after all data had been copied according to the \u003ccode\u003edd\u003c/code\u003e progress.\u003c/p\u003e\n",
      "url": "https://black-pixel.net/posts/2026-04-18-project-proxmox-home-server-part-1-hardware-and-initial-setup/",
      "date_published": "18046-18-09T40:1818:00+00:00",
      "date_modified": "18046-18-09T40:1818:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "af746ecb21d116c8ef33c3938421a790c6da869b",
      "title": "Home Network Segmentation with Openwrt",
      "summary": "",
      "content_text": "Outline The aim of this post is to show/document how to configure a simple network segmentation using OpenWRT and untagged VLANs. I\u0026rsquo;m using an OpenWRT router as well as two simple unmanaged switches. One switch is used for an \u0026ldquo;IOT\u0026rdquo; VLAN containing a FireTV Stick and a Hue Bridge. The other switch is used for a \u0026ldquo;SERVICES\u0026rdquo; VLAN containing my local DNS server (Pi-hole) and my NAS. One of the remaining four ports of the router will be bridged with the WiFi and the bridge will be assigned to a \u0026ldquo;WiFi\u0026rdquo; VLAN containing my Chromcast Ultra (attached to the LAN port), my Stadia Gamepad and my Smartphone. The the last port of the routed will be assigned to a \u0026ldquo;lan\u0026rdquo; VLAN for my notebook/docking station. Figure 1 displays this setup with different colors for each VLAN.\nFigure 1: Network architecture with different colors for each VLAN. Configure VLANs The first step is to configure the VLANs. Go to Network-\u0026gt;Switch to configure your desired VLANs. First off make sure that \u0026ldquo;Enable VLAN functionality\u0026rdquo; is checked. In the VLAN matrix, the first column (CPU (eth0)) should be left to tagged (default). All other elements should be set to \u0026ldquo;off\u0026rdquo; except for the VLANs you want your respective ports to be in. In my example, VLAN ID 1 is on LAN port 1, this is the \u0026ldquo;lan\u0026rdquo; VLAN for my notebook. VLAN 2 is the VLAN for the WAN port. VLAN 13 is my \u0026ldquo;IOT\u0026rdquo; VLAN and assigned to LAN port 3. VLAN 23 is the VLAN I want to use for WiFi as well as for LAN port 2. A device plugged in to LAN port 2 will be in the same VLAN as the devices that are connected via WiFi. If you want a VLAN just for WiFi you can set everything (except CPU (eth0)) to \u0026ldquo;off\u0026rdquo;. VLAN 33 is the \u0026ldquo;SERVICES\u0026rdquo; VLAN for my internal services (DNS, NAS, \u0026hellip;). I am using untagged VLANs because I only have unmanaged switches attached to the LAN ports which don\u0026rsquo;t support tagged VLANs. This means the distinction between the VLANs happens on the router only, the devices attached to the ports will know nothing of the VLANs. Figure 2 shows my configuration.\nFigure 2: VLAN configuration in Network-\u0026gt;Switch menu. Configure Firewall Zones After you have created your VLANs, you need to create firewall zones. Each VLAN needs to have its own firewall zone. In Network-\u0026gt;Firewall add a zone for each VLAN. In my example, the VLAN \u0026ldquo;lan\u0026rdquo; is my trusted internal VLAN. It has a configured forwarding to the \u0026ldquo;WAN\u0026rdquo; zone which means all outgoing (to the Internet) communication is forwarded through the \u0026ldquo;wan\u0026rdquo; zone. It\u0026rsquo;s Input chain is set to \u0026ldquo;accept\u0026rdquo; so it can talk to OpenWRT on any port. \u0026ldquo;IOT_LAN\u0026rdquo;, \u0026ldquo;SERVICES\u0026rdquo; and \u0026ldquo;WIFI\u0026rdquo; are untrusted and are by default rejected, which means connections to the Internet are not automatically forwarded and systems in these VLANs will by default not be able to send packets to the Internet. Their input chain is set to rejected which means they are also by default not allowed to send packets to the OpenWRT device. Figure 3 shows my firewall zone configuration.\nFigure 3: My firewall zone configuration. Explanation of Zone=\u0026gt;Forwardings, Input, Output and Forward Zone=\u0026gt;Forwardings - Traffic forwarding from zone a to zone b Input - Traffic to the router from the current zone (used for dns/dhcp, openwrt webinterface, ssh, \u0026hellip;) Output - Traffic to the current zone from the router Forward - Traffic between networks in the current zone (only relevant if you have multiple networks within one zone, not relevant in our use case) Configure Interfaces Next configure your network interfaces. I have one interface per switch port and in case of LAN port 2 I have added a bridge device (see [Configure WIFI bridge](##Configure WIFI bridge)). I will not be going into interface configuration details, just configure them according to your needs and assign the firewall zones. Figure 4 shows how to assign the firewall zone to the network interface. Figure 5 shows my network interfaces configuration.\nFigure 4: Assign firewall zone to network interface. Figure 5: My network interfaces configuration. Configure WIFI bridge device If you want to connect LAN port 2 to WiFi you need to create a bridge device. You can do this if you go to Network-\u0026gt;Interfaces and select the tab \u0026ldquo;devices\u0026rdquo;. Click on \u0026ldquo;Add device configuration\u0026hellip;\u0026rdquo; and create a bridge as shown in figure 6.\nFigure 6: Create a WiFi bridge device. Apply traffic rules In the previous steps we have created the basic firewall zones. In this state none of the newly configured VLANs are be able to talk to each other or the router and only the VLAN \u0026ldquo;lan\u0026rdquo; is allowed to talk to \u0026ldquo;WAN\u0026rdquo; (and therefore the Internet) and the router.\nTo configure specific traffic forwarding rules between the VLANs, go to the \u0026ldquo;Traffic Rules\u0026rdquo; tab in Network-\u0026gt;Firewall. In this tab you can configure exceptions for all the traffic you want to explicitly forward.\nTraffic to the router First you need to allow essential traffic from your untrusted VLANs to the router. Which ports you need is depending on your setup, for my setup only DNS and DHCP is required. Figure 7 shows my configuration.\nFigure 7: Forward DNS and DHCP traffic from untrusted zones to the router. Traffic to WAN/the Internet Next, to allow basic communication to the internet, your need to configure forwardings to the \u0026ldquo;WAN\u0026rdquo; VLAN. In my use case I only require HTTP and HTTPs. Figure 8 shows my configuration.\nFigure 8: Forward HTTP and HTTPs traffic from untrusted zones to WAN/the Internet. The Pi-hole needs to be able to access DNS servers so you need to create a custom traffic forwarding for port 53 to WAN. Figure 9 shows this configuration. Figure 9: Forward DNS traffic from the Pi-hole to WAN on port 53. Custom ports for WiFi end devices My smartphone tunnels all traffic through a SOCKS5 proxy using Netguard therefore I need a custom forwarding for that (which is also why I don\u0026rsquo;t need general forwardings for SMTP and IMAP from WiFi to WAN). My Laptop connects to the Internet using a VPN tunnel so I need a custom forwarding for VPN for when my Laptop is connected to the WiFi. Figure 10 shows this configuration.\nFigure 10: Forward SOCKS5 traffic from the smartphone to a SOCKS5 server and foward VPN traffic from the notebook (WiFi) to a VPN server. Individual forwardings between VLANs Finally you need to configure your other individual forwardings between the VLANs according to your use cases. For the pi-hole to work properly, every zone needs a forwarding to the pi-hole on port 53 (Figure 11). To manage the Pi-hole and the NAS via SSH you need to forward traffic for port 22/tcp (Figure 12). Another important configuration is the forwarding of traffic from my smartphone to the Hue Bridge so I can control the lights (Figure 13).\nFigure 11: Forward DNS traffic from internal zones to the Pi-hole. Figure 12: Forward SSH traffic from the laptop to the Pi-hole and NAS. Figure 13: Forward traffic from smartphone to Hue Bridge on port 80/tcp. That\u0026rsquo;s it.\n",
      "content_html": "\u003ch2 id=\"outline\"\u003eOutline\u003c/h2\u003e\n\u003cp\u003eThe aim of this post is to show/document how to configure a simple network segmentation using OpenWRT and untagged VLANs. I\u0026rsquo;m using an OpenWRT router as well as two simple unmanaged switches. One switch is used for an \u0026ldquo;IOT\u0026rdquo; VLAN containing a FireTV Stick and a Hue Bridge. The other switch is used for a \u0026ldquo;SERVICES\u0026rdquo; VLAN containing my local DNS server (Pi-hole) and my NAS. One of the remaining four ports of the router will be bridged with the WiFi and the bridge will be assigned to a \u0026ldquo;WiFi\u0026rdquo; VLAN containing my Chromcast Ultra (attached to the LAN port), my Stadia Gamepad and my Smartphone. The the last port of the routed will be assigned to a \u0026ldquo;lan\u0026rdquo; VLAN for my notebook/docking station. \u003cstrong\u003eFigure 1\u003c/strong\u003e displays this setup with different colors for each VLAN.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"../images/2022-02-06-home-network-segmentation-with-openwrt/netzplan.png\"\n  alt=\"Switch VLAN configuration\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eFigure 1: Network architecture with different colors for each VLAN.\n\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"configure-vlans\"\u003eConfigure VLANs\u003c/h2\u003e\n\u003cp\u003eThe first step is to configure the VLANs. Go to Network-\u0026gt;Switch to configure your desired VLANs. First off make sure that \u0026ldquo;Enable VLAN functionality\u0026rdquo; is checked. In the VLAN matrix, the first column (CPU (eth0)) should be left to tagged (default).  All other elements should be set to \u0026ldquo;off\u0026rdquo; except for the VLANs you want your respective ports to be in. In my example, VLAN ID 1 is on LAN port 1, this is the \u0026ldquo;lan\u0026rdquo; VLAN for my notebook. VLAN 2 is the VLAN for the WAN port. VLAN 13 is my \u0026ldquo;IOT\u0026rdquo; VLAN and assigned to LAN port 3. VLAN 23 is the VLAN I want to use for WiFi as well as for LAN port 2. A device plugged in to LAN port 2 will be in the same VLAN as the devices that are connected via WiFi. If you want a VLAN just for WiFi you can set everything (except CPU (eth0)) to \u0026ldquo;off\u0026rdquo;. VLAN 33 is the \u0026ldquo;SERVICES\u0026rdquo; VLAN for my internal services (DNS, NAS, \u0026hellip;). I am using untagged VLANs because I only have unmanaged switches attached to the LAN ports which don\u0026rsquo;t support tagged VLANs. This means the distinction between the VLANs happens on the router only, the devices attached to the ports will know nothing of the VLANs. \u003cstrong\u003eFigure 2\u003c/strong\u003e shows my configuration.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"../images/2022-02-06-home-network-segmentation-with-openwrt/switch_vlan_configuration.png\"\n  alt=\"Switch VLAN configuration\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eFigure 2: VLAN configuration in Network-\u0026gt;Switch menu.\n\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"configure-firewall-zones\"\u003eConfigure Firewall Zones\u003c/h2\u003e\n\u003cp\u003eAfter you have created your VLANs, you need to create firewall zones. Each VLAN needs to have its own firewall zone. In Network-\u0026gt;Firewall add a zone for each VLAN. In my example, the VLAN \u0026ldquo;lan\u0026rdquo; is my trusted internal VLAN. It has a configured forwarding to the \u0026ldquo;WAN\u0026rdquo; zone which means all outgoing (to the Internet) communication is forwarded through the \u0026ldquo;wan\u0026rdquo; zone. It\u0026rsquo;s Input chain is set to \u0026ldquo;accept\u0026rdquo; so it can talk to OpenWRT on any port.  \u0026ldquo;IOT_LAN\u0026rdquo;, \u0026ldquo;SERVICES\u0026rdquo; and \u0026ldquo;WIFI\u0026rdquo; are untrusted and are by default rejected, which means connections to the Internet are not automatically forwarded and systems in these VLANs will by default not be able to send packets to the Internet. Their input chain is set to rejected which means they are also by default not allowed to send packets to the OpenWRT device. \u003cstrong\u003eFigure 3\u003c/strong\u003e shows my firewall zone configuration.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"../images/2022-02-06-home-network-segmentation-with-openwrt/firewall_zones_v2.png\"\n  alt=\"Firewall zone configuration\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eFigure 3: My firewall zone configuration.\n\u003c/code\u003e\u003c/pre\u003e\u003ch3 id=\"explanation-of-zoneforwardings-input-output-and-forward\"\u003eExplanation of Zone=\u0026gt;Forwardings, Input, Output and Forward\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eZone=\u0026gt;Forwardings\u003c/strong\u003e - Traffic forwarding from zone a to zone b\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eInput\u003c/strong\u003e - Traffic to the router from the current zone (used for dns/dhcp, openwrt webinterface, ssh, \u0026hellip;)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eOutput\u003c/strong\u003e - Traffic to the current zone from the router\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eForward\u003c/strong\u003e - Traffic between networks in the current zone (only relevant if you have multiple networks within one zone, not relevant in our use case)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"configure-interfaces\"\u003eConfigure Interfaces\u003c/h2\u003e\n\u003cp\u003eNext configure your network interfaces. I have one interface per switch port and in case of LAN port 2 I have added a bridge device (see [Configure WIFI bridge](##Configure WIFI bridge)). I will not be going into interface configuration details, just configure them according to your needs and assign the firewall zones. \u003cstrong\u003eFigure 4\u003c/strong\u003e shows how to assign the firewall zone to the network interface. \u003cstrong\u003eFigure 5\u003c/strong\u003e shows my network interfaces configuration.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"../images/2022-02-06-home-network-segmentation-with-openwrt/assign_zone_to_interface.png\"\n  alt=\"Assign firewall zone to network interface\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eFigure 4: Assign firewall zone to network interface.\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e\u003cimg\n  src=\"../images/2022-02-06-home-network-segmentation-with-openwrt/interfaces.png\"\n  alt=\"Interfaces\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eFigure 5: My network interfaces configuration.\n\u003c/code\u003e\u003c/pre\u003e\u003ch3 id=\"configure-wifi-bridge-device\"\u003eConfigure WIFI bridge device\u003c/h3\u003e\n\u003cp\u003eIf you want to connect LAN port 2 to WiFi you need to create a bridge device. You can do this if you go to Network-\u0026gt;Interfaces and select the tab \u0026ldquo;devices\u0026rdquo;. Click on \u0026ldquo;Add device configuration\u0026hellip;\u0026rdquo; and create a bridge as shown in \u003cstrong\u003efigure 6\u003c/strong\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"../images/2022-02-06-home-network-segmentation-with-openwrt/wifi_bridge_device.png\"\n  alt=\"WiFi bridge device\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eFigure 6: Create a WiFi bridge device.\n\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"apply-traffic-rules\"\u003eApply traffic rules\u003c/h2\u003e\n\u003cp\u003eIn the previous steps we have created the basic firewall zones. In this state none of the newly configured VLANs are be able to talk to each other or the router and only the VLAN \u0026ldquo;lan\u0026rdquo; is allowed to talk to \u0026ldquo;WAN\u0026rdquo; (and therefore the Internet) and the router.\u003c/p\u003e\n\u003cp\u003eTo configure specific traffic forwarding rules between the VLANs, go to the \u0026ldquo;Traffic Rules\u0026rdquo; tab in Network-\u0026gt;Firewall. In this tab you can configure exceptions for all the traffic you want to explicitly forward.\u003c/p\u003e\n\u003ch3 id=\"traffic-to-the-router\"\u003eTraffic to the router\u003c/h3\u003e\n\u003cp\u003eFirst you need to allow essential traffic from your untrusted VLANs to the router. Which ports you need is depending on your setup, for my setup only DNS and DHCP is required. \u003cstrong\u003eFigure 7\u003c/strong\u003e shows my configuration.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"../images/2022-02-06-home-network-segmentation-with-openwrt/traffic_forwarding_untrusted_router.png\"\n  alt=\"Traffic forwarding from untrusted VLANs to router\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eFigure 7: Forward DNS and DHCP traffic from untrusted zones to the router.\n\u003c/code\u003e\u003c/pre\u003e\u003ch3 id=\"traffic-to-wanthe-internet\"\u003eTraffic to WAN/the Internet\u003c/h3\u003e\n\u003cp\u003eNext, to allow basic communication to the internet, your need to configure forwardings to the \u0026ldquo;WAN\u0026rdquo; VLAN. In my use case I only require HTTP and HTTPs. \u003cstrong\u003eFigure 8\u003c/strong\u003e shows my configuration.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"../images/2022-02-06-home-network-segmentation-with-openwrt/traffic_forwarding_untrusted_wan.png\"\n  alt=\"Traffic forwarding from untrusted VLANs to WAN\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eFigure 8: Forward HTTP and HTTPs traffic from untrusted zones to WAN/the Internet.\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThe Pi-hole needs to be able to access DNS servers so you need to create a custom traffic forwarding for port 53 to WAN. \u003cstrong\u003eFigure 9\u003c/strong\u003e shows this configuration.\n\u003cimg\n  src=\"../images/2022-02-06-home-network-segmentation-with-openwrt/traffic_fowarding_pi-hole_dns.png\"\n  alt=\"Traffic forwarding from Pi-hole to WAN on port 53\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eFigure 9: Forward DNS traffic from the Pi-hole to WAN on port 53.\n\u003c/code\u003e\u003c/pre\u003e\u003ch4 id=\"custom-ports-for-wifi-end-devices\"\u003eCustom ports for WiFi end devices\u003c/h4\u003e\n\u003cp\u003eMy smartphone tunnels all traffic through a SOCKS5 proxy using Netguard therefore I need a custom forwarding for that (which is also why I don\u0026rsquo;t need general forwardings for SMTP and IMAP from WiFi to WAN). My Laptop connects to the Internet using a VPN tunnel so I need a custom forwarding for VPN for when my Laptop is connected to the WiFi. \u003cstrong\u003eFigure 10\u003c/strong\u003e shows this configuration.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"../images/2022-02-06-home-network-segmentation-with-openwrt/traffic_forwarding_enddevices_wan.png\"\n  alt=\"Traffic forwarding from WiFi end devices to SOCKS5 and VPN\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eFigure 10: Forward SOCKS5 traffic from the smartphone to a SOCKS5 server and foward VPN traffic from the notebook (WiFi) to a VPN server.\n\u003c/code\u003e\u003c/pre\u003e\u003ch3 id=\"individual-forwardings-between-vlans\"\u003eIndividual forwardings between VLANs\u003c/h3\u003e\n\u003cp\u003eFinally you need to configure your other individual forwardings between the VLANs according to your use cases. For the pi-hole to work properly, every zone needs a forwarding to the pi-hole on port 53 (\u003cstrong\u003eFigure 11\u003c/strong\u003e). To manage the Pi-hole and the NAS via SSH you need to forward traffic for port 22/tcp (\u003cstrong\u003eFigure 12\u003c/strong\u003e). Another important configuration is the forwarding of traffic from my smartphone to the Hue Bridge so I can control the lights (\u003cstrong\u003eFigure 13\u003c/strong\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"../images/2022-02-06-home-network-segmentation-with-openwrt/traffic_forwarding_pihole_dns.png\"\n  alt=\"dns forwarding to pihole\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eFigure 11: Forward DNS traffic from internal zones to the Pi-hole.\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e\u003cimg\n  src=\"../images/2022-02-06-home-network-segmentation-with-openwrt/traffic_forwarding_laptop_ssh.png\"\n  alt=\"dns forwarding to pihole\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eFigure 12: Forward SSH traffic from the laptop to the Pi-hole and NAS.\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e\u003cimg\n  src=\"../images/2022-02-06-home-network-segmentation-with-openwrt/s10e_hue.png\"\n  alt=\"Forwarding traffic from smartphone to Hue bridge\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eFigure 13: Forward traffic from smartphone to Hue Bridge on port 80/tcp.\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThat\u0026rsquo;s it.\u003c/p\u003e\n",
      "url": "https://black-pixel.net/posts/2022-02-06-home-network-segmentation-with-openwrt/",
      "date_published": "6026-06-09T251:66:00+01:00",
      "date_modified": "6026-06-09T251:66:00+01:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "b5493ca2b2ae82bceba960b56c65b316b8ea5ec5",
      "title": "A_fresh_start",
      "summary": "",
      "content_text": "So once again I have restarted this page with a new design and new content. Right now I\u0026rsquo;m mostly concerned about having a landing page for people who happen to stumble across my domain. I\u0026rsquo;m still not really keen on starting to blog again right now but who knows, maybe that will change. Due to the whole COVID-19 situation there is not much going on right now. As a result I spend most of my free time working out at home and playing darts. I also try to learn new things like learning to speak Spanish and to play the ukulele.\nSo long.\n",
      "content_html": "\u003cp\u003eSo once again I have restarted this page with a new design and new content. Right now I\u0026rsquo;m mostly concerned about having a landing page for people who happen to stumble across my domain. I\u0026rsquo;m still not really keen on starting to blog again right now but who knows, maybe that will change. Due to the whole COVID-19 situation there is not much going on right now. As a result I spend most of my free time working out at home and playing darts. I also try to learn new things like learning to speak Spanish and to play the ukulele.\u003c/p\u003e\n\u003cp\u003eSo long.\u003c/p\u003e\n",
      "url": "https://black-pixel.net/posts/2020-05-10-a_fresh_start/",
      "date_published": "10056-10-09T534:1010:00+02:00",
      "date_modified": "10056-10-09T534:1010:00+02:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "cea5663f26a9d5620fcd4512ba9af3d96bd0d24f",
      "title": "Multilingual, Multi Domain Site with MODX Revolution CMS",
      "summary": "",
      "content_text": "In this post I’m going to show you how to set up a multilingual, multi domain site with MODX Revolution CMS. There are several ways to do this. What I’m going to do in this tutorial is create separate pages inside of MODX using Contexts for every language and then map the domains accordingly.\nwww.example.com will lead you to the English context and www.example.de to the German context.\nAs a first step go to System/Contexts and create a new Context for your second language, in this example it’s de for German. I’m going to use the default web Context for the English page.\n[1]\nNext create a new Page for the Context by right clicking on de and selecting Quick Create/Document and write something language specific in it so you know that you are on the correct site later.\n[2]\nNow right click on the de Context and select Update Context.\n[3]\nCreate the following settings for the Context:\nKey: site_start\nName: Site Start\nValue: 2\n2 is the ID of the start page for this Context.\nKey: site_url\nName: Site URL\nValue: http://example.de/\nor http://www.example.de/ depending on which of the two you prefer.\nImportant: There is a little mistake in the image, you need a backslash at the end of the domain, else you might run into problems later on.\nKey: cultureKey\nName: Culture Key\nValue: de\n[4] [5] [6]\nDo the same for the web Context with the corresponding values (1, example.com, en). You don’t necessarily have to set a site_start ID for the default Context web because that is set in the System/System Settings but I’d still do it for consistency.\nOnce this is done you have to create a gateway plugin that redirects your visitors to the correct site. Select the Elements tab on the left, right-click on Plugins and select New Plugin.\n[7]\nName it whatever you like but I’d suggest gateway plugin. Now enter the following code with your domains:\n\u0026lt;?php if($modx-\u0026gt;context-\u0026gt;get(\u0026#39;key\u0026#39;) != \u0026#34;mgr\u0026#34;){ //grab the current domain from the http_host option switch ($modx-\u0026gt;getOption(\u0026#39;http_host\u0026#39;)) { case \u0026#39;example.de\u0026#39;: case \u0026#39;www.example.de\u0026#39;: $modx-\u0026gt;switchContext(\u0026#39;de\u0026#39;); $modx-\u0026gt;setOption(\u0026#39;cultureKey\u0026#39;, \u0026#39;de\u0026#39;); break; default: // Set the default language/context here $modx-\u0026gt;switchContext(\u0026#39;web\u0026#39;); $modx-\u0026gt;setOption(\u0026#39;cultureKey\u0026#39;, \u0026#39;en\u0026#39;); break; } } After that click on the System Events tab and select OnHandleRequest.\nNow your domains should show the correct pages.\nThe last thing I’m going to show you is how to automatically generate the navigation and language switching menu.\nTo achieve this you have to install two extras. Go to System/Package Management and install the following plugins:\nWayfinder – This extra will generate the navigation.\nBabel – This extra will create the language switching menu.\nDon’t forget to install the extras after you’ve downloaded them.\nInsert your context names in the Setup Options popup from the Babel extra:\n[8]\nNow edit the home pages of your Contexts, you will notice a new interface on the top right. Link all homepages with their respective IDs. In this example I put the ID of the German home page into the German (de) tab of the English home page and vice versa.\n[9]\nAlright, just one more thing to do. Edit your template, you can find the default template by clicking on the Elements tab on the left and selecting Templates/BaseTemplate.\nTo show the navigation menu, all you need to do is add:\n[[Wayfinder? \u0026amp;startId=`0`\u0026amp;level=`1`]]\nTo show the language switching menu add:\n[[!BabelLinks]]\nA complete example:\n\u0026lt;!DOCTYPE html\u0026gt; \u0026lt;html xmlns=\u0026#34;http://www.w3.org/1999/xhtml\u0026#34;\u0026gt; \u0026lt;head\u0026gt; \u0026lt;title\u0026gt;[[++site_name]] - [[*pagetitle]]\u0026lt;/title\u0026gt; \u0026lt;base href=\u0026#34;[[++site_url]]\u0026#34; /\u0026gt; \u0026lt;/head\u0026gt; \u0026lt;body\u0026gt; \u0026lt;header\u0026gt; \u0026lt;nav\u0026gt; [[Wayfinder? \u0026amp;startId=`0`\u0026amp;level=`1`]] \u0026lt;/nav\u0026gt; \u0026lt;/header\u0026gt; \u0026lt;div id=\u0026#34;language\u0026#34;\u0026gt; \u0026lt;!-- Per default, Babel only includes \u0026lt;li\u0026gt; tags which are not XHTML compliant on thier own --\u0026gt; \u0026lt;ul\u0026gt;[[!BabelLinks]]\u0026lt;/ul\u0026gt; \u0026lt;/div\u0026gt; \u0026lt;main\u0026gt; [[*content]] \u0026lt;/main\u0026gt; \u0026lt;/body\u0026gt; \u0026lt;/html\u0026gt; I didn’t come up with all of this myself, there are several awesome people who have written tutorials on this topic. Here are a few of those, their instructions might differ slightly from mine:\nhttp://www.belafontecode.com/modx-revolution-hosting-multiple-domains/ http://www.multilingual-modx.com/blog/2011/multilingual-websites-with-modx-and-babel.html http://www.multilingual-modx.com/blog/2011/multilingual-websites-with-modx-and-babel.html http://rtfm.modx.com/revolution/2.x/administering-your-site/contexts/using-one-gateway-plugin-to-manage-multiple-domains ",
      "content_html": "\u003cp\u003eIn this post I’m going to show you how to set up a multilingual, multi domain site with MODX Revolution CMS. There are several ways to do this. What I’m going to do in this tutorial is create separate pages inside of MODX using Contexts for every language and then map the domains accordingly.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.example.com\"\u003ewww.example.com\u003c/a\u003e will lead you to the English context and \u003ca href=\"https://www.example.de\"\u003ewww.example.de\u003c/a\u003e to the German context.\u003c/p\u003e\n\u003cp\u003eAs a first step go to \u003cspan style=\"text-decoration: underline;\"\u003eSystem/Contexts\u003c/span\u003e and create a new Context for your second language, in this example it’s de for German. I’m going to use the default web Context for the English page.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"/wp-content/uploads/2014/02/createContext.jpg\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n[1]\u003c/p\u003e\n\u003cp\u003eNext create a new Page for the Context by right clicking on de and selecting \u003cspan style=\"text-decoration: underline;\"\u003eQuick Create/Document\u003c/span\u003e and write something language specific in it so you know that you are on the correct site later.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"/wp-content/uploads/2014/02/createDocument.jpg\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n[2]\u003c/p\u003e\n\u003cp\u003eNow right click on the de Context and select \u003cspan style=\"text-decoration: underline;\"\u003eUpdate Context\u003c/span\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"/wp-content/uploads/2014/02/updateContext.jpg\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n[3]\u003c/p\u003e\n\u003cp\u003eCreate the following settings for the Context:\u003c/p\u003e\n\u003cp\u003eKey: site_start\u003c/p\u003e\n\u003cp\u003eName: Site Start\u003c/p\u003e\n\u003cp\u003eValue: 2\u003c/p\u003e\n\u003cp\u003e2 is the ID of the start page for this Context.\u003c/p\u003e\n\u003cp\u003eKey: site_url\u003c/p\u003e\n\u003cp\u003eName: Site URL\u003c/p\u003e\n\u003cp\u003eValue: \u003ca href=\"http://example.de/\"\u003ehttp://example.de/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eor \u003ca href=\"http://www.example.de/\"\u003ehttp://www.example.de/\u003c/a\u003e depending on which of the two you prefer.\u003c/p\u003e\n\u003cp\u003eImportant: There is a little mistake in the image, you need a backslash at the end of the domain, else you might run into problems later on.\u003c/p\u003e\n\u003cp\u003eKey: cultureKey\u003c/p\u003e\n\u003cp\u003eName: Culture Key\u003c/p\u003e\n\u003cp\u003eValue: de\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"/wp-content/uploads/2014/02/settingSite_Start.jpg\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n[4]\u003cimg\n  src=\"/wp-content/uploads/2014/02/settingSite_Url.jpg\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n[5]\u003cimg\n  src=\"/wp-content/uploads/2014/02/settingSite_Url.jpg\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n[6]\u003c/p\u003e\n\u003cp\u003eDo the same for the web Context with the corresponding values (1, example.com, en). You don’t necessarily have to set a site_start ID for the default Context web because that is set in the \u003cspan style=\"text-decoration: underline;\"\u003eSystem/System Settings\u003c/span\u003e but I’d still do it for consistency.\u003c/p\u003e\n\u003cp\u003eOnce this is done you have to create a gateway plugin that redirects your visitors to the correct site. Select the Elements tab on the left, right-click on Plugins and select \u003cspan style=\"text-decoration: underline;\"\u003eNew Plugin\u003c/span\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"/wp-content/uploads/2014/02/newPlugin.jpg\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n[7]\u003c/p\u003e\n\u003cp\u003eName it whatever you like but I’d suggest \u003cspan style=\"text-decoration: underline;\"\u003egateway plugin\u003c/span\u003e. Now enter the following code with your domains:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e\u0026lt;?php\nif($modx-\u0026gt;context-\u0026gt;get(\u0026#39;key\u0026#39;) != \u0026#34;mgr\u0026#34;){\n    //grab the current domain from the http_host option\n    switch ($modx-\u0026gt;getOption(\u0026#39;http_host\u0026#39;)) {\n        case \u0026#39;example.de\u0026#39;:\n        case \u0026#39;www.example.de\u0026#39;:\n            $modx-\u0026gt;switchContext(\u0026#39;de\u0026#39;);\n            $modx-\u0026gt;setOption(\u0026#39;cultureKey\u0026#39;, \u0026#39;de\u0026#39;);\n            break;\n        default:\n            // Set the default language/context here\n            $modx-\u0026gt;switchContext(\u0026#39;web\u0026#39;);\n            $modx-\u0026gt;setOption(\u0026#39;cultureKey\u0026#39;, \u0026#39;en\u0026#39;);\n            break;\n    }\n}\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eAfter that click on the \u003cspan style=\"text-decoration: underline;\"\u003eSystem Events\u003c/span\u003e tab and select OnHandleRequest.\u003c/p\u003e\n\u003cp\u003eNow your domains should show the correct pages.\u003c/p\u003e\n\u003cp\u003eThe last thing I’m going to show you is how to automatically generate the navigation and language switching menu.\u003c/p\u003e\n\u003cp\u003eTo achieve this you have to install two extras. Go to \u003cspan style=\"text-decoration: underline;\"\u003eSystem/Package Management\u003c/span\u003e and install the following plugins:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eWayfinder\u003c/strong\u003e – This extra will generate the navigation.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBabel\u003c/strong\u003e – This extra will create the language switching menu.\u003c/p\u003e\n\u003cp\u003eDon’t forget to install the extras after you’ve downloaded them.\u003c/p\u003e\n\u003cp\u003eInsert your context names in the Setup Options popup from the Babel extra:\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"/wp-content/uploads/2014/02/bableSetupOptions.jpg\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n[8]\u003c/p\u003e\n\u003cp\u003eNow edit the home pages of your Contexts, you will notice a new interface on the top right. Link all homepages with their respective IDs. In this example I put the ID of the German home page into the \u003cspan style=\"text-decoration: underline;\"\u003eGerman (de)\u003c/span\u003e tab of the English home page and vice versa.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"/wp-content/uploads/2014/02/babelLinkLanguage.jpg\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n[9]\u003c/p\u003e\n\u003cp\u003eAlright, just one more thing to do. Edit your template, you can find the default template by clicking on the Elements tab on the left and selecting \u003cspan style=\"text-decoration: underline;\"\u003eTemplates/BaseTemplate.\u003c/span\u003e\u003c/p\u003e\n\u003cp\u003eTo show the navigation menu, all you need to do is add:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[[Wayfinder? \u0026amp;startId=`0`\u0026amp;level=`1`]]\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eTo show the language switching menu add:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[[!BabelLinks]]\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eA complete example:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e\u0026lt;!DOCTYPE html\u0026gt;\n\u0026lt;html xmlns=\u0026#34;http://www.w3.org/1999/xhtml\u0026#34;\u0026gt;\n\u0026lt;head\u0026gt;\n\u0026lt;title\u0026gt;[[++site_name]] - [[*pagetitle]]\u0026lt;/title\u0026gt;\n\u0026lt;base href=\u0026#34;[[++site_url]]\u0026#34; /\u0026gt;\n\u0026lt;/head\u0026gt;\n\u0026lt;body\u0026gt;\n  \u0026lt;header\u0026gt;\n    \u0026lt;nav\u0026gt;\n      [[Wayfinder? \u0026amp;startId=`0`\u0026amp;level=`1`]]\n    \u0026lt;/nav\u0026gt;\n  \u0026lt;/header\u0026gt;\n  \u0026lt;div id=\u0026#34;language\u0026#34;\u0026gt;\n    \u0026lt;!-- Per default, Babel only includes \u0026lt;li\u0026gt; tags\n    which are not XHTML compliant on thier own --\u0026gt;\n    \u0026lt;ul\u0026gt;[[!BabelLinks]]\u0026lt;/ul\u0026gt;\n  \u0026lt;/div\u0026gt;\n  \u0026lt;main\u0026gt;\n  [[*content]]\n  \u0026lt;/main\u0026gt;\n\u0026lt;/body\u0026gt;\n\u0026lt;/html\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eI didn’t come up with all of this myself, there are several awesome people who have written tutorials on this topic. Here are a few of those, their instructions might differ slightly from mine:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"http://www.belafontecode.com/modx-revolution-hosting-multiple-domains/\"\u003ehttp://www.belafontecode.com/modx-revolution-hosting-multiple-domains/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://www.multilingual-modx.com/blog/2011/multilingual-websites-with-modx-and-babel.html\"\u003ehttp://www.multilingual-modx.com/blog/2011/multilingual-websites-with-modx-and-babel.html\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://www.multilingual-modx.com/blog/2011/multilingual-websites-with-modx-and-babel.html\"\u003ehttp://www.multilingual-modx.com/blog/2011/multilingual-websites-with-modx-and-babel.html\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://rtfm.modx.com/revolution/2.x/administering-your-site/contexts/using-one-gateway-plugin-to-manage-multiple-domains\"\u003ehttp://rtfm.modx.com/revolution/2.x/administering-your-site/contexts/using-one-gateway-plugin-to-manage-multiple-domains\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n",
      "url": "https://black-pixel.net/2014/02/24/multilingual-multidomain-site-modx-cms/",
      "date_published": "24026-24-09T249:2424:00+00:00",
      "date_modified": "24026-24-09T249:2424:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "a036727569aac191df88f294d091d38973565f44",
      "title": "Colorize Terminal When Using SSH",
      "summary": "",
      "content_text": "In this tutorial I’m going to show you how to set up your .bashrc to colorize the terminal automatically whenever you are using SSH.\nThe reason for this should be obvious, it can get difficult to distinguish multiple terminals and issuing commands on the wrong shell can get you into big trouble.\nRealizing I ran the command on the wrong server by DEVOP REACTIONS @tumblr\nAll you have to do is write an alias in which you define the colors you want for the font and the background:\nalias ssh=”tput setf 2; tput setb 0; ssh”\nThis replaces ssh and puts the commands tput setf (foreground/font color) and tput setb (background color) before the actual ssh command. In case setf and setb don’t work for you, try setaf and setab.\nYou can also create individual aliases for different ssh connections:\nalias example=”tput setf 0; tput setb 4; ssh user@example.com”\nalias domain=”tput setf 1; tput setb 0; ssh root@domain.com”\nIn these cases you only have to execute the respective alias like example or domain instead of writing ssh. However, you can not use an ssh alias together with individual ones because it would overwrite the other tput settings.Probably the best solution for both a general ssh colorization and an individual one is to use a different alias for general ssh commands. Here’s an example:\nalias sshc=”tput setf 2; tput setb 0; ssh”\nalias example=”tput setf 0; tput setb 4; ssh user@example.com”\nalias domain=”tput setf 1; tput setb 0; ssh root@domain.com”\nDon’t forget to reload your .bashrc file:\nsource .bashrc\nHere is a screenshot in which you can see the colors set with tput setf 2 and tput setb 0:\nAs you can see in the first picture, only the background of the characters is changed at first but after you issue a “clear” the whole background of the terminal has the new color. I don’t know why this happens or if it’s a bug, if you find out please let me know through the comments.\nColor Code for tput:\n0 – Black\n1 – Red\n2 – Green\n3 – Yellow\n4 – Blue\n5 – Magenta\n6 – Cyan\n7 – White\nYou can find more info about tput here:\nhttp://linux.101hacks.com/ps1-examples/prompt-color-using-tput/\n",
      "content_html": "\u003cp\u003eIn this tutorial I’m going to show you how to set up your \u003cstrong\u003e.bashrc\u003c/strong\u003e to colorize the terminal automatically whenever you are using SSH.\u003c/p\u003e\n\u003cp\u003eThe reason for this should be obvious, it can get difficult to distinguish multiple terminals and issuing commands on the wrong shell can get you into big trouble.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2 id=\"realizing-i-ran-the-command-on-the-wrong-server\"\u003eRealizing I ran the command on the wrong server\u003c/h2\u003e\n\u003cp\u003e\u003cimg\n  src=\"/wp-content/uploads/2014/02/commandOnWrongServer.gif\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cp\u003eby \u003ca href=\"http://devopsreactions.tumblr.com/post/72651016161/realizing-i-ran-the-command-on-the-wrong-server\"\u003eDEVOP REACTIONS @tumblr\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eAll you have to do is write an alias in which you define the colors you want for the font and the background:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ealias ssh=”tput setf 2; tput setb 0; ssh”\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eThis replaces ssh and puts the commands tput setf (foreground/font color) and tput setb (background color) before the actual ssh command. In case setf and setb don’t work for you, try setaf and setab.\u003c/p\u003e\n\u003cp\u003eYou can also create individual aliases for different ssh connections:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ealias example=”tput setf 0; tput setb 4; ssh \u003ca href=\"mailto:user@example.com\"\u003euser@example.com\u003c/a\u003e”\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003ealias domain=”tput setf 1; tput setb 0; ssh \u003ca href=\"mailto:root@domain.com\"\u003eroot@domain.com\u003c/a\u003e”\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eIn these cases you only have to execute the respective alias like example or domain instead of writing ssh. However, you can not use an ssh alias together with individual ones because it would overwrite the other tput settings.Probably the best solution for both a general ssh colorization and an individual one is to use a different alias for general ssh commands. Here’s an example:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ealias sshc=”tput setf 2; tput setb 0; ssh”\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003ealias example=”tput setf 0; tput setb 4; ssh \u003ca href=\"mailto:user@example.com\"\u003euser@example.com\u003c/a\u003e”\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003ealias domain=”tput setf 1; tput setb 0; ssh \u003ca href=\"mailto:root@domain.com\"\u003eroot@domain.com\u003c/a\u003e”\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eDon’t forget to reload your .bashrc file:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003esource .bashrc\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eHere is a screenshot in which you can see the colors set with tput setf 2 and tput setb 0:\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"/wp-content/uploads/2014/02/drag@Debby-_002.png\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003cimg\n  src=\"/wp-content/uploads/2014/02/drag@h1653995-_003.png\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eAs you can see in the first picture, only the background of the characters is changed at first but after you issue a “clear” the whole background of the terminal has the new color. I don’t know why this happens or if it’s a bug, if you find out please let me know through the comments.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eColor Code for tput:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e0 – Black\u003c/p\u003e\n\u003cp\u003e1 – Red\u003c/p\u003e\n\u003cp\u003e2 – Green\u003c/p\u003e\n\u003cp\u003e3 – Yellow\u003c/p\u003e\n\u003cp\u003e4 – Blue\u003c/p\u003e\n\u003cp\u003e5 – Magenta\u003c/p\u003e\n\u003cp\u003e6 – Cyan\u003c/p\u003e\n\u003cp\u003e7 – White\u003c/p\u003e\n\u003cp\u003eYou can find more info about tput here:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://linux.101hacks.com/ps1-examples/prompt-color-using-tput/\"\u003ehttp://linux.101hacks.com/ps1-examples/prompt-color-using-tput/\u003c/a\u003e\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2014/02/17/colorize-terminal-when-using-ssh/",
      "date_published": "17026-17-09T228:1717:00+00:00",
      "date_modified": "17026-17-09T228:1717:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "638dd20f2ce85b7bc7a16c5d0664409838ce12a0",
      "title": "Learning Japanese",
      "summary": "",
      "content_text": "I’ve been learning Japanese for a few months now and in this post I’m going to show you a few of the sites and apps that I think are very helpful. I will update this post whenever I come across new resources.\nHiragana \u0026amp; Katakana Dr. Moku is a great app for learning how to read Hiragana and Katakana. It is amazing how well this works but it’s not for free.\nThe Android version is cheaper and consists of one app for both Hiragana and Katakana:\nhttps://play.google.com/store/apps/details?id=com.muko.paid\nThe IOS version is more expensive, split up into two apps for Hiragana \u0026amp; Katakana and it includes a writing practice:\nhttps://itunes.apple.com/us/app/dr.-mokus-hiragana-mnemonics/id387585135\nhttps://itunes.apple.com/us/app/dr.-mokus-katakana-mnemonics/id452226776\nHiragana – Learn Japanese and **Katakana – Learn Japanese **are two free Android apps with whom you can learn writing the Kana.\nhttps://play.google.com/store/apps/details?id=com.legendarya.katakana\nhttps://play.google.com/store/apps/details?id=com.legendarya.helloandroid\nKanji WaniKani is the best site for learning Kanji in my opinion. The Kanji are split up into 50 lessons and you can try the first three lessons for free. Each lesson consists of several Radicals, Kanji and Vocabulary. Further lessons require a subscription which is $8/month or $80/year.\nhttps://www.wanikani.com/\nYou can also learn the Kanji on your smartphone, there is an unofficial app for Android and IOS.\nAndroid: https://play.google.com/store/apps/details?id=com.wanikani.androidnotifier\u0026amp;hl=en\nIOS: [I’ve been learning Japanese for a few months now and in this post I’m going to show you a few of the sites and apps that I think are very helpful. I will update this post whenever I come across new resources.\nHiragana \u0026amp; Katakana Dr. Moku is a great app for learning how to read Hiragana and Katakana. It is amazing how well this works but it’s not for free.\nThe Android version is cheaper and consists of one app for both Hiragana and Katakana:\nhttps://play.google.com/store/apps/details?id=com.muko.paid\nThe IOS version is more expensive, split up into two apps for Hiragana \u0026amp; Katakana and it includes a writing practice:\nhttps://itunes.apple.com/us/app/dr.-mokus-hiragana-mnemonics/id387585135\nhttps://itunes.apple.com/us/app/dr.-mokus-katakana-mnemonics/id452226776\nHiragana – Learn Japanese and **Katakana – Learn Japanese **are two free Android apps with whom you can learn writing the Kana.\nhttps://play.google.com/store/apps/details?id=com.legendarya.katakana\nhttps://play.google.com/store/apps/details?id=com.legendarya.helloandroid\nKanji WaniKani is the best site for learning Kanji in my opinion. The Kanji are split up into 50 lessons and you can try the first three lessons for free. Each lesson consists of several Radicals, Kanji and Vocabulary. Further lessons require a subscription which is $8/month or $80/year.\nhttps://www.wanikani.com/\nYou can also learn the Kanji on your smartphone, there is an unofficial app for Android and IOS.\nAndroid: https://play.google.com/store/apps/details?id=com.wanikani.androidnotifier\u0026amp;hl=en\nIOS: ]1 Github: https://github.com/WaniKani\nBasics \u0026amp; Grammar **123Japanese **is a good free resource for almost any topic. I mainly use it for basic phrases and grammar. It is not complete so you may need to look for other sites after a while but it’s a great starting point.\nhttp://123japanese.com/\nIMABI is the most comprehensive resource I know and it is completely free.\nhttp://www.imabi.net/\nListening \u0026amp; Videos The Waku Waku Japanese Language Lessons! from JapanSocietyNYC are a great way to learn basic words and phrases. You can watch them for free on YouTube:\nhttps://www.youtube.com/playlist?list=PLF97A549D60C2EBA4\n",
      "content_html": "\u003cp\u003eI’ve been learning Japanese for a few months now and in this post I’m going to show you a few of the sites and apps that I think are very helpful. I will update this post whenever I come across new resources.\u003c/p\u003e\n\u003ch2 id=\"hiragana--katakana\"\u003eHiragana \u0026amp; Katakana\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eDr. Moku\u003c/strong\u003e is a great app for learning how to read Hiragana and Katakana. It is amazing how well this works but it’s not for free.\u003c/p\u003e\n\u003cp\u003eThe \u003cspan style=\"text-decoration: underline;\"\u003eAndroid\u003c/span\u003e version is cheaper and consists of one app for both Hiragana and Katakana:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://play.google.com/store/apps/details?id=com.muko.paid\"\u003ehttps://play.google.com/store/apps/details?id=com.muko.paid\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe \u003cspan style=\"text-decoration: underline;\"\u003eIOS\u003c/span\u003e version is more expensive, split up into two apps for Hiragana \u0026amp; Katakana and it includes a writing practice:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://itunes.apple.com/us/app/dr.-mokus-hiragana-mnemonics/id387585135\"\u003ehttps://itunes.apple.com/us/app/dr.-mokus-hiragana-mnemonics/id387585135\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://itunes.apple.com/us/app/dr.-mokus-katakana-mnemonics/id452226776\"\u003ehttps://itunes.apple.com/us/app/dr.-mokus-katakana-mnemonics/id452226776\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eHiragana – Learn Japanese\u003c/strong\u003e and **Katakana – Learn Japanese **are two free \u003cspan style=\"text-decoration: underline;\"\u003eAndroid\u003c/span\u003e apps with whom you can learn writing the Kana.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://play.google.com/store/apps/details?id=com.legendarya.katakana\"\u003ehttps://play.google.com/store/apps/details?id=com.legendarya.katakana\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://play.google.com/store/apps/details?id=com.legendarya.helloandroid\"\u003ehttps://play.google.com/store/apps/details?id=com.legendarya.helloandroid\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"kanji\"\u003eKanji\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWaniKani\u003c/strong\u003e is the best site for learning Kanji in my opinion. The Kanji are split up into 50 lessons and you can try the first three lessons for free. Each lesson consists of several Radicals, Kanji and Vocabulary. Further lessons require a subscription which is $8/month or $80/year.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.wanikani.com/\"\u003ehttps://www.wanikani.com/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eYou can also learn the Kanji on your smartphone, there is an unofficial app for Android and IOS.\u003c/p\u003e\n\u003cp\u003eAndroid: \u003ca href=\"https://play.google.com/store/apps/details?id=com.wanikani.androidnotifier\u0026amp;hl=en\"\u003ehttps://play.google.com/store/apps/details?id=com.wanikani.androidnotifier\u0026amp;hl=en\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIOS: [I’ve been learning Japanese for a few months now and in this post I’m going to show you a few of the sites and apps that I think are very helpful. I will update this post whenever I come across new resources.\u003c/p\u003e\n\u003ch2 id=\"hiragana--katakana-1\"\u003eHiragana \u0026amp; Katakana\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eDr. Moku\u003c/strong\u003e is a great app for learning how to read Hiragana and Katakana. It is amazing how well this works but it’s not for free.\u003c/p\u003e\n\u003cp\u003eThe \u003cspan style=\"text-decoration: underline;\"\u003eAndroid\u003c/span\u003e version is cheaper and consists of one app for both Hiragana and Katakana:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://play.google.com/store/apps/details?id=com.muko.paid\"\u003ehttps://play.google.com/store/apps/details?id=com.muko.paid\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe \u003cspan style=\"text-decoration: underline;\"\u003eIOS\u003c/span\u003e version is more expensive, split up into two apps for Hiragana \u0026amp; Katakana and it includes a writing practice:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://itunes.apple.com/us/app/dr.-mokus-hiragana-mnemonics/id387585135\"\u003ehttps://itunes.apple.com/us/app/dr.-mokus-hiragana-mnemonics/id387585135\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://itunes.apple.com/us/app/dr.-mokus-katakana-mnemonics/id452226776\"\u003ehttps://itunes.apple.com/us/app/dr.-mokus-katakana-mnemonics/id452226776\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eHiragana – Learn Japanese\u003c/strong\u003e and **Katakana – Learn Japanese **are two free \u003cspan style=\"text-decoration: underline;\"\u003eAndroid\u003c/span\u003e apps with whom you can learn writing the Kana.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://play.google.com/store/apps/details?id=com.legendarya.katakana\"\u003ehttps://play.google.com/store/apps/details?id=com.legendarya.katakana\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://play.google.com/store/apps/details?id=com.legendarya.helloandroid\"\u003ehttps://play.google.com/store/apps/details?id=com.legendarya.helloandroid\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"kanji-1\"\u003eKanji\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWaniKani\u003c/strong\u003e is the best site for learning Kanji in my opinion. The Kanji are split up into 50 lessons and you can try the first three lessons for free. Each lesson consists of several Radicals, Kanji and Vocabulary. Further lessons require a subscription which is $8/month or $80/year.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.wanikani.com/\"\u003ehttps://www.wanikani.com/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eYou can also learn the Kanji on your smartphone, there is an unofficial app for Android and IOS.\u003c/p\u003e\n\u003cp\u003eAndroid: \u003ca href=\"https://play.google.com/store/apps/details?id=com.wanikani.androidnotifier\u0026amp;hl=en\"\u003ehttps://play.google.com/store/apps/details?id=com.wanikani.androidnotifier\u0026amp;hl=en\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIOS: ]\u003ca href=\"https://itunes.apple.com/us/app/wanikani/id631153460\"\u003e1\u003c/a\u003e Github: \u003ca href=\"https://github.com/WaniKani\"\u003ehttps://github.com/WaniKani\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003ch2 id=\"basics--grammar\"\u003eBasics \u0026amp; Grammar\u003c/h2\u003e\n\u003cp\u003e**123Japanese **is a good free resource for almost any topic. I mainly use it for basic phrases and grammar. It is not complete so you may need to look for other sites after a while but it’s a great starting point.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://123japanese.com/\"\u003ehttp://123japanese.com/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eIMABI\u003c/strong\u003e is the most comprehensive resource I know and it is completely free.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://www.imabi.net/\"\u003ehttp://www.imabi.net/\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"listening--videos\"\u003eListening \u0026amp; Videos\u003c/h2\u003e\n\u003cp\u003eThe \u003cstrong\u003eWaku Waku Japanese Language Lessons!\u003c/strong\u003e from JapanSocietyNYC are a great way to learn basic words and phrases. You can watch them for free on YouTube:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.youtube.com/playlist?list=PLF97A549D60C2EBA4\"\u003ehttps://www.youtube.com/playlist?list=PLF97A549D60C2EBA4\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n",
      "url": "https://black-pixel.net/2014/02/13/learning-japanese/",
      "date_published": "13026-13-09T234:1313:00+00:00",
      "date_modified": "13026-13-09T234:1313:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "16b458127280360a4ab0dd3cddbfacf16dc6ae1b",
      "title": "Magnetic Field Measurement with an Arduino, a HMC5883L and a Piezo Speaker",
      "summary": "",
      "content_text": "This is a tutorial on how to do magnetic field measurement with an Arduino, a HMC5883L triple axis magnetometer and a Piezo Speaker.\nFirst of all, here is a schematic on how to hook up everything.\nSource images from:\nhttp://store.fut-electronics.com/HMC5883L.html\nhttp://www.geekzone.co.nz\nHMC5883L GND -\u0026gt; Arduino GND\nHMC5883L VCC -\u0026gt; Arduino 3.3V\nHMC5883L SDA -\u0026gt; Arduino A4\nHMC5883L SCL -\u0026gt; Arduino A5\nPiezo Speaker – -\u0026gt; Arduino D10 (Any digital PWM port is sufficient)\nPiezo Speaker + -\u0026gt; Arduino GND\nLet’s get to the programming part.\nFirst of all download this HMC5883L Arduino library:\nHMC5883L(Arduino)[V4]\nThen put the HMC5883L folder into your library.\nDefault Library Folder Location\nMac: In (home directory)/Documents/Arduino/libraries\nPC: My Documents -\u0026gt; Arduino -\u0026gt; libraries\nLinux: (home directory)/sketchbook/libraries\nOnce this is done you can start programming.\nI’ve put my code on Github, you can find it here: https://github.com/Black-Pixel/Arduino/tree/master/magneticFieldStrength\nIt should not be hard to understand. If you have any questions or suggestions feel free to write a comment.\nSources and other helpful sites:\nTriple Axis Magnetometer HMC5883L + Arduino HMC5883L Compass Tutorial with Arduino Library Am I a Cyborg Now? Achieving a Sixth Sense Through Tech HMC5883L Datasheet ",
      "content_html": "\u003cp\u003eThis is a tutorial on how to do magnetic field measurement with an Arduino, a HMC5883L triple axis magnetometer and a Piezo Speaker.\u003c/p\u003e\n\u003cp\u003eFirst of all, here is a schematic on how to hook up everything.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"https://black-pixel.net/wp-content/uploads/2013/05/arduinoHMC5883Lpiezo.gif\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cp\u003eSource images from:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://store.fut-electronics.com/HMC5883L.html\"\u003e\u003ca href=\"http://store.fut-electronics.com/HMC5883L.html\"\u003ehttp://store.fut-electronics.com/HMC5883L.html\u003c/a\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://www.geekzone.co.nz/imagessubs/blog18a1d14dd0a4ccf9c8d355c44d869a03.jpg\"\u003e\u003ca href=\"http://www.geekzone.co.nz\"\u003ehttp://www.geekzone.co.nz\u003c/a\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eHMC5883L GND -\u0026gt; Arduino GND\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003eHMC5883L VCC -\u0026gt; Arduino 3.3V\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003eHMC5883L SDA -\u0026gt; Arduino A4\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003eHMC5883L SCL -\u0026gt; Arduino A5\u003c/p\u003e\n\u003cp\u003ePiezo Speaker – -\u0026gt; Arduino D10 (Any digital PWM port is sufficient)\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003ePiezo Speaker + -\u0026gt; Arduino GND\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eLet’s get to the programming part.\u003c/p\u003e\n\u003cp\u003eFirst of all download this HMC5883L Arduino library:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://black-pixel.net/wp-content/uploads/2013/06/HMC5883LArduinoV4.zip\"\u003eHMC5883L(Arduino)[V4]\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThen put the HMC5883L folder into your library.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDefault Library Folder Location\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMac:\u003c/strong\u003e In (home directory)/Documents/Arduino/libraries\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003ePC:\u003c/strong\u003e My Documents -\u0026gt; Arduino -\u0026gt; libraries\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eLinux:\u003c/strong\u003e (home directory)/sketchbook/libraries\u003c/p\u003e\n\u003cp\u003eOnce this is done you can start programming.\u003c/p\u003e\n\u003cp\u003eI’ve put my code on Github, you can find it here: \u003ca href=\"https://github.com/Black-Pixel/Arduino/tree/master/magneticFieldStrength\"\u003ehttps://github.com/Black-Pixel/Arduino/tree/master/magneticFieldStrength\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIt should not be hard to understand. If you have any questions or suggestions feel free to write a comment.\u003c/p\u003e\n\u003cp\u003eSources and other helpful sites:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"http://bildr.org/2012/02/hmc5883l_arduino/\"\u003eTriple Axis Magnetometer HMC5883L + Arduino\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.loveelectronics.co.uk/Tutorials/8/hmc5883l-tutorial-and-arduino-library\"\u003eHMC5883L Compass Tutorial with Arduino Library\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://lifehacker.com/5930536/am-i-a-cyborg-now-achieving-a-sixth-sense-through-tech\"\u003eAm I a Cyborg Now? Achieving a Sixth Sense Through Tech\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://c48754.r54.cf3.rackcdn.com/HMC5883L.pdf\" title=\"HMC5883L Datasheet\"\u003eHMC5883L Datasheet\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e",
      "url": "https://black-pixel.net/2013/06/08/magnetic-field-measurement-with-arduino-hmc5883l-and-piezo-speaker/",
      "date_published": "8066-08-09T644:88:00+00:00",
      "date_modified": "8066-08-09T644:88:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "d4b80f4eb65f49a76b823847d6f99dd63947f74f",
      "title": "New Git Wallpapers",
      "summary": "",
      "content_text": "I’ve just created two Git wallpapers:\n1 2\nYou can also find these wallpapers and others at my wallpaper page or at my deviantART page.\n",
      "content_html": "\u003cp\u003eI’ve just created two Git wallpapers:\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"/wp-content/uploads/2013/03/git4.jpg\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003ca href=\"http://black-pixel.net/wp-content/uploads/2010/11/git4.jpg\"\u003e1\u003c/a\u003e \u003cimg\n  src=\"/wp-content/uploads/2013/03/git_hell.jpg\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003ca href=\"http://black-pixel.net/wp-content/uploads/2010/11/git_hell.jpg\"\u003e2\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eYou can also find these wallpapers and others at my \u003ca href=\"http://black-pixel.net/art/wallpaper\"\u003ewallpaper page\u003c/a\u003e or at my \u003ca href=\"https://black-pixel.deviantart.com/\"\u003edeviantART page\u003c/a\u003e.\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2013/03/01/new-git-wallpaper/",
      "date_published": "1036-01-09T331:11:00+00:00",
      "date_modified": "1036-01-09T331:11:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "10e4ef1d04ca2433a93f65b4fd11f3b9e8160fdb",
      "title": "Forward Connections from Nginx to httpd in CentOS",
      "summary": "",
      "content_text": "This is a tutorial on how to forward connections from Nginx to httpd in CentOS.\nFirst of all, you have to edit the Nginx configuration file for the domain you want to forward.\nvim /etc/nginx/conf.d/example.domain.conf server { server_name example.net; # your domain name location / { proxy\\_set\\_header X-Real-IP $remote_addr; proxy\\_set\\_header X-Forwarded-For $remote_addr; proxy\\_set\\_header Host $host; proxy_pass http://127.0.0.1:8080; } Now Nginx is ready. The next thing you have to do is set up your httpd configuration so it listens on port 8080, because Nginx will forward all connections to your domain to port 8080.\nvim /etc/httpd/conf/httpd.conf Listen 127.0.0.1:8080 The forwarding should already work now, however there is still a problem.\nHttpd does not yet handle the forwarded header information, so all connections to httpd stem from localhost.\nTo fix this you have to install an additional httpd module:\nyum install mod_extract_forwarded To configure this module you need a mod_extract_forwarded.conf file in your /etc/httpd/conf.d directory.\nThe file should contain:\nLoadModule extract_forwarded_module modules/mod_extract_forwarded.so # MEForder can have either of two value ‘refuse,accept’ or ‘accept,refuse’ and # specifies the order in which the information in two associated directives, # MEFaccept and MEFrefuse, are intepreted. The MEFaccept and MEFrefuse # directives are each used to spcifiy one or more IP numbers. MEForder refuse,accept # MEFrefuse can be ‘all’ OR a list of IP numbers and/or domain names of trusted # proxy servers whose IP number can be derived by DNS from the domain name. # The presence of ‘all’ overrides any particular IP numbers and means that no # proxy servers are to be trusted. Individual IP numbers mean that those proxy # servers having them are not to be trusted. This defaults to ‘all’. MEFrefuse all MEFaccept 127.0.0.1 # MEFaccept can be ‘all’ OR a list of IP numbers and/or domain names of trusted # proxy servers whose IP number can be derived by DNS from the domain name. # The presence of ‘all’ overrides any particular IP numbers and means that all # proxy servers are to be trusted. # Individual IP numbers mean that those the proxy servers having them are to be # trusted. This defaults to an empty list of trusted IP numbers. # MEFaccept 1.2.3.4 1.2.3.5 # Normal mode of use is to say: # # MEForder refuse,accept # MEFrefuse all # MEFaccept \u0026lt;space separated list of your trusted proxy servers’ IP numbers\u0026gt; # # with the MEForder directive saying apply the MEFrefuse rule first then the # MEFaccept rule. # The MEFrefuse rule says do not trust any proxy servers but this is selectively # overridden for particular IP numbers listed by the MEFaccept directive. # MEFaddenv can be ‘off’, ‘on’ (the default) or a string. ‘off’ means that when # spoofing, do not add an environment variable whose value is the IP number of # the connecting machine. ‘on’ means that when spoofing, add an environment # variable called ‘MEF_RPROXY_ADDR’ whose value is the IP number of the # connecting machine. # A string means that when spoofing, add an environment variable named by the # string supplied whose value is the IP number of the connecting machine. MEFaddenv on # MEFdebug can be ‘on’ or ‘off’ (the default). When turned ‘on’ information # about how the mod_extract_forwarded module is processing every request to your # Apache 2 server, and any associated internal redirects or subsrequests, is # written to the server’s error_log. # The amount of output written and the way it is generated is such that you # would never normally want to turn this feature on. # This feature is intended for debugging operation of the mod_extract_forwarded # module and it is unlikely you will want to do that. MEFdebug off The approach differs slightly from other distributions like Debian. You can find a tutorial for Debian here: http://zeldor.biz/2011/01/nginx-apache2-real-ip/\n",
      "content_html": "\u003cp\u003eThis is a tutorial on how to forward connections from Nginx to httpd in CentOS.\u003c/p\u003e\n\u003cp\u003eFirst of all, you have to edit the Nginx configuration file for the domain you want to forward.\u003c/p\u003e\n\u003cp style=\"padding-left: 30px;\"\u003e\n  \u003ccode\u003evim /etc/nginx/conf.d/example.domain.conf\u003c/code\u003e\n\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e server {\n  \n server_name example.net; # your domain name\n \n location / {\n \n proxy\\_set\\_header X-Real-IP $remote_addr;\n  \n proxy\\_set\\_header X-Forwarded-For $remote_addr;\n \n proxy\\_set\\_header Host $host;\n \n proxy_pass http://127.0.0.1:8080;\n  \n }\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eNow Nginx is ready. The next thing you have to do is set up your httpd configuration so it listens on port 8080, because Nginx will forward all connections to your domain to port 8080.\u003c/p\u003e\n\u003cp style=\"padding-left: 30px;\"\u003e\n  \u003ccode\u003evim /etc/httpd/conf/httpd.conf\u003c/code\u003e\n\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eListen 127.0.0.1:8080\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThe forwarding should already work now, however there is still a problem.\u003c/p\u003e\n\u003cp\u003eHttpd does not yet handle the forwarded header information, so all connections to httpd stem from localhost.\u003c/p\u003e\n\u003cp\u003eTo fix this you have to install an additional httpd module:\u003c/p\u003e\n\u003cp style=\"padding-left: 30px;\"\u003e\n  \u003ccode\u003eyum install mod_extract_forwarded\u003c/code\u003e\n\u003c/p\u003e\n\u003cp\u003eTo configure this module you need a \u003cem\u003e\u003cspan style=\"color: #888888;\"\u003emod_extract_forwarded.conf\u003c/span\u003e\u003c/em\u003e file in your \u003cem\u003e\u003cspan style=\"color: #888888;\"\u003e/etc/httpd/conf.d\u003c/span\u003e\u003c/em\u003e directory.\u003c/p\u003e\n\u003cp\u003eThe file should contain:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eLoadModule extract_forwarded_module modules/mod_extract_forwarded.so\n\n# MEForder can have either of two value ‘refuse,accept’ or ‘accept,refuse’ and\n# specifies the order in which the information in two associated directives,\n# MEFaccept and MEFrefuse, are intepreted. The MEFaccept and MEFrefuse\n# directives are each used to spcifiy one or more IP numbers.\n\nMEForder refuse,accept\n\n# MEFrefuse can be ‘all’ OR a list of IP numbers and/or domain names of trusted\n# proxy servers whose IP number can be derived by DNS from the domain name.\n# The presence of ‘all’ overrides any particular IP numbers and means that no\n# proxy servers are to be trusted. Individual IP numbers mean that those proxy\n# servers having them are not to be trusted. This defaults to ‘all’.\n\nMEFrefuse all\nMEFaccept 127.0.0.1\n# MEFaccept can be ‘all’ OR a list of IP numbers and/or domain names of trusted\n# proxy servers whose IP number can be derived by DNS from the domain name.\n# The presence of ‘all’ overrides any particular IP numbers and means that all\n# proxy servers are to be trusted.\n# Individual IP numbers mean that those the proxy servers having them are to be\n# trusted. This defaults to an empty list of trusted IP numbers.\n\n# MEFaccept 1.2.3.4 1.2.3.5\n\n# Normal mode of use is to say:\n#\n# MEForder refuse,accept\n# MEFrefuse all\n# MEFaccept \u0026lt;space separated list of your trusted proxy servers’ IP numbers\u0026gt;\n#\n# with the MEForder directive saying apply the MEFrefuse rule first then the\n# MEFaccept rule.\n# The MEFrefuse rule says do not trust any proxy servers but this is selectively\n# overridden for particular IP numbers listed by the MEFaccept directive.\n\n# MEFaddenv can be ‘off’, ‘on’ (the default) or a string. ‘off’ means that when\n# spoofing, do not add an environment variable whose value is the IP number of\n# the connecting machine. ‘on’ means that when spoofing, add an environment\n# variable called ‘MEF_RPROXY_ADDR’ whose value is the IP number of the\n# connecting machine.\n# A string means that when spoofing, add an environment variable named by the\n# string supplied whose value is the IP number of the connecting machine.\n\nMEFaddenv on\n\n# MEFdebug can be ‘on’ or ‘off’ (the default). When turned ‘on’ information\n# about how the mod_extract_forwarded module is processing every request to your\n# Apache 2 server, and any associated internal redirects or subsrequests, is\n# written to the server’s error_log.\n# The amount of output written and the way it is generated is such that you\n# would never normally want to turn this feature on.\n# This feature is intended for debugging operation of the mod_extract_forwarded\n# module and it is unlikely you will want to do that.\n\nMEFdebug off\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eThe approach differs slightly from other distributions like Debian. You can find a tutorial for Debian here: \u003ca href=\"http://zeldor.biz/2011/01/nginx-apache2-real-ip/\"\u003ehttp://zeldor.biz/2011/01/nginx-apache2-real-ip/\u003c/a\u003e\u003c/p\u003e",
      "url": "https://black-pixel.net/2013/02/10/forwarding-connections-from-nginx-to-httpd-in-centos/",
      "date_published": "10026-10-09T254:1010:00+00:00",
      "date_modified": "10026-10-09T254:1010:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "ee67668dede779df42480b3d07fb6f0f51479c66",
      "title": "Manually install Sun Java on Debian",
      "summary": "",
      "content_text": "This is a tutorial on how to manually install Sun Java on Debian Linux. This may also work for other distributions but I cannot guarantee that.\ncd /usr/lib mkdir jvm cd jvm Download the latest .tar.gz file from http://www.java.com/de/download/manual.jsp and put in in the jvm directory.\ntar -xvzf javafile.tar.gz\nNow set the alternatives path. If you’re just installing the runtime environment, you only need the first line.\nupdate-alternatives –install “/usr/bin/java” java “/usr/lib/jvm/TheExtractedFolder/bin/java” 1 update-alternatives –install “/usr/bin/javac” javac “/usr/lib/jvm/TheExtractedFolder/bin/javac” 1 update-alternatives –install “/usr/bin/javaws” javaws “/usr/lib/jvm/TheExtractedFolder/bin/javaws” 1 The last thing you have to do is to set the environment variables.\nvi /etc/profile\nAdd the following two lines at the end:\nJAVA_HOME=\u0026#34;/usr/lib/jvm/TheExtractedFolder export JAVA_HOME Now activate it:\nsource /etc/profile\nThat’s it.\nTo test if everything works, execute the following commands:\necho $JAVA_HOME java -version ",
      "content_html": "\u003cp\u003eThis is a tutorial on how to manually install Sun Java on Debian Linux. This may also work for other distributions but I cannot guarantee that.\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ecd /usr/lib\nmkdir jvm\ncd jvm\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eDownload the latest .tar.gz file from \u003ca href=\"http://www.java.com/de/download/manual.jsp\"\u003ehttp://www.java.com/de/download/manual.jsp\u003c/a\u003e and put in in the jvm directory.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003etar -xvzf javafile.tar.gz\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eNow set the alternatives path. If you’re just installing the runtime environment, you only need the first line.\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eupdate-alternatives –install “/usr/bin/java” java “/usr/lib/jvm/TheExtractedFolder/bin/java” 1\nupdate-alternatives –install “/usr/bin/javac” javac “/usr/lib/jvm/TheExtractedFolder/bin/javac” 1\nupdate-alternatives –install “/usr/bin/javaws” javaws “/usr/lib/jvm/TheExtractedFolder/bin/javaws” 1\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThe last thing you have to do is to set the environment variables.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003evi /etc/profile\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eAdd the following two lines at the end:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eJAVA_HOME=\u0026#34;/usr/lib/jvm/TheExtractedFolder\nexport JAVA_HOME\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eNow activate it:\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003esource /etc/profile\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eThat’s it.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eTo test if everything works, execute the following commands:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eecho $JAVA_HOME\njava -version\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e \u003c/p\u003e\n",
      "url": "https://black-pixel.net/2012/12/26/manually-install-sun-java-on-debian/",
      "date_published": "26126-26-09T1243:2626:00+00:00",
      "date_modified": "26126-26-09T1243:2626:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "e39622030f35f67105c5973af8046fb9c693a1a6",
      "title": "IM Sounds",
      "summary": "",
      "content_text": "Good instant messaging sounds are quite rare and I often dislike the default ones, so I searched for alternatives and found three which I want to share with you.\nThey were created for Adium, but I’ve converted them to MP3 and WAV so you should be able to use them with any instant messenger.\nLet’s start with the first one: Visions I\n\u0026#8220;The first in the new Vision series of IM sound sets. This is a project started to bring simple, elegant yet practical IM notifications to the Adium platform.\u0026#8221; by Jamie Soar / CC BY-ND 3.0 Download MP3: Visions i.AdiumSoundsetMP3 Download WAV: Visions i.AdiumSoundsetWAV Download Original: http://www.adiumxtras.com/download/7612 The second: SuperMarioWorld\n\u0026#8220;a soundset from the super nintendo game, super mario world. a complete set with a slim default set, but also comes with additional sounds for extra customisation. matches my dock icon set. enjoy!!\u0026#8221; Credits: original sounds by nintendo. edited and prepared for adium by aaron j hoffmann Download MP3: SuperMarioWorld.AdiumSoundsetMP3 Download WAV: SuperMarioWorld.AdiumSoundsetWAV Download Original: http://www.adiumxtras.com/download/382 The third: Tokyo Train Station\n\u0026#8220;Tokyo Train Station is a remake of Electric Dream, designed for users who enjoy the simplicity of Electric Dream but dislike its dreamy and uncanny capability of lulling them to sleep. This is a collection of 5 mutated synthesizer runs for the following events: Buddy LogOn, Buddy LogOff, New Message Received, Message Sent, Message Received.\u0026#8220; Credits: All sounds created by Dominik Dimaano Download MP3: TokyoTrainStation.AdiumSoundsetMP3 Download WAV: TokyoTrainStation.AdiumSoundsetWAV Download Original: http://www.adiumxtras.com/download/602 \u0026nbsp; I\u0026#8217;ve used fre:ac to convert the original sound files.\nYou can download it for free at http://www.freac.org/ ",
      "content_html": "\u003cp\u003eGood instant messaging sounds are quite rare and I often dislike the default ones, so I searched for alternatives and found three which I want to share with you.\u003c/p\u003e\n\u003cp\u003eThey were created for Adium, but I’ve converted them to MP3 and WAV so you should be able to use them with any instant messenger.\u003c/p\u003e\n\u003cp\u003eLet’s start with the first one: \u003ca href=\"http://www.adiumxtras.com/index.php?a=xtras\u0026amp;xtra_id=7612\"\u003eVisions I\u003c/a\u003e\u003c/p\u003e\n\u003cp style=\"padding-left: 30px;\"\u003e\n  \u003cem\u003e\u0026#8220;The first in the new Vision series of IM sound sets. This is a project started to bring simple, elegant yet practical IM notifications to the Adium platform.\u0026#8221;\u003c/em\u003e\n\u003c/p\u003e\n\u003cdiv style=\"padding-left: 30px;\"\u003e\n  by \u003ca href=\"http://www.adiumxtras.com/www.jamiesoarmusic.co.uk\" rel=\"cc:attributionURL\"\u003eJamie Soar\u003c/a\u003e / \u003ca href=\"http://creativecommons.org/licenses/by-nd/3.0/\" rel=\"license\"\u003eCC BY-ND 3.0\u003c/a\u003e\n\u003c/div\u003e\n\u003cdiv style=\"padding-left: 30px;\"\u003e\n\u003c/div\u003e\n\u003cdiv style=\"padding-left: 30px;\"\u003e\n  Download MP3: \u003ca href=\"http://black-pixel.net/wp-content/uploads/2012/11/Visions-i.AdiumSoundsetMP3.zip\"\u003eVisions i.AdiumSoundsetMP3\u003c/a\u003e\n\u003c/div\u003e\n\u003cdiv style=\"padding-left: 30px;\"\u003e\n  Download WAV: \u003ca href=\"http://black-pixel.net/wp-content/uploads/2012/11/Visions-i.AdiumSoundsetWAV.zip\"\u003eVisions i.AdiumSoundsetWAV\u003c/a\u003e\n\u003c/div\u003e\n\u003cdiv style=\"padding-left: 30px;\"\u003e\n  Download Original: \u003ca href=\"http://www.adiumxtras.com/download/7612\"\u003ehttp://www.adiumxtras.com/download/7612\u003c/a\u003e\n\u003c/div\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eThe second: \u003ca href=\"http://www.adiumxtras.com/index.php?a=xtras\u0026amp;xtra_id=382\"\u003eSuperMarioWorld\u003c/a\u003e\u003c/p\u003e\n\u003cp style=\"padding-left: 30px;\"\u003e\n  \u003cem\u003e\u0026#8220;a soundset from the super nintendo game, super mario world. a complete set with a slim default set, but also comes with additional sounds for extra customisation. matches my dock icon set. enjoy!!\u0026#8221;\u003c/em\u003e\n\u003c/p\u003e\n\u003cp style=\"padding-left: 30px;\"\u003e\n  Credits: original sounds by nintendo. edited and prepared for adium by aaron j hoffmann\n\u003c/p\u003e\n\u003cdiv style=\"padding-left: 30px;\"\u003e\n  Download MP3: \u003ca href=\"http://black-pixel.net/wp-content/uploads/2012/11/SuperMarioWorld.AdiumSoundsetMP3.zip\"\u003eSuperMarioWorld.AdiumSoundsetMP3\u003c/a\u003e\n\u003c/div\u003e\n\u003cdiv style=\"padding-left: 30px;\"\u003e\n  Download WAV: \u003ca href=\"http://black-pixel.net/wp-content/uploads/2012/11/SuperMarioWorld.AdiumSoundsetWAV.zip\"\u003eSuperMarioWorld.AdiumSoundsetWAV\u003c/a\u003e\n\u003c/div\u003e\n\u003cdiv style=\"padding-left: 30px;\"\u003e\n  Download Original: \u003ca href=\"http://www.adiumxtras.com/download/382\"\u003ehttp://www.adiumxtras.com/download/382\u003c/a\u003e\n\u003c/div\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eThe third: \u003ca href=\"http://www.adiumxtras.com/index.php?a=xtras\u0026amp;xtra_id=602\"\u003eTokyo Train Station\u003c/a\u003e\u003c/p\u003e\n\u003cp style=\"padding-left: 30px;\"\u003e\n  \u003cem\u003e\u0026#8220;Tokyo Train Station is a remake of Electric Dream, designed for users who enjoy the simplicity of Electric Dream but dislike its dreamy and uncanny capability of lulling them to sleep.\u003c/em\u003e\n\u003c/p\u003e\n\u003cp style=\"padding-left: 30px;\"\u003e\n  This is a collection of 5 mutated synthesizer runs for the following events: Buddy LogOn, Buddy LogOff, New Message Received, Message Sent, Message Received.\u003cem\u003e\u0026#8220;\u003c/em\u003e\n\u003c/p\u003e\n\u003cp style=\"padding-left: 30px;\"\u003e\n  Credits: All sounds created by Dominik Dimaano\n\u003c/p\u003e\n\u003cdiv style=\"padding-left: 30px;\"\u003e\n  Download MP3: \u003ca href=\"http://black-pixel.net/wp-content/uploads/2012/11/TokyoTrainStation.AdiumSoundsetMP3.zip\"\u003eTokyoTrainStation.AdiumSoundsetMP3\u003c/a\u003e\n\u003c/div\u003e\n\u003cdiv style=\"padding-left: 30px;\"\u003e\n  Download WAV: \u003ca href=\"http://black-pixel.net/wp-content/uploads/2012/11/TokyoTrainStation.AdiumSoundsetWAV.zip\"\u003eTokyoTrainStation.AdiumSoundsetWAV\u003c/a\u003e\n\u003c/div\u003e\n\u003cdiv style=\"padding-left: 30px;\"\u003e\n  Download Original: \u003ca href=\"http://www.adiumxtras.com/download/602\"\u003ehttp://www.adiumxtras.com/download/602\u003c/a\u003e\n\u003c/div\u003e\n\u003cdiv\u003e\n  \u003cp\u003e\n    \u0026nbsp;\n  \u003c/p\u003e\n  \u003cp\u003e\n    I\u0026#8217;ve used fre:ac to convert the original sound files.\u003cbr /\u003e You can download it for free at \u003ca href=\"http://www.freac.org/\"\u003ehttp://www.freac.org/\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e",
      "url": "https://black-pixel.net/2012/11/24/im-sounds/",
      "date_published": "24116-24-09T1154:2424:00+00:00",
      "date_modified": "24116-24-09T1154:2424:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "6393f47956b88ac01287315e4eef0724c15965db",
      "title": "Desktop Info: Conky for Windows",
      "summary": "",
      "content_text": "Desktop Info is a freeware program for Windows that’s very similar to the Linux program Conky. It’s very small and only consists of an exe file and an ini file in which the configuration is stored.\nQuote from the official homepage:\nThis little application displays system information on your desktop in a similar way to some other desktop information tools. Unlike others, this application looks like wallpaper but stays resident in memory and continues to update the display in real time. Uses very little memory and nearly zero cpu. Perfect for quick identification and walk-by monitoring of production or test server farms. Everything is customisable including language.\nHere is a screenshot from the desktop of my notebook:\n[1]\nThis is the configuration I am using:\n[options]\rtop=45\r#left=15\r#bottom=35\rright=15\rwidth=325\rfontface=Arial\rfontsize=8\rcleartype=0\rssfontsize=12\rformcolor=000000\rcontextmenu=1\rallowdrag=0\roffset=1\rnetworkadapterfilter=Microsoft Virtual WiFi Miniport Adapter\r#language=english.ini\rmsnstatus=0\rinimonitortime=15\r#log=desktopinfo.log\r[items]\r# date / time\rCOMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Your Name Here\rDATETIME=active:0,interval:1,color:DDDDDD\rTIMEZONE=active:0,interval:60,color:DDDDDD\rHOST=active:1,interval:0,color:DDDDDD\rUSER=active:1,interval:0,color:DDDDDD\rBOOTTIME=active:0,interval:0,color:DDDDDD\rUPTIME=active:1,interval:1,color:DDDDDD\r# hardware\rCOMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Hardware\rOEMINFO=active:0,interval:0,color:DDDDDD\rCPUTYPE=active:1,interval:0,color:DDDDDD\rCPUCOUNT=active:0,interval:0,color:DDDDDD\rCPUTEMP=active:0,interval:10,color:DDDDDD\rBATTERY=active:0,interval:60,color:DDDDDD,chart:1\rMOTHERBOARD=active:0,interval:0,color:DDDDDD\rBIOS=active:0,interval:0,color:DDDDDD\rDISPLAYCONTROLLER=active:0,interval:0,color:DDDDDD\rAUDIOCONTROLLER=active:0,interval:0,color:DDDDDD\rSERIALNUMBER=active:1,interval:0,color:DDDDDD\r# processes\rCOMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Processes\rCPU=active:1,interval:5,color:DDDDDD,chart:2,threshold:95,tcolor:DDDDDD\rCPUUSAGE=active:1,interval:5,color:DDDDDD,chart:0,threshold:95,tcolor:DDDDDD,count:5\rPROCESSCOUNT=active:1,interval:5,color:DDDDDD,chart:0,threshold:100,tcolor:DDDDDD\rTOPPROCESSCPU=active:1,interval:5,color:DDDDDD,chart:0,threshold:95,tcolor:DDDDDD\rTOPPROCESSMEM=active:1,interval:5,color:DDDDDD,chart:0,threshold:500,tcolor:DDDDDD\rTOPPROCESSPF=active:0,interval:5,color:DDDDDD,chart:0,threshold:5000,tcolor:DDDDDD\r# windows configuration\rCOMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Windows Configuration\rOSVERSION=active:1,interval:0,color:DDDDDD\rOSBUILD=active:1,interval:0,color:DDDDDD\rSERVICEPACK=active:0,interval:0,color:DDDDDD\rIEVERSION=active:0,interval:0,color:DDDDDD\rDIRECTX=active:0,interval:0,color:DDDDDD\rSCREEN=active:1,interval:120,color:DDDDDD\r# memory\rCOMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Memory\rPHYSICALRAM=active:1,interval:5,color:DDDDDD,chart:2,threshold:90,tcolor:DDDDDD\rVIRTUALMEMORY=active:1,interval:5,color:DDDDDD,chart:0,threshold:90,tcolor:DDDDDD\rPAGEFILE=active:1,interval:5,color:DDDDDD,chart:0,threshold:90,tcolor:DDDDDD\rPAGEFAULTS=active:1,interval:5,color:DDDDDD,chart:2,threshold:5000,tcolor:DDDDDD\r# network adapters\rCOMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Network Adapters\rNETWORKADAPTER=active:1,interval:30,color:DDDDDD,activeonly:1,count:8\rIPADDRESS=active:1,interval:30,color:DDDDDD,offset=1\rMACADDRESS=active:1,interval:60,color:DDDDDD,offset=1\rGATEWAY=active:1,interval:30,color:DDDDDD,offset=1\rDHCPSERVER=active:0,interval:30,color:DDDDDD,offset=1\rWINSSERVER=active:0,interval:30,color:DDDDDD,offset=1\r# network stack\rCOMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Network Stack\rDNSSERVER=active:1,interval:30,color:DDDDDD\rLEASEEXPIRY=active:0,interval:30,color:DDDDDD\rPROXY=active:0,interval:60,color:DDDDDD\rDOMAIN=active:1,interval:30,color:DDDDDD\rDOMAINCONTROLLER=active:1,interval:30,color:DDDDDD\rWORKGROUP=active:1,interval:30,color:DDDDDD\rNETCONNECTIONS=active:1,interval:10,color:DDDDDD,chart:0,threshold:150,tcolor:DDDDDD\rNETPACKETS=active:0,interval:10,color:DDDDDD\rNETPACKETSRATE=active:1,interval:10,color:DDDDDD,chart:2,threshold:500,tcolor:DDDDDD\r# disks\rCOMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Fixed Disks\rFIXEDDISK=active:1,interval:10,color:DDDDDD,chart:0,threshold:90,tcolor:DDDDDD,count:8,filter:C:D:\rDISKIO=active:1,interval:10,color:DDDDDD,chart:2,threshold:10000,tcolor:DDDDDD\r# printers\rCOMMENT=active:0,interval:0,color:DDDDDD,style:bu,text:Printers\rPRINTER=active:0,interval:60,color:888888,count:4\rPRINTERSTATUS=active:0,interval:60,color:888888\r# misc\rCOMMENT=active:0,interval:0,color:DDDDDD,style:iu,text:Miscellaneous – Testing\rFILE=active:0,interval:10,color:ff8888,type:text,text:Setup,file:c:setup.log\rREGISTRY=active:0,interval:10,color:ff8888,tree:1,text:Run Key MSC,key:HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunMSC\rEVENTLOG=active:0,interval:10,color:ff8888,text:System Events,log:System\rTSSESSIONS=active:0,interval:10,color:888888\rUNREADMAIL=active:0,interval:60,color:888888,chart:0,threshold:10,tcolor:DDDDDD I’ve not written it myself. I found it here: http://forum.notebookreview.com/windows-os-software/585646-desktop-info-conky-windows.html\nOfficial homepage: http://www.glenn.delahoy.com/software/\nDirect download link: http://www.glenn.delahoy.com/software/files/DesktopInfo120.zip\nFor information about the configuration options check out the ReadMe file: http://www.glenn.delahoy.com/software/files/desktopinfo.txt\n",
      "content_html": "\u003cp\u003eDesktop Info is a freeware program for Windows that’s very similar to the Linux program Conky. It’s very small and only consists of an exe file and an ini file in which the configuration is stored.\u003c/p\u003e\n\u003cp\u003eQuote from the official homepage:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eThis little application displays system information on your desktop in a similar way to some other desktop information tools. Unlike others, this application looks like wallpaper but stays resident in memory and continues to update the display in real time. Uses very little memory and nearly zero cpu. Perfect for quick identification and walk-by monitoring of production or test server farms. Everything is customisable including language.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eHere is a screenshot from the desktop of my notebook:\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"/wp-content/uploads/2012/10/desktopINFO.png\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n[1]\u003c/p\u003e\n\u003cp\u003eThis is the configuration I am using:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e[options]\r\ntop=45\r\n#left=15\r\n#bottom=35\r\nright=15\r\nwidth=325\r\nfontface=Arial\r\nfontsize=8\r\ncleartype=0\r\nssfontsize=12\r\nformcolor=000000\r\ncontextmenu=1\r\nallowdrag=0\r\noffset=1\r\nnetworkadapterfilter=Microsoft Virtual WiFi Miniport Adapter\r\n#language=english.ini\r\nmsnstatus=0\r\ninimonitortime=15\r\n#log=desktopinfo.log\r\n\r\n[items]\r\n# date / time\r\nCOMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Your Name Here\r\nDATETIME=active:0,interval:1,color:DDDDDD\r\nTIMEZONE=active:0,interval:60,color:DDDDDD\r\nHOST=active:1,interval:0,color:DDDDDD\r\nUSER=active:1,interval:0,color:DDDDDD\r\nBOOTTIME=active:0,interval:0,color:DDDDDD\r\nUPTIME=active:1,interval:1,color:DDDDDD\r\n# hardware\r\nCOMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Hardware\r\nOEMINFO=active:0,interval:0,color:DDDDDD\r\nCPUTYPE=active:1,interval:0,color:DDDDDD\r\nCPUCOUNT=active:0,interval:0,color:DDDDDD\r\nCPUTEMP=active:0,interval:10,color:DDDDDD\r\nBATTERY=active:0,interval:60,color:DDDDDD,chart:1\r\nMOTHERBOARD=active:0,interval:0,color:DDDDDD\r\nBIOS=active:0,interval:0,color:DDDDDD\r\nDISPLAYCONTROLLER=active:0,interval:0,color:DDDDDD\r\nAUDIOCONTROLLER=active:0,interval:0,color:DDDDDD\r\nSERIALNUMBER=active:1,interval:0,color:DDDDDD\r\n# processes\r\nCOMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Processes\r\nCPU=active:1,interval:5,color:DDDDDD,chart:2,threshold:95,tcolor:DDDDDD\r\nCPUUSAGE=active:1,interval:5,color:DDDDDD,chart:0,threshold:95,tcolor:DDDDDD,count:5\r\nPROCESSCOUNT=active:1,interval:5,color:DDDDDD,chart:0,threshold:100,tcolor:DDDDDD\r\nTOPPROCESSCPU=active:1,interval:5,color:DDDDDD,chart:0,threshold:95,tcolor:DDDDDD\r\nTOPPROCESSMEM=active:1,interval:5,color:DDDDDD,chart:0,threshold:500,tcolor:DDDDDD\r\nTOPPROCESSPF=active:0,interval:5,color:DDDDDD,chart:0,threshold:5000,tcolor:DDDDDD\r\n# windows configuration\r\nCOMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Windows Configuration\r\nOSVERSION=active:1,interval:0,color:DDDDDD\r\nOSBUILD=active:1,interval:0,color:DDDDDD\r\nSERVICEPACK=active:0,interval:0,color:DDDDDD\r\nIEVERSION=active:0,interval:0,color:DDDDDD\r\nDIRECTX=active:0,interval:0,color:DDDDDD\r\nSCREEN=active:1,interval:120,color:DDDDDD\r\n# memory\r\nCOMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Memory\r\nPHYSICALRAM=active:1,interval:5,color:DDDDDD,chart:2,threshold:90,tcolor:DDDDDD\r\nVIRTUALMEMORY=active:1,interval:5,color:DDDDDD,chart:0,threshold:90,tcolor:DDDDDD\r\nPAGEFILE=active:1,interval:5,color:DDDDDD,chart:0,threshold:90,tcolor:DDDDDD\r\nPAGEFAULTS=active:1,interval:5,color:DDDDDD,chart:2,threshold:5000,tcolor:DDDDDD\r\n# network adapters\r\nCOMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Network Adapters\r\nNETWORKADAPTER=active:1,interval:30,color:DDDDDD,activeonly:1,count:8\r\nIPADDRESS=active:1,interval:30,color:DDDDDD,offset=1\r\nMACADDRESS=active:1,interval:60,color:DDDDDD,offset=1\r\nGATEWAY=active:1,interval:30,color:DDDDDD,offset=1\r\nDHCPSERVER=active:0,interval:30,color:DDDDDD,offset=1\r\nWINSSERVER=active:0,interval:30,color:DDDDDD,offset=1\r\n# network stack\r\nCOMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Network Stack\r\nDNSSERVER=active:1,interval:30,color:DDDDDD\r\nLEASEEXPIRY=active:0,interval:30,color:DDDDDD\r\nPROXY=active:0,interval:60,color:DDDDDD\r\nDOMAIN=active:1,interval:30,color:DDDDDD\r\nDOMAINCONTROLLER=active:1,interval:30,color:DDDDDD\r\nWORKGROUP=active:1,interval:30,color:DDDDDD\r\nNETCONNECTIONS=active:1,interval:10,color:DDDDDD,chart:0,threshold:150,tcolor:DDDDDD\r\nNETPACKETS=active:0,interval:10,color:DDDDDD\r\nNETPACKETSRATE=active:1,interval:10,color:DDDDDD,chart:2,threshold:500,tcolor:DDDDDD\r\n# disks\r\nCOMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Fixed Disks\r\nFIXEDDISK=active:1,interval:10,color:DDDDDD,chart:0,threshold:90,tcolor:DDDDDD,count:8,filter:C:D:\r\nDISKIO=active:1,interval:10,color:DDDDDD,chart:2,threshold:10000,tcolor:DDDDDD\r\n# printers\r\nCOMMENT=active:0,interval:0,color:DDDDDD,style:bu,text:Printers\r\nPRINTER=active:0,interval:60,color:888888,count:4\r\nPRINTERSTATUS=active:0,interval:60,color:888888\r\n# misc\r\nCOMMENT=active:0,interval:0,color:DDDDDD,style:iu,text:Miscellaneous – Testing\r\nFILE=active:0,interval:10,color:ff8888,type:text,text:Setup,file:c:setup.log\r\nREGISTRY=active:0,interval:10,color:ff8888,tree:1,text:Run Key MSC,key:HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunMSC\r\nEVENTLOG=active:0,interval:10,color:ff8888,text:System Events,log:System\r\nTSSESSIONS=active:0,interval:10,color:888888\r\nUNREADMAIL=active:0,interval:60,color:888888,chart:0,threshold:10,tcolor:DDDDDD\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eI’ve not written it myself. I found it here: \u003ca href=\"http://forum.notebookreview.com/windows-os-software/585646-desktop-info-conky-windows.html\"\u003ehttp://forum.notebookreview.com/windows-os-software/585646-desktop-info-conky-windows.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eOfficial homepage: \u003ca href=\"http://www.glenn.delahoy.com/software/\"\u003ehttp://www.glenn.delahoy.com/software/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eDirect download link: \u003ca href=\"http://www.glenn.delahoy.com/software/files/DesktopInfo120.zip\"\u003ehttp://www.glenn.delahoy.com/software/files/DesktopInfo120.zip\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eFor information about the configuration options check out the ReadMe file: \u003ca href=\"http://www.glenn.delahoy.com/software/files/desktopinfo.txt\"\u003ehttp://www.glenn.delahoy.com/software/files/desktopinfo.txt\u003c/a\u003e\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2012/10/26/desktop-info-conky-for-windows/",
      "date_published": "26106-26-09T108:2626:00+00:00",
      "date_modified": "26106-26-09T108:2626:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "3047166bd5ac89afde0e7b96e6aeb4fef2314c15",
      "title": "Boot Straight to Desktop in Windows 8",
      "summary": "",
      "content_text": "I’ve written a little program that sends a “left Windows key pressed” key event which brings you to the desktop. All you have to do is start the .exe file after logging in.\nYou can do this by using either the task scheduler or the windows Startup folder (C:\\Users\\Username\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup).\nHowever the task scheduler should be a bit faster.\nHow to use the task scheduler:\nOpen the task scheduler and click on “Create Task…” on the right.\nChoose a name and go to Triggers.\nClick on “New” and choose “Begin the task: At Log on”.\nGo to Actions, click on “New”, browse for the .exe file and select it.\nIf you are on a laptop, go to Conditions and deselect “Start the task only if the computer is on AC power”.\nThis should be all.\nHere is the zipped .exe file:\nWinKey.zip\nHere is the C++ source code:\n#include \u0026lt;/p\u0026gt; \u0026lt;p\u0026gt;int main() { // This is the structure for the key input event INPUT keyevent; // Set the key event keyevent.type = INPUT_KEYBOARD; // Press the left Windows key keyevent.ki.wVk = 0x5B; // virtual-key code for the key http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx keyevent.ki.dwFlags = 0; // 0 for key press SendInput(1, \u0026amp;keyevent, sizeof(INPUT)); // Release the key keyevent.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release SendInput(1, \u0026amp;keyevent, sizeof(INPUT)); return 0; } Thanks to batchloaf for the SendInput tutorial.\n",
      "content_html": "\u003cp\u003eI’ve written a little program that sends a “left Windows key pressed” key event which brings you to the desktop. All you have to do is start the .exe file after logging in.\u003c/p\u003e\n\u003cp\u003eYou can do this by using either the task scheduler or the windows Startup folder (\u003ccode\u003eC:\\Users\\Username\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\u003c/code\u003e).\u003c/p\u003e\n\u003cp\u003eHowever the task scheduler should be a bit faster.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eHow to use the task scheduler:\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003eOpen the task scheduler and click on “Create Task…” on the right.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChoose a name and go to Triggers.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eClick on “New” and choose “Begin the task: At Log on”.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eGo to Actions, click on “New”, browse for the .exe file and select it.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIf you are on a laptop, go to Conditions and deselect “Start the task only if the computer is on AC power”.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eThis should be all.\u003c/p\u003e\n\u003cp\u003eHere is the zipped .exe file:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://black-pixel.net/wp-content/uploads/2012/10/WinKey.zip\"\u003e\u003cimg alt=\"\" src=\"http://black-pixel.net/wp-includes/images/crystal/archive.png\" width=\"28\" height=\"36\" /\u003e WinKey.zip\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eHere is the C++ source code:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e#include \u0026lt;/p\u0026gt;\n\u0026lt;p\u0026gt;int main() {\n\t// This is the structure for the key input event\n\tINPUT keyevent;\n\t// Set the key event\n\tkeyevent.type = INPUT_KEYBOARD;\n\t// Press the left Windows key\n\tkeyevent.ki.wVk = 0x5B; // virtual-key code for the key http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx\n\tkeyevent.ki.dwFlags = 0; // 0 for key press\n\tSendInput(1, \u0026amp;keyevent, sizeof(INPUT));\n\t// Release the key\n\tkeyevent.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release\n\tSendInput(1, \u0026amp;keyevent, sizeof(INPUT));\n\treturn 0;\n}\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThanks to \u003ca href=\"http://batchloaf.wordpress.com/2012/04/17/simulating-a-keystroke-in-win32-c-or-c-using-sendinput/\"\u003ebatchloaf\u003c/a\u003e for the SendInput tutorial.\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2012/10/11/boot-straight-to-desktop-in-windows-8/",
      "date_published": "11106-11-09T1033:1111:00+00:00",
      "date_modified": "11106-11-09T1033:1111:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "b2a03b453b777d73e46bfc978fa46f445f857c5e",
      "title": "Asus Xonar D2 on Windows 8",
      "summary": "",
      "content_text": "At the moment there is no official driver for Windows 8 and the Windows 7 driver does not work very well. You may get sound, but the Audio Center and all the functions won’t work.\nHowever, there is a 3rd party driver that works with all Asus Xonar cards.\nYou just have to download and install the Asus Xonar Unified Driver: http://brainbit.wordpress.com/2010/07/19/asus-xonar-unified-drivers/\nI am using the version 1.54 and everything works perfectly.\nI’m very glad someone bothered to write a proper driver. Too bad you can only donate through Paypal.\n",
      "content_html": "\u003cp\u003eAt the moment there is no official driver for Windows 8 and the Windows 7 driver does not work very well. You may get sound, but the Audio Center and all the functions won’t work.\u003c/p\u003e\n\u003cp\u003eHowever, there is a 3rd party driver that works with all Asus Xonar cards.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eYou just have to download and install the Asus Xonar Unified Driver: \u003ca href=\"http://brainbit.wordpress.com/2010/07/19/asus-xonar-unified-drivers/\"\u003ehttp://brainbit.wordpress.com/2010/07/19/asus-xonar-unified-drivers/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eI am using the version 1.54 and everything works perfectly.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eI’m very glad someone bothered to write a proper driver. Too bad you can only donate through Paypal.\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2012/10/03/asus-xonar-d2-on-windows-8/",
      "date_published": "3106-03-09T1058:33:00+00:00",
      "date_modified": "3106-03-09T1058:33:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "9cae0636de109d70e42ce53d948df64ad8700fe2",
      "title": "My First Blender Creations",
      "summary": "",
      "content_text": "I’ve wanted to learn using the open source 3D computer graphics software Blender for a long time.\nLast month I finally managed to put some time into it. I’ve designed some spaceship chassis for a German browser game called Omega-Day.\nYou can watch them “in action” here on the bottom left: http://techtree.omega-day.com/index.php?op=ship\nI’ve also uploaded them to this blog, you can find them at the 3D Art (Blender) page in the art section.\nThanks to svenniemannie for letting me use his spaceship texture.\nAnother thing I’ve created this alien:\nI originally intended to use it as an image for the race whose spaceship chassis I’ve created but it didn’t fit that well.\nI’ve used the Monster Alien Skin Texture by SweetSoulSister. I’m not satisfied with how it looks, but that’s my fault. The textures are really great.\n",
      "content_html": "\u003cp\u003eI’ve wanted to learn using the open source 3D computer graphics software Blender for a long time.\u003c/p\u003e\n\u003cp\u003eLast month I finally managed to put some time into it. I’ve designed some spaceship chassis for a German browser game called \u003ca href=\"http://www.omega-day.com\"\u003eOmega-Day\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eYou can watch them “in action” here on the bottom left: \u003ca href=\"http://techtree.omega-day.com/index.php?op=ship\"\u003ehttp://techtree.omega-day.com/index.php?op=ship\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eI’ve also uploaded them to this blog, you can find them at the \u003ca href=\"http://black-pixel.net/art/3d-art-blender\"\u003e3D Art (Blender)\u003c/a\u003e page in the art section.\u003c/p\u003e\n\u003cp\u003eThanks to \u003ca href=\"http://svenniemannie.deviantart.com/\"\u003esvenniemannie\u003c/a\u003e for letting me use his spaceship texture.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eAnother thing I’ve created this alien:\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"http://black-pixel.net/wp-content/uploads/2012/10/alien.jpg\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cp\u003eI originally intended to use it as an image for the race whose spaceship chassis I’ve created but it didn’t fit that well.\u003c/p\u003e\n\u003cp\u003eI’ve used the \u003ca href=\"http://sweetsoulsister.deviantart.com/art/Monster-Alien-Skin-Textures-144354463\"\u003eMonster Alien Skin Texture\u003c/a\u003e by \u003ca href=\"http://sweetsoulsister.deviantart.com/\"\u003eSweetSoulSister\u003c/a\u003e. I’m not satisfied with how it looks, but that’s my fault. The textures are really great.\u003c/p\u003e",
      "url": "https://black-pixel.net/2012/10/03/my-first-blender-creations/",
      "date_published": "3106-03-09T1049:33:00+00:00",
      "date_modified": "3106-03-09T1049:33:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "7157b1b663e353684cbe8d05158014ee18d3cb00",
      "title": "Resize Multiple Images at Once with IrfanView",
      "summary": "",
      "content_text": "This is a tutorial on how to resize multiple images at once using the free program IrfanView.\nImagine you have a folder with several photos which you want to make smaller so you can mail them to friends or upload them somewhere.\nFirst open IrfanView and select File and click on Batch Conversion/Rename.\nIn the batch conversion window navigate to your images on the top right and add them. Also specify an output directory. I’d use a separate folder within the current one.\nThe next step is to set the new size. Check “Use advanced options (for bulk resize…)” and click on Advanced.\nThere are many options but the only thing we need for this tutorial is resize. Just set the width or the height, leave the rest empty and click on OK. It’s important to use either width or height and not both so the pictures don’t get distorted.\nNow back in the batch conversion window click on Start Batch. A new window should appear saying that the batch conversion is done. That’s it!\n",
      "content_html": "\u003cp\u003eThis is a tutorial on how to resize multiple images at once using the free program IrfanView.\u003c/p\u003e\n\u003cp\u003eImagine you have a folder with several photos which you want to make smaller so you can mail them to friends or upload them somewhere.\u003c/p\u003e\n\u003cp\u003eFirst open IrfanView and select File and click on Batch Conversion/Rename.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"https://black-pixel.net/wp-content/uploads/2012/09/irfanview1.gif\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cp\u003eIn the batch conversion window navigate to your images on the top right and add them. Also specify an output directory. I’d use a separate folder within the current one.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"https://black-pixel.net/wp-content/uploads/2012/09/irfanview2.gif\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cp\u003eThe next step is to set the new size. Check “Use advanced options (for bulk resize…)” and click on Advanced.\u003c/p\u003e\n\u003cp\u003eThere are many options but the only thing we need for this tutorial is resize. Just set the width or the height, leave the rest empty and click on OK. It’s important to use either width or height and not both so the pictures don’t get distorted.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"https://black-pixel.net/wp-content/uploads/2012/09/irfanview3.gif\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cp\u003eNow back in the batch conversion window click on Start Batch. A new window should appear saying that the batch conversion is done. That’s it!\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"https://black-pixel.net/wp-content/uploads/2012/09/irfanview4.gif\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2012/09/30/resize-multiple-images-at-once-with-irfanview/",
      "date_published": "30096-30-09T952:3030:00+00:00",
      "date_modified": "30096-30-09T952:3030:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "fb20e9e0cd9b4f6b11eeaa1c0d15000b7fe2d3af",
      "title": "Asus Xonar D2 on Windows 8 RP",
      "summary": "",
      "content_text": "Update:\nThere is a better method to make your Asus Xonar soundcard work on Windows 8. You just have to use a 3rd party driver. See this post for further information: http://black-pixel.net/asus-xonar-d2-on-windows-8.html\nThis is a tutorial on how to make your Asus Xonar D2 sound card work on Windows 8 Release Preview.\nFirst of all download the driver at the Asus homepage.\nNext you have to launch the setup in Windows 7 compatibility mode.\nAfter finishing the setup, run regedit and search for [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass{4d36e96c-e325-11ce-bfc1-08002be10318}0007Settings]\nOn your system it may also be 0008, you’ll have to find the right one yourself.\nChange the SpeakerConfig key to 06 00 00 00 and the SpDigitalOut key to 01 00 00 00.\nNow reboot and everything should work.\nI found this solution at https://vip.asus.com/forum/view.aspx?board_id=21\u0026amp;model=Xonar%20D2X\u0026amp;id=20120301055430259\u0026amp;page=1\u0026amp;SLanguage=en-us\n",
      "content_html": "\u003cp\u003e\u003cspan style=\"color: #ff0000;\"\u003eUpdate:\u003c/span\u003e\u003c/p\u003e\n\u003cp\u003e\u003cspan style=\"color: #ff0000;\"\u003eThere is a better method to make your Asus Xonar soundcard work on Windows 8. You just have to use a 3rd party driver. See this post for further information: \u003c/span\u003e\u003ca href=\"http://black-pixel.net/asus-xonar-d2-on-windows-8.html\"\u003ehttp://black-pixel.net/asus-xonar-d2-on-windows-8.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eThis is a tutorial on how to make your Asus Xonar D2 sound card work on Windows 8 Release Preview.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eFirst of all download the driver at the Asus homepage.\u003c/p\u003e\n\u003cp\u003eNext you have to launch the setup in Windows 7 compatibility mode.\u003c/p\u003e\n\u003cp\u003eAfter finishing the setup, run regedit and search for [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass{4d36e96c-e325-11ce-bfc1-08002be10318}\u003cstrong\u003e0007\u003c/strong\u003eSettings]\u003c/p\u003e\n\u003cp\u003eOn your system it may also be 0008, you’ll have to find the right one yourself.\u003c/p\u003e\n\u003cp\u003eChange the SpeakerConfig key to 06 00 00 00 and the SpDigitalOut key to 01 00 00 00.\u003c/p\u003e\n\u003cp\u003eNow reboot and everything should work.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eI found this solution at \u003ca href=\"https://vip.asus.com/forum/view.aspx?board_id=21\u0026amp;model=Xonar%20D2X\u0026amp;id=20120301055430259\u0026amp;page=1\u0026amp;SLanguage=en-us\"\u003ehttps://vip.asus.com/forum/view.aspx?board_id=21\u0026amp;model=Xonar%20D2X\u0026amp;id=20120301055430259\u0026amp;page=1\u0026amp;SLanguage=en-us\u003c/a\u003e\u003c/p\u003e",
      "url": "https://black-pixel.net/2012/08/07/asus-xonar-d2-on-windows-8-rp/",
      "date_published": "7086-07-09T815:77:00+00:00",
      "date_modified": "7086-07-09T815:77:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "759dd05938e486aaf7740d77e0d24b5ac1570d43",
      "title": "How to Embed Videos with HTML 5",
      "summary": "",
      "content_text": "I’ve just embedded my first video (MP4) with HTML 5. I think this is much better than depending on the Quicktime player or converting it to Flash and it’s very easy.\nHere is an example code for embedding a MP4 video I’ve recorded with my Android phone:\n\u0026lt;video width=\u0026#34;529\u0026#34; height=\u0026#34;300\u0026#34; controls=\u0026#34;controls\u0026#34;\u0026gt; \u0026lt;source src=\u0026#34;VIDEO0006.mp4\u0026#34; type=\u0026#34;video/mp4\u0026#34; /\u0026gt; Your browser does not support the video tag. \u0026lt;/video\u0026gt; The control attribute adds video controls, like play, pause, and volume. You can have multiple sources of the same file. The browser will use the first recognized format.\nYou may also want to set the codec that is used in your video. You can to this with the codecs=\u0026quot;\u0026quot; tag. A good way to find out what codec and aspect ratio your video uses is a free software called MediaInfo.\nAt the moment, there are 3 supported video formats:\nBrowser MP4 WebM Ogg Internet Explorer 9 YES NO NO Firefox 4.0 NO YES YES Google Chrome 6 YES YES YES Apple Safari 5 YES NO NO Opera 10.6 NO YES YES MP4 = MPEG 4 files with H264 video codec and AAC audio codec\nWebM = WebM files with VP8 video codec and Vorbis audio codec\nOgg = Ogg files with Theora video codec and Vorbis audio codec\nAs you can see unfortunately not all the major browsers support the same formats. It’s best to combine MP4 and Webm or MP4 and Ogg.\nIf you want more detailed information, have a look at these sites:\nhttp://www.w3schools.com/html5/html5_video.asp\nhttp://www.webmonkey.com/2010/05/embed-videos-in-your-web-pages-using-html5\nYou may also find this aspect ratio calculator to be useful if you want to resize your video:\nhttp://andrew.hedges.name/experiments/aspect_ratio/\n",
      "content_html": "\u003cp\u003eI’ve just embedded my first video (MP4) with HTML 5. I think this is much better than depending on the Quicktime player or converting it to Flash and it’s very easy.\u003c/p\u003e\n\u003cp\u003eHere is an example code for embedding a MP4 video I’ve recorded with my Android phone:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e\u0026lt;video width=\u0026#34;529\u0026#34; height=\u0026#34;300\u0026#34; controls=\u0026#34;controls\u0026#34;\u0026gt;\n  \u0026lt;source src=\u0026#34;VIDEO0006.mp4\u0026#34; type=\u0026#34;video/mp4\u0026#34; /\u0026gt;\n  Your browser does not support the video tag.\n\u0026lt;/video\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThe control attribute adds video controls, like play, pause, and volume. You can have multiple sources of the same file. The browser will use the first recognized format.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eYou may also want to set the codec that is used in your video. You can to this with the \u003ccode\u003ecodecs=\u0026quot;\u0026quot;\u003c/code\u003e tag. A good way to find out what codec and aspect ratio your video uses is a free software called \u003ca href=\"http://mediainfo.sourceforge.net/en\"\u003eMediaInfo\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eAt the moment, there are 3 supported video formats:\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eBrowser\u003c/th\u003e\n\u003cth\u003eMP4\u003c/th\u003e\n\u003cth\u003eWebM\u003c/th\u003e\n\u003cth\u003eOgg\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eInternet Explorer 9\u003c/td\u003e\n\u003ctd\u003eYES\u003c/td\u003e\n\u003ctd\u003eNO\u003c/td\u003e\n\u003ctd\u003eNO\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eFirefox 4.0\u003c/td\u003e\n\u003ctd\u003eNO\u003c/td\u003e\n\u003ctd\u003eYES\u003c/td\u003e\n\u003ctd\u003eYES\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eGoogle Chrome 6\u003c/td\u003e\n\u003ctd\u003eYES\u003c/td\u003e\n\u003ctd\u003eYES\u003c/td\u003e\n\u003ctd\u003eYES\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eApple Safari 5\u003c/td\u003e\n\u003ctd\u003eYES\u003c/td\u003e\n\u003ctd\u003eNO\u003c/td\u003e\n\u003ctd\u003eNO\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eOpera 10.6\u003c/td\u003e\n\u003ctd\u003eNO\u003c/td\u003e\n\u003ctd\u003eYES\u003c/td\u003e\n\u003ctd\u003eYES\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eMP4 = MPEG 4 files with H264 video codec and AAC audio codec\u003cbr /\u003e WebM = WebM files with VP8 video codec and Vorbis audio codec\u003cbr /\u003e Ogg = Ogg files with Theora video codec and Vorbis audio codec\u003c/p\u003e\n\u003cp\u003eAs you can see unfortunately not all the major browsers support the same formats. It’s best to combine MP4 and Webm or MP4 and Ogg.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eIf you want more detailed information, have a look at these sites:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://www.w3schools.com/html5/html5_video.asp\"\u003ehttp://www.w3schools.com/html5/html5_video.asp\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://www.webmonkey.com/2010/05/embed-videos-in-your-web-pages-using-html5/\"\u003ehttp://www.webmonkey.com/2010/05/embed-videos-in-your-web-pages-using-html5\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eYou may also find this aspect ratio calculator to be useful if you want to resize your video:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://andrew.hedges.name/experiments/aspect_ratio/\"\u003ehttp://andrew.hedges.name/experiments/aspect_ratio/\u003c/a\u003e\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2012/07/10/how-to-embed-videos-with-html5/",
      "date_published": "10076-10-09T744:1010:00+00:00",
      "date_modified": "10076-10-09T744:1010:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "6548a53c7c52a256f4760fe6d280a4f63e3e0483",
      "title": "Installing OpenELEC on the Raspberry Pi",
      "summary": "",
      "content_text": "This is a brief tutorial on how to install the Open Embedded Linux Entertainment Center on your Raspberry Pi from within Windows.\nFirst of all get one of the images from there: http://sparky0815.de/openelec-download-images-fat-files/\nNext you need to get the USB Image Tool: http://www.alexpage.de/usb-image-tool/download/\nNow unpack the image using 7 zip for example.\nThen format your SD Card, this is just so the USB Image Tool can find it.\nAfter that open up USB Image Tool.exe, select your SD card on the left, click on restore and select the OpenELEC image.\nNow you just have to wait until it’s done.\nIf this did not work for you or you are searching for other methods, you may want to take a look at these links:\nhttp://wiki.openelec.tv/index.php?title=Building_and_Installing_OpenELEC_for_Raspberry_Pi\nhttp://openelec.tv/forum/124-raspberry-pi\n",
      "content_html": "\u003cp\u003eThis is a brief tutorial on how to install the \u003ca href=\"openelec.tv\"\u003eOpen Embedded Linux Entertainment Center\u003c/a\u003e on your Raspberry Pi from within Windows.\u003c/p\u003e\n\u003cp\u003eFirst of all get one of the images from there: \u003ca href=\"http://sparky0815.de/openelec-download-images-fat-files/\"\u003ehttp://sparky0815.de/openelec-download-images-fat-files/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eNext you need to get the USB Image Tool: \u003ca href=\"http://www.alexpage.de/usb-image-tool/download/\"\u003ehttp://www.alexpage.de/usb-image-tool/download/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eNow unpack the image using 7 zip for example.\u003c/p\u003e\n\u003cp\u003eThen format your SD Card, this is just so the USB Image Tool can find it.\u003c/p\u003e\n\u003cp\u003eAfter that open up USB Image Tool.exe, select your SD card on the left, click on restore and select the OpenELEC image.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://black-pixel.net/wp-content/uploads/2012/07/usbit.gif\"\u003e\u003cimg class=\"alignnone size-full wp-image-870\" title=\"usbit\" alt=\"usbit\" src=\"http://black-pixel.net/wp-content/uploads/2012/07/usbit.gif\" width=\"506\" height=\"431\" /\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eNow you just have to wait until it’s done.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eIf this did not work for you or you are searching for other methods, you may want to take a look at these links:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://wiki.openelec.tv/index.php?title=Building_and_Installing_OpenELEC_for_Raspberry_Pi\"\u003ehttp://wiki.openelec.tv/index.php?title=Building_and_Installing_OpenELEC_for_Raspberry_Pi\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://openelec.tv/forum/124-raspberry-pi\"\u003ehttp://openelec.tv/forum/124-raspberry-pi\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e",
      "url": "https://black-pixel.net/2012/07/07/installing-openelec-on-the-raspberry-pi/",
      "date_published": "7076-07-09T740:77:00+00:00",
      "date_modified": "7076-07-09T740:77:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "2917c9b0775ab1917e3ac2a70aa85841b946309b",
      "title": "Chrooted SFTP Without Shell Access",
      "summary": "",
      "content_text": "Sometimes you may need to give someone access to load files onto your server. I don’t like FTP because it’s insecure and frankly I don’t want to set up a FTP server just for that. The problem with SFTP is that the user can look through your folders and has shell access. To solve this, I’ve written this tutorial on how to set up a chrooted SFTP account without shell access.\nFirst of all, edit the file /etc/ssh/sshd_config and add/change the following:\n#Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp Match Group sftp ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no The first line changes the SFTP-Subsystem to the internal SFTP-Server which is better for chrooting.\nThe second line (Match Group sftp) causes the lines below to only affect users in the sftp usergroup.\nChrootDirectory %h binds the users to their home directory so they can’t see what’s outside.\nThe next line forces internal-sftp and the last one disables TCP forwarding.\nThat’s it.\nNow you have to create a user with the appropriate settings.\ngroupadd sftp useradd -d /path/to/the/sftp/folder -s /bin/false -G sftp Username passwd Username There is one more thing you have to care about. The home folder of this user has to be owned by root, else you won’t be able to login. Then you can create an upload folder for the user. For example:\nchown root:root /path/to/sftp/folder mkdir /path/to/sftp/folder/uploads chown Username:Username /path/to/sftp/folder/uploads I found most of the information about this at this German blog: http://madapez.com/it/linux/howto-chroot-sftp-zugang-openssh-ohne-shell-ssh/\n",
      "content_html": "\u003cp\u003eSometimes you may need to give someone access to load files onto your server. I don’t like FTP because it’s insecure and frankly I don’t want to set up a FTP server just for that. The problem with SFTP is that the user can look through your folders and has shell access. To solve this, I’ve written this tutorial on how to set up a chrooted SFTP account without shell access.\u003c/p\u003e\n\u003cp\u003eFirst of all, edit the file \u003ccode\u003e/etc/ssh/sshd_config\u003c/code\u003e and add/change the following:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e#Subsystem sftp /usr/lib/openssh/sftp-server\nSubsystem sftp internal-sftp\n\nMatch Group sftp\n        ChrootDirectory %h\n        ForceCommand internal-sftp\n        AllowTcpForwarding no\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThe first line changes the SFTP-Subsystem to the internal SFTP-Server which is better for chrooting.\u003c/p\u003e\n\u003cp\u003eThe second line (Match Group sftp) causes the lines below to only affect users in the sftp usergroup.\u003c/p\u003e\n\u003cp\u003eChrootDirectory %h binds the users to their home directory so they can’t see what’s outside.\u003c/p\u003e\n\u003cp\u003eThe next line forces internal-sftp and the last one disables TCP forwarding.\u003c/p\u003e\n\u003cp\u003eThat’s it.\u003c/p\u003e\n\u003cp\u003eNow you have to create a user with the appropriate settings.\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003egroupadd sftp\nuseradd -d /path/to/the/sftp/folder -s /bin/false -G sftp Username\npasswd Username\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThere is one more thing you have to care about. The home folder of this user has to be owned by root, else you won’t be able to login. Then you can create an upload folder for the user. For example:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003echown root:root /path/to/sftp/folder\nmkdir /path/to/sftp/folder/uploads\nchown Username:Username /path/to/sftp/folder/uploads\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eI found most of the information about this at this German blog: \u003ca href=\"http://madapez.com/it/linux/howto-chroot-sftp-zugang-openssh-ohne-shell-ssh/\"\u003ehttp://madapez.com/it/linux/howto-chroot-sftp-zugang-openssh-ohne-shell-ssh/\u003c/a\u003e\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2012/05/20/chrooted-sftp-without-shell-access/",
      "date_published": "20056-20-09T555:2020:00+00:00",
      "date_modified": "20056-20-09T555:2020:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "6a97c2a1428b2647dd11187135723ccbfe12e10b",
      "title": "My Favourite Google Chrome Extensions",
      "summary": "",
      "content_text": "These are my favourite Google Chrome extensions at the moment.\nGhostery\nProtect your privacy. See who\u0026#8217;s tracking your web browsing with Ghostery. Basically what Ghostery does is it detects trackers, web bugs, pixels, and beacons placed on web pages by Facebook, Google Analytics, and over 500 other ad networks and blocks them.\nScriptNo\nRegain control of the web and surf more securely. ScriptNo is very much like the famous NoScript for Firefox. In my opinion, it is the best plugin of that kind for Google Chrome.\nAdBlock\nAdBlock for Chrome! Block all advertisements on all web pages, even Facebook, Youtube, and Hulu. The best way to block ads.\nYoutube Options\nYouTube Options: disable ads, annotations, and auto-play; change resolution, display size, optional flash pre-buffering, looping/replay, SSL; download all available versions of the media (this will require installing the full version from the developers website). If you often watch Youtube videos, you should get this extension.\nBetter Pop Up Blocker\nImproves the Google Chrome pop up blocker by blocking pop up windows opened by javascript \u0026 other annoyances that it misses. This will block all the annoying pop up windows.\n",
      "content_html": "\u003cp\u003eThese are my favourite Google Chrome extensions at the moment.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://chrome.google.com/webstore/detail/mlomiejdfkolichcflejclcbmpeaniij\"\u003eGhostery\u003c/a\u003e\u003c/p\u003e\n\u003cp style=\"padding-left: 30px;\"\u003e\n  \u003cem\u003eProtect your privacy. See who\u0026#8217;s tracking your web browsing with Ghostery.\u003c/em\u003e\n\u003c/p\u003e\n\u003cp\u003eBasically what Ghostery does is it detects trackers, web bugs, pixels, and beacons placed on web pages by Facebook, Google Analytics, and over 500 other ad networks and blocks them.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://chrome.google.com/webstore/detail/oiigbmnaadbkfbmpbfijlflahbdbdgdf\"\u003eScriptNo\u003c/a\u003e\u003c/p\u003e\n\u003cp style=\"padding-left: 30px;\"\u003e\n   \u003cem\u003eRegain control of the web and surf more securely.\u003c/em\u003e\n\u003c/p\u003e\n\u003cp\u003eScriptNo is very much like the famous NoScript for Firefox. In my opinion, it is the best plugin of that kind for Google Chrome.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://chrome.google.com/webstore/detail/gighmmpiobklfepjocnamgkkbiglidom\"\u003eAdBlock\u003c/a\u003e\u003c/p\u003e\n\u003cp style=\"padding-left: 30px;\"\u003e\n  \u003cem\u003eAdBlock for Chrome!  Block all advertisements on all web pages, even Facebook, Youtube, and Hulu.\u003c/em\u003e\n\u003c/p\u003e\n\u003cp\u003eThe best way to block ads.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://chrome.google.com/webstore/detail/bdokagampppgbnjfdlkfpphniapiiifn\"\u003eYoutube Options\u003c/a\u003e\u003c/p\u003e\n\u003cp style=\"padding-left: 30px;\"\u003e\n  \u003cem\u003eYouTube Options: disable ads, annotations, and auto-play; change resolution, display size, optional flash pre-buffering, looping/replay, SSL; download all available versions of the media (this will require installing the full version from the developers website).\u003c/em\u003e\n\u003c/p\u003e\n\u003cp\u003eIf you often watch Youtube videos, you should get this extension.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://chrome.google.com/webstore/detail/nmpeeekfhbmikbdhlpjbfmnpgcbeggic\"\u003eBetter Pop Up Blocker\u003c/a\u003e\u003c/p\u003e\n\u003cp style=\"padding-left: 30px;\"\u003e\n  \u003cem\u003eImproves the Google Chrome pop up blocker by blocking pop up windows opened by javascript \u0026 other annoyances that it misses.\u003c/em\u003e\n\u003c/p\u003e\n\u003cp\u003eThis will block all the annoying pop up windows.\u003c/p\u003e",
      "url": "https://black-pixel.net/2012/05/01/my-favourite-google-chrome-extensions/",
      "date_published": "1056-01-09T55:11:00+00:00",
      "date_modified": "1056-01-09T55:11:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "ef8cf002c8d75588b6db549ac983b91c8f4c9ccf",
      "title": "Mailman with Postfix and Nginx on CentOS 6",
      "summary": "",
      "content_text": "In this tutorial I will show you how to set up Mailman with Postfix and Nginx on CentOS 6. I assume you have already set up Nginx to server CGI scripts using fcgiwrap like I’ve shown you in the previous post.\nHere is the link: http://black-pixel.net/serving-cgi-scripts-with-nginx-on-centos-6.html\nI also presuppose that you have a working Postfix configuration.\nThe first step is to install Mailman.\nyum install mailman\nNext you have to edit your /usr/lib/mailman/Mailman/Defaults.py and change the DEFAULT_URL_PATTERN.\nDEFAULT_URL_PATTERN = 'http://%s/mailman/cgi-bin/'\nThis is the same hierarchy as in the directory at /usr/lib.\nNext download this script: http://black-pixel.net/stuff/postfix-to-mailman.tar\nExtract the postfix-to-mailman.py into the folder /usr/lib/mailman/bin/.\nAs a next step, you’ll have to create a Nginx configuration.\nvim /etc/nginx/conf.d/lists.example.conf\nAdd the following lines and adjust you domain:\nserver { server_name lists.exmaple.com; # your domain name location /mailman/cgi-bin { root /usr/lib; fastcgi_split_path_info (^/mailman/cgi-bin/[^/]*)(.*)$; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_intercept_errors on; fastcgi_pass unix:/var/run/fcgiwrap.socket; } location /images/mailman { alias /usr/share/images/mailman; } location /pipermail { alias /var/lib/mailman/archives/public; autoindex on; } } That’s it for Nginx, don’t forget to restart it.\nThe last thing we have to take care of is the Postfix configuration.\npostconf -e \u0026#39;relay_domains = lists.example.com\u0026#39; postconf -e \u0026#39;mailman_destination_recipient_limit = 1\u0026#39; Make sure your local IPv6 adress is at mydestinations = in your main.cf because mailman seems to use it for sending mails.\nmydestinations = 127.0.0.1/8, [::1]/128\nNext edit the master.cf file and add the following to the bottom:\nmailman unix - n n - - pipe flags=FR user=list(i used mailman) argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user} Now we need a transport map:\npostconf -e 'transport_maps = hash:/etc/postfix/transport'\nEdit the new transport file and add the following line:\nlists.example.com mailman:\nAfter that:\npostmap -v /etc/postfix/transport service postfix restart You’re nearly done, add the defaul mailing list called mailman:\n/usr/lib/mailman/bin/newlist --urlhost=lists.example.com --emailhost=lists.example.com mailman\nEdit your aliases file as told and execute newaliases and postfix restart.\nNow you can do the same for any mailing list you want to create.\nAfter that start Mailman and add it to chkconfig.\nservice mailman start chkconfig -–levels 2345 mailman on You can access the Mailman list page at lists.example.com/mailman/cgi-bin/listinfo.\nIf you have any problems feel free to write a comment and I will try to help you asap. I’m not 100 percent sure if I’ve written everything necessary as I had to tweak around a lot to make it work.\n",
      "content_html": "\u003cp\u003eIn this tutorial I will show you how to set up Mailman with Postfix and Nginx on CentOS 6. I assume you have already set up Nginx to server CGI scripts using fcgiwrap like I’ve shown you in the previous post.\u003c/p\u003e\n\u003cp\u003eHere is the link: http://black-pixel.net/serving-cgi-scripts-with-nginx-on-centos-6.html\u003c/p\u003e\n\u003cp\u003eI also presuppose that you have a working Postfix configuration.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eThe first step is to install Mailman.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eyum install mailman\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eNext you have to edit your \u003ccode\u003e/usr/lib/mailman/Mailman/Defaults.py\u003c/code\u003e and change the \u003ccode\u003eDEFAULT_URL_PATTERN\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eDEFAULT_URL_PATTERN = 'http://%s/mailman/cgi-bin/'\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eThis is the same hierarchy as in the directory at \u003ccode\u003e/usr/lib\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eNext download this script: \u003ca href=\"http://black-pixel.net/stuff/postfix-to-mailman.tar\"\u003ehttp://black-pixel.net/stuff/postfix-to-mailman.tar\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eExtract the postfix-to-mailman.py into the folder \u003ccode\u003e/usr/lib/mailman/bin/\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eAs a next step, you’ll have to create a Nginx configuration.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003evim /etc/nginx/conf.d/lists.example.conf\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eAdd the following lines and adjust you domain:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eserver {\n    server_name  lists.exmaple.com;                   # your domain name\n\n        location /mailman/cgi-bin {\n               root /usr/lib;\n               fastcgi_split_path_info (^/mailman/cgi-bin/[^/]*)(.*)$;\n               include /etc/nginx/fastcgi_params;\n               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n               fastcgi_param PATH_INFO $fastcgi_path_info;\n               fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;\n               fastcgi_intercept_errors on;\n               fastcgi_pass unix:/var/run/fcgiwrap.socket;\n        }\n\n        location /images/mailman {\n               alias /usr/share/images/mailman;\n        }\n\n        location /pipermail {\n               alias /var/lib/mailman/archives/public;\n               autoindex on;\n        }\n}\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThat’s it for Nginx, don’t forget to restart it.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eThe last thing we have to take care of is the Postfix configuration.\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003epostconf -e \u0026#39;relay_domains = lists.example.com\u0026#39;\npostconf -e \u0026#39;mailman_destination_recipient_limit = 1\u0026#39;\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eMake sure your local IPv6 adress is at \u003ccode\u003emydestinations =\u003c/code\u003e in your \u003ccode\u003emain.cf\u003c/code\u003e because mailman seems to use it for sending mails.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003emydestinations = 127.0.0.1/8, [::1]/128\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eNext edit the \u003ccode\u003emaster.cf\u003c/code\u003e file and add the following to the bottom:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003emailman   unix  -       n       n       -       -       pipe\n  flags=FR user=list(i used mailman) argv=/usr/lib/mailman/bin/postfix-to-mailman.py\n  ${nexthop} ${user}\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eNow we need a transport map:\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003epostconf -e 'transport_maps = hash:/etc/postfix/transport'\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eEdit the new transport file and add the following line:\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003elists.example.com mailman:\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eAfter that:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003epostmap -v /etc/postfix/transport\nservice postfix restart\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eYou’re nearly done, add the defaul mailing list called mailman:\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e/usr/lib/mailman/bin/newlist --urlhost=lists.example.com --emailhost=lists.example.com mailman\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eEdit your aliases file as told and execute \u003ccode\u003enewaliases\u003c/code\u003e and \u003ccode\u003epostfix restart\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eNow you can do the same for any mailing list you want to create.\u003c/p\u003e\n\u003cp\u003eAfter that start Mailman and add it to chkconfig.\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eservice mailman start\nchkconfig -–levels 2345 mailman on\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eYou can access the Mailman list page at \u003ccode\u003elists.example.com/mailman/cgi-bin/listinfo\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eIf you have any problems feel free to write a comment and I will try to help you asap. I’m not 100 percent sure if I’ve written everything necessary as I had to tweak around a lot to make it work.\u003c/p\u003e",
      "url": "https://black-pixel.net/2012/02/24/mailman-with-postfix-and-nginx-on-centos-6/",
      "date_published": "24026-24-09T247:2424:00+00:00",
      "date_modified": "24026-24-09T247:2424:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "b2ee85cd252cb51c0c66ea4fff4ad9c28fd626ec",
      "title": "Serving CGI Scripts with Nginx on CentOS 6",
      "summary": "",
      "content_text": "In this post I will show you how to serve CGI scripts with Nginx on CentOS 6 using fcgiwrap.\nAs there’s no fcgiwrap package for CentOS 6.0, you must build it yourself. First install some prerequisites:\nyum groupinstall \u0026#39;Development Tools\u0026#39; yum install fcgi-devel Now you can build fcgiwrap:\ncd /usr/local/src/ git clone git://github.com/gnosek/fcgiwrap.git cd fcgiwrap autoreconf -i ./configure make make install This installs fcgiwrap to /usr/local/sbin/fcgiwrap.\n1a: Install the spawn-fcgi package which allows you to run fcgiwrap as a daemon:\nyum install spawn-fcgi\n1b: If you are already using spawn-fcgi for php, copy the init.d script and sysconfig of spawn-fcgi\ncp -R /etc/init.d/spawn-fcgi /etc/init.d/spawn-fcgi2 cp -R /etc/sysconfig/spawn-fcgi /etc/sysconfig/spawn-fcgi2 Next change the following lines in your spawn-fcgi2 file in /etc/init.d/ to look like this:\nprog=\u0026#34;spawn-fcgi2\u0026#34; config=\u0026#34;/etc/sysconfig/spawn-fcgi2\u0026#34; Then modify your new spawn-fcgi configuration in /etc/sysconfig/ to look like this:\nFCGI_SOCKET=/var/run/fcgiwrap.socket FCGI_PROGRAM=/usr/local/sbin/fcgiwrap FCGI_USER=nginx FCGI_GROUP=nginx FCGI_EXTRA_OPTIONS=\u0026#34;-M 0700\u0026#34; OPTIONS=\u0026#34;-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM\u0026#34; Now you can start it like any other service. Don’t forget to add it to chkconfig via chkconfig -levels 2345 spawn-fcgi on. (or chkconfig -levels 2345 spawn-fcgi2 on depending on your configuration)\nThe last thing you need to do is to write the nginx configuration.\nlocation /cgi-bin/ { gzip off; fastcgi_pass unix:/var/run/fcgiwrap.socket; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } If you want to user another method, visit http://www.howtoforge.com/serving-cgi-scripts-with-nginx-on-debian-squeeze-ubuntu-11.04.\n",
      "content_html": "\u003cp\u003eIn this post I will show you how to serve CGI scripts with Nginx on CentOS 6 using fcgiwrap.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eAs there’s no fcgiwrap package for CentOS 6.0, you must build it yourself. First install some prerequisites:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eyum groupinstall \u0026#39;Development Tools\u0026#39;\nyum install fcgi-devel\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eNow you can build fcgiwrap:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ecd /usr/local/src/\ngit clone git://github.com/gnosek/fcgiwrap.git\ncd fcgiwrap\nautoreconf -i\n./configure\nmake\nmake install\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThis installs fcgiwrap to \u003ccode\u003e/usr/local/sbin/fcgiwrap\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003e1a:\nInstall the spawn-fcgi package which allows you to run fcgiwrap as a daemon:\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eyum install spawn-fcgi\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e1b:\nIf you are already using spawn-fcgi for php, copy the init.d script and sysconfig of spawn-fcgi\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ecp -R /etc/init.d/spawn-fcgi /etc/init.d/spawn-fcgi2\ncp -R /etc/sysconfig/spawn-fcgi /etc/sysconfig/spawn-fcgi2\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eNext change the following lines in your spawn-fcgi2 file in \u003cspan style=\"background-color: #c0c0c0;\"\u003e/etc/init.d/\u003c/span\u003e to look like this:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eprog=\u0026#34;spawn-fcgi2\u0026#34;\nconfig=\u0026#34;/etc/sysconfig/spawn-fcgi2\u0026#34;\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThen modify your new spawn-fcgi configuration in \u003ccode\u003e/etc/sysconfig/\u003c/code\u003e to look like this:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eFCGI_SOCKET=/var/run/fcgiwrap.socket\nFCGI_PROGRAM=/usr/local/sbin/fcgiwrap\nFCGI_USER=nginx\nFCGI_GROUP=nginx\nFCGI_EXTRA_OPTIONS=\u0026#34;-M 0700\u0026#34;\nOPTIONS=\u0026#34;-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM\u0026#34;\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eNow you can start it like any other service. Don’t forget to add it to chkconfig via \u003ccode\u003echkconfig -levels 2345 spawn-fcgi on\u003c/code\u003e. (or \u003ccode\u003echkconfig -levels 2345 spawn-fcgi2 on\u003c/code\u003e depending on your configuration)\u003c/p\u003e\n\u003cp\u003eThe last thing you need to do is to write the nginx configuration.\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003elocation /cgi-bin/ {\ngzip off;\nfastcgi_pass unix:/var/run/fcgiwrap.socket;\ninclude /etc/nginx/fastcgi_params;\nfastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n}\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eIf you want to user another method, visit \u003ca href=\"http://www.howtoforge.com/serving-cgi-scripts-with-nginx-on-debian-squeeze-ubuntu-11.04\"\u003ehttp://www.howtoforge.com/serving-cgi-scripts-with-nginx-on-debian-squeeze-ubuntu-11.04\u003c/a\u003e.\u003c/p\u003e",
      "url": "https://black-pixel.net/2012/02/24/serving-cgi-scripts-with-nginx-on-centos-6/",
      "date_published": "24026-24-09T223:2424:00+00:00",
      "date_modified": "24026-24-09T223:2424:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "dffb5bb68b1becad4b581151ffc847b04b67fdbd",
      "title": "Nginx with PHP on CentOS 6",
      "summary": "",
      "content_text": "This is a post on how to set up Nginx with PHP using spawn-fcgi on CentOS 6.\nIf you haven’t already done it, you have to set up the EPEL repository.\nFor 32bit:\nrpm -Uvh http://download.fedora.redhat.com/pub/epel/6/i386/epel-release-6-5.noarch.rpm\nFor 64bit:\nrpm -Uvh http://download.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm\nNext install Nginx and spawn-fcgi, I assume you have already installed PHP and all the modules you need.\nyum install nginx spawn-fcgi\nNow it’s time for the spawn-fcgi configuration. The config should be at /etc/sysconfig/spawn-fcgi.\nvim /etc/sysconfig/spawn-fcgi\n# You must set some working options before the \u0026#34;spawn-fcgi\u0026#34; service will work. # If SOCKET points to a file, then this file is cleaned up by the init script. # # See spawn-fcgi(1) for all possible options. # # Example : #SOCKET=/var/run/php-fcgi.sock OPTIONS=\u0026#34;-a 127.0.0.1 -p 9000 -u nginx -g nginx -C 32 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/bin/php-cgi\u0026#34; It’s very important that you remember the port, you’ll have to set the same in the nginx configuration. You should also use the same username and group as nginx.\nTo play it safe, make sure the following line is not commented in the file /etc/init.d/spawn-fcgi:\nconfig=\u0026quot;/etc/sysconfig/spawn-fcgi\u0026quot;\nNow let’s make sure that spawn-fcgi and nginx automatically start after a reboot.\nchkconfig --level 2345 nginx on chkconfig --level 2345 spawn-fcgi on For more information about chkconfig check this site: http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-services-chkconfig.html\nNext up we have to fix a folder permission. The group of the session cookies folder, the address can be found in the php.ini (session.save_path = “/var/lib/php/session”). The folder group has to be changed from apache to whatever you use, e. g. nginx. You should check this after every php update.\nAs a last step, just add the following line to the /etc/nginx.conf and/or your custom domain configuration in /etc/nginx/conf.d/yourdomain.conf.\nlocation ~ .php$ { include fastcgi_params; fastcgi_pass localhost:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } You should also make some additional changes in your configuration. I’m going to make another post about some of the settings.\nThe official wiki is always a good source for help: http://wiki.nginx.org/Configuration\n",
      "content_html": "\u003cp\u003eThis is a post on how to set up Nginx with PHP using spawn-fcgi on CentOS 6.\u003c/p\u003e\n\u003cp\u003eIf you haven’t already done it, you have to set up the EPEL repository.\u003c/p\u003e\n\u003cp\u003eFor 32bit:\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003erpm -Uvh http://download.fedora.redhat.com/pub/epel/6/i386/epel-release-6-5.noarch.rpm\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eFor 64bit:\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003erpm -Uvh http://download.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eNext install Nginx and spawn-fcgi, I assume you have already installed PHP and all the modules you need.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eyum install nginx spawn-fcgi\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eNow it’s time for the spawn-fcgi configuration. The config should be at \u003ccode\u003e/etc/sysconfig/spawn-fcgi\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003evim /etc/sysconfig/spawn-fcgi\u003c/code\u003e\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e# You must set some working options before the \u0026#34;spawn-fcgi\u0026#34; service will work.\n# If SOCKET points to a file, then this file is cleaned up by the init script.\n#\n# See spawn-fcgi(1) for all possible options.\n#\n# Example :\n#SOCKET=/var/run/php-fcgi.sock\nOPTIONS=\u0026#34;-a 127.0.0.1 -p 9000 -u nginx -g nginx -C 32 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/bin/php-cgi\u0026#34;\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eIt’s very important that you remember the port, you’ll have to set the same in the nginx configuration. You should also use the same username and group as nginx.\u003c/p\u003e\n\u003cp\u003eTo play it safe, make sure the following line is not commented in the file \u003ccode\u003e/etc/init.d/spawn-fcgi\u003c/code\u003e:\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003econfig=\u0026quot;/etc/sysconfig/spawn-fcgi\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eNow let’s make sure that spawn-fcgi and nginx automatically start after a reboot.\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003echkconfig --level 2345 nginx on\nchkconfig --level 2345 spawn-fcgi on\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eFor more information about chkconfig check this site: \u003ca href=\"http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-services-chkconfig.html\"\u003ehttp://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-services-chkconfig.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eNext up we have to fix a folder permission. The group of the session cookies folder, the address can be found in the php.ini (session.save_path = “/var/lib/php/session”). The folder group has to be changed from apache to whatever you use, e. g. nginx. You should check this after every php update.\u003c/p\u003e\n\u003cp\u003eAs a last step, just add the following line to the \u003ccode\u003e/etc/nginx.conf\u003c/code\u003e and/or your custom domain configuration in \u003ccode\u003e/etc/nginx/conf.d/yourdomain.conf\u003c/code\u003e.\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003elocation ~ .php$ {\n                include        fastcgi_params;\n                fastcgi_pass   localhost:9000;\n                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;\n        }\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eYou should also make some additional changes in your configuration. I’m going to make another post about some of the settings.\u003c/p\u003e\n\u003cp\u003eThe official wiki is always a good source for help: \u003ca href=\"http://wiki.nginx.org/Configuration\"\u003ehttp://wiki.nginx.org/Configuration\u003c/a\u003e\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2012/02/19/nginx-with-php-on-centos-6/",
      "date_published": "19026-19-09T27:1919:00+00:00",
      "date_modified": "19026-19-09T27:1919:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "2af348792acfe544f3285dcd18d37600178b700f",
      "title": "App: Mars Images",
      "summary": "",
      "content_text": "Mars Images is an app for Android and IOS smartphones that lets you browse the latest images from the Mars Exploration Rover Opportunity.\nThe app has been developed by Mark Powell who works at the Jet Propulsion Laboratory at NASA.\nWhen you start the app, you may have to wait a while until the first pictures have been loaded. If you get an error message, just close the app and start it again.\nNow you can see a lot of images, named after the related camera. (Hazcam and Pancam)\nThe newest images appear on the top. If you want to load older ones, just scroll down. Below the name of the image, you can see when the picture was taken. The date is displayed in Sols.\nOnce you’ve selected an image, you’ll get a little preview on the right. Select it to see the picture. You can zoom in, share the picture and there is also a 3D mode. You will need 3D red cyan glasses to see them in 3D.\nThis is how everything looks like:\nThe official homepage is: http://www.powellware.com/Mars_Images/Mars_Images_Home.html\nAndroid market: https://market.android.com/details?id=com.powellware.marsimages\n",
      "content_html": "\u003cp\u003eMars Images is an app for Android and IOS smartphones that lets you browse the latest images from the Mars Exploration Rover Opportunity.\u003c/p\u003e\n\u003cp\u003eThe app has been developed by Mark Powell who works at the \u003ca href=\"http://www.jpl.nasa.gov/\" rel=\"noreferrer\" target=\"_blank\"\u003eJet Propulsion Laboratory\u003c/a\u003e at NASA.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eWhen you start the app, you may have to wait a while until the first pictures have been loaded. If you get an error message, just close the app and start it again.\u003c/p\u003e\n\u003cp\u003eNow you can see a lot of images, named after the related camera. (\u003ca href=\"http://en.wikipedia.org/wiki/Hazcam\"\u003eHazcam\u003c/a\u003e and Pancam)\u003c/p\u003e\n\u003cp\u003eThe newest images appear on the top. If you want to load older ones, just scroll down. Below the name of the image, you can see when the picture was taken. The date is displayed in \u003ca href=\"http://en.wikipedia.org/wiki/Timekeeping_on_Mars#Sols\"\u003eSols\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eOnce you’ve selected an image, you’ll get a little preview on the right. Select it to see the picture. You can zoom in, share the picture and there is also a 3D mode. You will need \u003ca href=\"http://en.wikipedia.org/wiki/Anaglyph_image\" title=\"Anaglyph image\"\u003e3D red cyan\u003c/a\u003e glasses to see them in 3D.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eThis is how everything looks like:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://black-pixel.net/stuff/marsImages/marsImage.png\"\u003e\u003cimg title=\"Mars Images\" src=\"http://black-pixel.net/stuff/marsImages/marsImage.png\" alt=\"marsImage\" width=\"300\" height=\"534\" /\u003e\u003c/a\u003e \u003ca href=\"http://black-pixel.net/stuff/marsImages/marsImage1.png\"\u003e\u003cimg title=\"Mars Images\" src=\"http://black-pixel.net/stuff/marsImages/marsImage1.png\" alt=\"marsImage1\" width=\"300\" height=\"534\" /\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://black-pixel.net/stuff/marsImages/marsImage2.png\"\u003e\u003cimg title=\"Mars Images\" src=\"http://black-pixel.net/stuff/marsImages/marsImage2.png\" alt=\"marsImage2\" width=\"300\" height=\"534\" /\u003e\u003c/a\u003e \u003ca href=\"http://black-pixel.net/stuff/marsImages/marsImage3D.png\"\u003e\u003cimg title=\"Mars Images\" src=\"http://black-pixel.net/stuff/marsImages/marsImage3D.png\" alt=\"marsImage3D\" width=\"300\" height=\"534\" /\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eThe official  homepage is: \u003ca href=\"http://www.powellware.com/Mars_Images/Mars_Images_Home.html\"\u003ehttp://www.powellware.com/Mars_Images/Mars_Images_Home.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eAndroid market: \u003ca href=\"https://market.android.com/details?id=com.powellware.marsimages\"\u003ehttps://market.android.com/details?id=com.powellware.marsimages\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e",
      "url": "https://black-pixel.net/2012/01/13/app-mars-images/",
      "date_published": "13016-13-09T157:1313:00+00:00",
      "date_modified": "13016-13-09T157:1313:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "c4771abbcf0fc931a2f06b2fc8ead83dd506788f",
      "title": "Sapphire HD 5850 Toxic Overclocking",
      "summary": "",
      "content_text": "This is a little report on the experience I made with overclocking my AMD Sapphire HD 5850 Toxic Edition. One problem is that this graphics card has a lock which prevents you from overclocking (actually you can oc a bit but not much) via software (I prefer MSI Afterburner).\nSo the first thing you have to do is to flash the GPU with a BIOS that has no such lock.\nWarning: This can damage your GPU and render it useless.\nYou will need a way to boot into a DOS. I’ve already posted a tutorial on how to set up a bootable pen drive with FreeDOS. You can find it here.\nTo flash you GPU you need a tool called ATI Flash:\nhttp://www.techpowerup.com/downloads/2040/ATIFlash%203.89.html\nPut the atiflash.exe onto your pen drive.\nAs already mentioned before, you’ll also need an appropriate BIOS. This Asus BIOS worked well for me:\nhttp://www.techpowerup.com/vgabios/58225/Asus.HD5850.1024.090925.html\nChoose a shorter name for the file (you’ll have to type it in later) and then also put it onto the pen drive.\nThe last thing you need on your pen drive is a backup of your current BIOS. You can create one with GPU-Z.\n[][2]\nNow with all three files on your pen drive, reboot your PC and set the BIOS to boot from your pen drive.\nOne thing that will help you a lot in case of a failure is to note down every step you have to make to flash the BIOS so you can do it blindly if you graphics card won’t work after the flashing. This way you can reflash you backup easily.\nSo once you’ve booted into freeDOS, type atiflash -f -p 0 thenameyouchose.bin.\nThis will flash your graphics card with the selected BIOS.\nNow reboot and if your graphics card still works you can start overclocking. You will notice that you can set all the values in MSI Afterburner freely now.\n",
      "content_html": "\u003cp\u003eThis is a little report on the experience I made with overclocking my AMD Sapphire HD 5850 Toxic Edition. One problem is that this graphics card has a lock which prevents you from overclocking (actually you can oc a bit but not much) via software (I prefer MSI Afterburner).\u003c/p\u003e\n\u003cp\u003eSo the first thing you have to do is to flash the GPU with a BIOS that has no such lock.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eWarning: This can damage your GPU and render it useless.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eYou will need a way to boot into a DOS. I’ve already posted a tutorial on how to set up a bootable pen drive with FreeDOS. You can find it \u003ca href=\"https://web.archive.org/web/20120229065608/http://black-pixel.net/bootable-usb-stick-with-grub4dos-freedos-and-iso-images-e-g-ubcd.html\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eTo flash you GPU you need a tool called ATI Flash:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://www.techpowerup.com/downloads/2040/ATIFlash%203.89.html\"\u003ehttp://www.techpowerup.com/downloads/2040/ATIFlash%203.89.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003ePut the atiflash.exe onto your pen drive.\u003c/p\u003e\n\u003cp\u003eAs already mentioned before, you’ll also need an appropriate BIOS. This Asus BIOS worked well for me:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://www.techpowerup.com/vgabios/58225/Asus.HD5850.1024.090925.html\"\u003ehttp://www.techpowerup.com/vgabios/58225/Asus.HD5850.1024.090925.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eChoose a shorter name for the file (you’ll have to type it in later) and then also put it onto the pen drive.\u003c/p\u003e\n\u003cp\u003eThe last thing you need on your pen drive is a backup of your current BIOS. You can create one with GPU-Z.\u003c/p\u003e\n\u003cp\u003e[\u003cimg class=\"alignnone size-full wp-image-775\" title=\"GPU-ZOC\" src=\"http://black-pixel.net/wp-content/uploads/2012/01/GPU-ZOC.gif\" alt=\"GPU-ZOC\" width=\"300\" height=\"256\" /\u003e][2]\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eNow with all three files on your pen drive, reboot your PC and set the BIOS to boot from your pen drive.\u003c/p\u003e\n\u003cp\u003eOne thing that will help you a lot in case of a failure is to note down every step you have to make to flash the BIOS so you can do it blindly if you graphics card won’t work after the flashing. This way you can reflash you backup easily.\u003c/p\u003e\n\u003cp\u003eSo once you’ve booted into freeDOS, type \u003ccode\u003eatiflash -f -p 0 thenameyouchose.bin\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis will flash your graphics card with the selected BIOS.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eNow reboot and if your graphics card still works you can start overclocking. You will notice that you can set all the values in MSI Afterburner freely now.\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2012/01/03/sapphire-hd-5850-oc-overclocking/",
      "date_published": "3016-03-09T150:33:00+00:00",
      "date_modified": "3016-03-09T150:33:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "090f30dc5488175761f8e4a0725765c28b219024",
      "title": "QTTabBar: Tabs for Windows",
      "summary": "",
      "content_text": "In this post I’ll show you another nice tool to enhance your Windows. QTTabBar adds tabs and some other nice features to the Windows Explorer. I’ll just show you some basic stuff, there is a lot to discover.\nYou can download QTTabBar from the official homepage: http://qttabbar.sourceforge.net/\nUPDATE 19.04.2014:\nThe version on the Sourceforge page seems to no longer be actively maintained and does not work on Windows 8. However there is another version of this software that does work and seems to be actively maintained. You can find it at::\nhttp://qttabbar.wikidot.com/\nAfter installing it, your Explorer window should look like this:\nIf you right-click your Tab, you can see some extra functions:\nMost of the things here should be self explanatory. Groups are very nice. You can create groups and add folders to them. Now you can click on the star on the left and select one of your groups, this will open all of the groups folders in separate tabs.\nYou will also notice a little arrow pointing down when you move your mouse over a folder, if you click on that, a drop down menu will show you all the folders and files located inside of it and you can then jump directly to where you want.\nYou can also just move any folder to your tab bar and it will appear as a new tab.\nLike I’ve already said, there are lot’s of feature you can discover, just play a little around with it.\n",
      "content_html": "\u003cp\u003eIn this post I’ll show you another nice tool to enhance your Windows. QTTabBar adds tabs and some other nice features to the Windows Explorer. I’ll just show you some basic stuff, there is a lot to discover.\u003c/p\u003e\n\u003cp\u003e\u003cdel\u003eYou can download QTTabBar from the official homepage:  \u003ca href=\"http://qttabbar.sourceforge.net/\"\u003e\u003ca href=\"http://qttabbar.sourceforge.net/\"\u003ehttp://qttabbar.sourceforge.net/\u003c/a\u003e\u003c/a\u003e\u003c/del\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUPDATE 19.04.2014:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThe version on the Sourceforge page seems to no longer be actively maintained and does not work on Windows 8. However there is another version of this software that does work and seems to be actively maintained. You can find it at::\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://qttabbar.wikidot.com/\"\u003ehttp://qttabbar.wikidot.com/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eAfter installing it, your Explorer window should look like this:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://black-pixel.net/wp-content/uploads/2011/11/1.jpg\"\u003e\u003cimg class=\"alignnone size-medium wp-image-738\" title=\"qttabbar1\" src=\"http://black-pixel.net/wp-content/uploads/2011/11/1-300x73.jpg\" alt=\"qttabbar1\" width=\"300\" height=\"73\" /\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eIf you right-click your Tab, you can see some extra functions:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://black-pixel.net/wp-content/uploads/2011/11/21.jpg\"\u003e\u003cimg class=\"alignnone size-full wp-image-739\" title=\"qttabbar2\" src=\"http://black-pixel.net/wp-content/uploads/2011/11/21.jpg\" alt=\"qttabbar2\" width=\"305\" height=\"356\" /\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eMost of the things here should be self explanatory. Groups are very nice. You can create groups and add folders to them. Now you can click on the star on the left and select one of your groups, this will open all of the groups folders in separate tabs.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eYou will also notice a little arrow pointing down when you move your mouse over a folder, if you click on that, a drop down menu will show you all the folders and files located inside of it and you can then jump directly to where you want.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://black-pixel.net/wp-content/uploads/2011/11/31.jpg\"\u003e\u003cimg class=\"alignnone size-medium wp-image-740\" title=\"qttabbar3\" src=\"http://black-pixel.net/wp-content/uploads/2011/11/31-300x114.jpg\" alt=\"qttabbar3\" width=\"300\" height=\"114\" /\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eYou can also just move any folder to your tab bar and it will appear as a new tab.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eLike I’ve already said, there are lot’s of feature you can discover, just play a little around with it.\u003c/p\u003e",
      "url": "https://black-pixel.net/2011/11/20/qttabbar-tabs-for-windows/",
      "date_published": "20116-20-09T1133:2020:00+00:00",
      "date_modified": "20116-20-09T1133:2020:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "42715d719b8cb6704c719ce911b013263194b3ef",
      "title": "Dexpot: Virtual Desktops for Windows",
      "summary": "",
      "content_text": "If you’ve ever used Linux and went back to Winows, you’ll sure miss the virtual desktops. Dexpot is a free (for private use) program that gives you virtual desktops just like in Linux. You have a lot of settings and can configure it as you like.\nYou can download it from http://www.dexpot.de/index.php?lang=en.\nFirst of all, one thing I really appreciate about this program is that it allows you to copy windows to every workspace, so for example if you are using two monitors like me and want to have a video on one of the monitors all the time, you can simple “copy” it to every virtual desktop.\nDexpot has a lot of functions and as far as I see it, it can do everything the workspaces in Linux do and maybe even more. I’ll just quote some stuff from the homepage and add some screenshots so you can see how it looks.\nDexgrid\nActivate in ‘Settings • Plugins and Extras’.\nThis plugin adds a grid layout to your desktops.\nAnimation during desktop switching Switch left, right, up or down in the grid Copy or move a window left, right, up or down in the grid Screens:\n2 Monitors\n1 Monitor\nTaskbar Pager\nActivate in ‘Settings • Plugins and Extras’.\nThis plugin integrates a pager similar to the “Desktop Preview” directly into the Windows taskbar.\nSwitch desktops with a single click Drag \u0026amp; Drop a window to another desktop To copy a window, drag it while holding the Ctrl key Note: I am using two Monitors. So what you see are 4 desktops. SevenDex Activate in \u0026#8216;Settings • Plugins and Extras\u0026#8217;. SevenDex adds a supplemental button to the Windows 7 taskbar, which will give you a thumbnail view of all your available desktops when hovering over or clicking on it. New in version 1.5.1: Pin SevenDex to your task bar. If Dexpot isn\u0026#8217;t running, just click the SevenDex icon to start Dexpot. Clou. Hover over a thumbnail, and a preview of your desktop appears If you hover over the thumbnail of your current desktop, you can peek through all windows (Aero Peek). Dexcube\nActivate in ‘Settings • Plugins and Extras’.\nDexcube offers 3D transition effects.\nIn order to use Dexcube, you need DirectX 9 (pre-installed since Windows XP).\nPossible transition effects:\nCube Breakfast plate Wall Filmstrip Change the zoom settings in order to get more effect variations.\nTip:\nPress Ctrl+Alt and Up-arrow. Keep Ctrl+Alt pressed, additionally press Right-arrow or Left-arrow to rotate the cube.\nOfficial Video:\nhttp://www.youtube.com/watch?v=KSQiYmzU_QA\nAnd there is a lot more! http://www.dexpot.de/index.php?id=produkt\nI hope you like it as much as I do. If you have questions or want me to test something or just want to tell your opinion, feel free to write a comment. 🙂\n",
      "content_html": "\u003cp\u003eIf you’ve ever used Linux and went back to Winows, you’ll sure miss the virtual desktops. Dexpot is a free (for private use) program that gives you virtual desktops just like in Linux. You have a lot of settings and can configure it as you like.\u003c/p\u003e\n\u003cp\u003eYou can download it from \u003ca href=\"http://www.dexpot.de/index.php?lang=en\"\u003ehttp://www.dexpot.de/index.php?lang=en\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eFirst of all, one thing I really appreciate about this program is that it allows you to copy windows to every workspace, so for example if you are using two monitors like me and want to have a video on one of the monitors all the time, you can simple “copy” it to every virtual desktop.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eDexpot has a lot of functions and as far as I see it, it can do everything the workspaces in Linux do and maybe even more. I’ll just quote some stuff from the homepage and add some screenshots so you can see how it looks.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cstrong\u003eDexgrid\u003c/strong\u003e\u003c/span\u003e\u003c/p\u003e\n\u003cp\u003eActivate in ‘Settings • Plugins and Extras’.\u003c/p\u003e\n\u003cp\u003eThis plugin adds a grid layout to your desktops.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAnimation during desktop switching\u003c/li\u003e\n\u003cli\u003eSwitch left, right, up or down in the grid\u003c/li\u003e\n\u003cli\u003eCopy or move a window left, right, up or down in the grid\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eScreens:\u003c/p\u003e\n\u003cp\u003e2 Monitors\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://black-pixel.net/wp-content/uploads/2011/11/grid3.jpg\"\u003e\u003cimg class=\"alignnone size-large wp-image-733\" title=\"grid3\" alt=\"\" src=\"http://black-pixel.net/wp-content/uploads/2011/11/grid3-1024x320.jpg\" width=\"500\" height=\"156\" /\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e1 Monitor\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://black-pixel.net/wp-content/uploads/2011/11/grid1.jpg\"\u003e\u003cimg class=\"alignnone size-medium wp-image-729\" title=\"grid1\" alt=\"\" src=\"http://black-pixel.net/wp-content/uploads/2011/11/grid1-300x187.jpg\" width=\"300\" height=\"187\" /\u003e\u003c/a\u003e \u003ca href=\"http://black-pixel.net/wp-content/uploads/2011/11/grid2.jpg\"\u003e\u003cimg class=\"alignnone size-medium wp-image-730\" title=\"grid2\" alt=\"\" src=\"http://black-pixel.net/wp-content/uploads/2011/11/grid2-300x187.jpg\" width=\"300\" height=\"187\" /\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cstrong\u003eTaskbar Pager\u003c/strong\u003e\u003c/span\u003e\u003c/p\u003e\n\u003cp\u003eActivate in ‘Settings • Plugins and Extras’.\u003c/p\u003e\n\u003cp\u003eThis plugin integrates a pager similar to the “Desktop Preview” directly into the Windows taskbar.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch desktops with a single click\u003c/li\u003e\n\u003cli\u003eDrag \u0026amp; Drop a window to another desktop\u003c/li\u003e\n\u003cli\u003eTo copy a window, drag it while holding the Ctrl key\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv\u003e\n  \u003ca href=\"http://black-pixel.net/wp-content/uploads/2011/11/taskbar.jpg\"\u003e\u003cimg class=\"alignnone  wp-image-731\" title=\"taskbar\" alt=\"\" src=\"http://black-pixel.net/wp-content/uploads/2011/11/taskbar.jpg\" width=\"521\" height=\"27\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\u003cdiv\u003e\n  Note: I am using two Monitors. So what you see are 4 desktops.\n\u003c/div\u003e\n\u003cdiv\u003e\n  \u003cspan style=\"text-decoration: underline;\"\u003e\u003cstrong\u003eSevenDex\u003c/strong\u003e\u003c/span\u003e\n\u003c/div\u003e\n\u003cdiv\u003e\n  \u003cp\u003e\n    Activate in \u0026#8216;Settings • Plugins and Extras\u0026#8217;.\n  \u003c/p\u003e\n  \u003cp\u003e\n    SevenDex adds a supplemental button to the Windows 7 taskbar, which will give you a thumbnail view of all your available desktops when hovering over or clicking on it.\n  \u003c/p\u003e\n  \u003cp\u003e\n    New in version 1.5.1:\n  \u003c/p\u003e\n  \u003cp\u003e\n    Pin SevenDex to your task bar. If Dexpot isn\u0026#8217;t running, just click the SevenDex icon to start Dexpot. Clou.\n  \u003c/p\u003e\n  \u003cul\u003e\n    \u003cli\u003e\n      Hover over a thumbnail, and a preview of your desktop appears\n    \u003c/li\u003e\n    \u003cli\u003e\n      If you hover over the thumbnail of your current desktop, you can peek through all windows (Aero Peek).\n    \u003c/li\u003e\n  \u003c/ul\u003e\n  \u003cp\u003e\n    \u003ca href=\"http://black-pixel.net/wp-content/uploads/2011/11/sevendex.jpg\"\u003e\u003cimg class=\"alignnone size-medium wp-image-732\" title=\"sevendex\" alt=\"\" src=\"http://black-pixel.net/wp-content/uploads/2011/11/sevendex-300x81.jpg\" width=\"300\" height=\"81\" /\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003e\u003cstrong\u003eDexcube\u003c/strong\u003e\u003c/span\u003e\u003c/p\u003e\n\u003cp\u003eActivate in ‘Settings • Plugins and Extras’.\u003c/p\u003e\n\u003cp\u003eDexcube offers 3D transition effects.\u003c/p\u003e\n\u003cp\u003eIn order to use Dexcube, you need \u003ca href=\"http://www.microsoft.com/downloads/details.aspx?displaylang=de\u0026FamilyID=2da43d38-db71-4c1b-bc6a-9b6652cd92a3\" target=\"_blank\"\u003eDirectX 9\u003c/a\u003e (pre-installed since Windows XP).\u003c/p\u003e\n\u003cp\u003ePossible transition effects:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCube\u003c/li\u003e\n\u003cli\u003eBreakfast plate\u003c/li\u003e\n\u003cli\u003eWall\u003c/li\u003e\n\u003cli\u003eFilmstrip\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChange the zoom settings in order to get more effect variations.\u003c/p\u003e\n\u003cp\u003eTip:\u003c/p\u003e\n\u003cp\u003ePress \u003cstrong\u003eCtrl+Alt\u003c/strong\u003e and \u003cstrong\u003eUp-arrow\u003c/strong\u003e. Keep \u003cstrong\u003eCtrl+Alt\u003c/strong\u003e pressed, additionally press \u003cstrong\u003eRight-arrow\u003c/strong\u003e or \u003cstrong\u003eLeft-arrow\u003c/strong\u003e to rotate the cube.\u003c/p\u003e\n\u003cp\u003eOfficial Video:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://www.youtube.com/watch?v=KSQiYmzU_QA\"\u003ehttp://www.youtube.com/watch?v=KSQiYmzU_QA\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eAnd there is a lot more!  \u003ca href=\"http://www.dexpot.de/index.php?id=produkt\"\u003ehttp://www.dexpot.de/index.php?id=produkt\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eI hope you like it as much as I do. If you have questions or want me to test something or just want to tell your opinion, feel free to write a comment. 🙂\u003c/p\u003e",
      "url": "https://black-pixel.net/2011/11/11/dexpot-virtual-desktops-for-windows/",
      "date_published": "11116-11-09T1136:1111:00+00:00",
      "date_modified": "11116-11-09T1136:1111:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "96bb8118665b4c08be43a6441ce34ab31e9f0f16",
      "title": "Origin \u0026 BF3 in Sandboxie",
      "summary": "",
      "content_text": "To prevent Origin from scanning your PC, you can run it in a program called Sandboxie. In this post I’m going to show you how to set up Sandboxie.\nFirst of all you have to download Sandboxie. The free version should be enough.\nhttp://www.sandboxie.com/\nYour first step in Sandboxie is to create a new sandbox (I called it origin).\nYou can also use the default sandbox if you want to.\nNext, select Configure from the menu and click on Edit Configuration.\nIn the now opened Sandbox.ini add at the bottom of the file under the [origin] category:\nOpenFilePath=C:\\ OpenFilePath=C:\\Program Files (x86)\\Origin\\ OpenFilePath=C:\\Program Files (x86)\\Origin Games\\ OpenFilePath=C:\\Users\\Username\\Documents\\Battlefield 3\\ OpenFilePath=C:\\Users\\Username\\AppData\\Roaming\\Origin OpenFilePath=C:\\Users\\Username\\AppData\\Local\\Origin OpenFilePath=C:\\Program Files (x86)\\SRWare Iron\\ The paths might differ from your installation so you have to check them. In this case I am using SRWare Iron as Browser for BF3, you have to run the Browser you want to use for the Battlelog in a sandbox, else the BF3.exe might crash.\nUnderneath this, you can add all the folders you want Origin to not access.\nFor example:\nClosedFilePath=Z:\\ ClosedFilePath=X:\\ ClosedFilePath=G:\\ ClosedFilePath=C:\\foobar2000\\ ClosedFilePath=C:\\LaTeX\\ ClosedFilePath=C:\\MinGW\\ ClosedFilePath=C:\\Python27\\ ClosedFilePath=C:\\ProgramData\\Adobe\\ ClosedFilePath=C:\\ProgramData\\BOINC\\ ClosedFilePath=C:\\ProgramData\\MiKTeX\\ A fast way to do this is to go to the Folder (for example C:Program Files (x86)) and click on the icon before the folder path:\nNext replace it with cmd and press enter:\nNow a console window is open, type dir /d and press enter.\nNow you will see all the folders, you just have to copy them and replace the brackets.\nAttention!\nDo not Close the File Path for folders you opened at the beginning, in this case:\nC:\\ C:\\Program Files (x86) C:\\Users\\Username\\Documents\\ C:\\Users\\Username\\AppData\\ Attention 64bit Users! To prevent random crashes, block access to the IGO32.dll\nClosedFilePath=C:\\Program Files (x86)\\Origin\\IGO32.dll Remember that you have to start the Browser and Origin in the Sandbox. You can let them always start in a Sandbox by adding this to the Sandbox.ini file:\nThis only works for the purchased version of Sandboxie.\nForceProcess=bf3.exe ForceProcess=origin.exe ForceFolder=C:\\Program Files (x86)\\SRWare Iron Here are two links that helped me:\nhttp://www.sandboxie.com/phpbb/viewtopic.php?t=11767\nhttp://bf3blog.com/forum/topic/how-to-make-origin-stay-away-from-the-rest-of-your-computer\nIf you have questions or problems, feel free to write a comment, I’m happy to help you.\n",
      "content_html": "\u003cp\u003eTo prevent Origin from scanning your PC, you can run it in a program called Sandboxie. In this post I’m going to show you how to set up Sandboxie.\u003c/p\u003e\n\u003cp\u003eFirst of all you have to download Sandboxie. The free version should be enough.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://www.sandboxie.com/\"\u003ehttp://www.sandboxie.com/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eYour first step in Sandboxie is to create a new sandbox (I called it origin).\u003c/p\u003e\n\u003cp\u003eYou can also use the default sandbox if you want to.\u003c/p\u003e\n\u003cp\u003eNext, select Configure from the menu and click on Edit Configuration.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"http://black-pixel.net/wp-content/uploads/2011/11/2.jpg\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cp\u003eIn the now opened Sandbox.ini add at the bottom of the file under the [origin] category:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eOpenFilePath=C:\\\nOpenFilePath=C:\\Program Files (x86)\\Origin\\\nOpenFilePath=C:\\Program Files (x86)\\Origin Games\\\nOpenFilePath=C:\\Users\\Username\\Documents\\Battlefield 3\\\nOpenFilePath=C:\\Users\\Username\\AppData\\Roaming\\Origin\nOpenFilePath=C:\\Users\\Username\\AppData\\Local\\Origin\nOpenFilePath=C:\\Program Files (x86)\\SRWare Iron\\\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThe paths might differ from your installation so you have to check them. In this case I am using SRWare Iron as Browser for BF3, you have to run the Browser you want to use for the Battlelog in a sandbox, else the BF3.exe might crash.\u003c/p\u003e\n\u003cp\u003eUnderneath this, you can add all the folders you want Origin to not access.\u003c/p\u003e\n\u003cp\u003eFor example:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eClosedFilePath=Z:\\\nClosedFilePath=X:\\\nClosedFilePath=G:\\\nClosedFilePath=C:\\foobar2000\\\nClosedFilePath=C:\\LaTeX\\\nClosedFilePath=C:\\MinGW\\\nClosedFilePath=C:\\Python27\\\nClosedFilePath=C:\\ProgramData\\Adobe\\\nClosedFilePath=C:\\ProgramData\\BOINC\\\nClosedFilePath=C:\\ProgramData\\MiKTeX\\\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eA fast way to do this is to go to the Folder (for example C:Program Files (x86)) and click on the icon before the folder path:\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"http://black-pixel.net/wp-content/uploads/2011/11/3.jpg\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cp\u003eNext replace it with cmd and press enter:\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"http://black-pixel.net/wp-content/uploads/2011/11/4.jpg\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cp\u003eNow a console window is open, type dir /d and press enter.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"http://black-pixel.net/wp-content/uploads/2011/11/5.jpg\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cp\u003eNow you will see all the folders, you just have to copy them and replace the brackets.\u003c/p\u003e\n\u003cp\u003eAttention!\u003c/p\u003e\n\u003cp\u003eDo not Close the File Path for folders you opened at the beginning, in this case:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eC:\\\nC:\\Program Files (x86)\nC:\\Users\\Username\\Documents\\\nC:\\Users\\Username\\AppData\\\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eAttention 64bit Users! To prevent random crashes, block access to the IGO32.dll\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eClosedFilePath=C:\\Program Files (x86)\\Origin\\IGO32.dll\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eRemember that you have to start the Browser and Origin in the Sandbox. You can let them always start in a Sandbox by adding this to the Sandbox.ini file:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThis only works for the purchased version of Sandboxie.\u003c/strong\u003e\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eForceProcess=bf3.exe\nForceProcess=origin.exe\nForceFolder=C:\\Program Files (x86)\\SRWare Iron\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eHere are two links that helped me:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://www.sandboxie.com/phpbb/viewtopic.php?t=11767\"\u003ehttp://www.sandboxie.com/phpbb/viewtopic.php?t=11767\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://bf3blog.com/forum/topic/how-to-make-origin-stay-away-from-the-rest-of-your-computer\"\u003ehttp://bf3blog.com/forum/topic/how-to-make-origin-stay-away-from-the-rest-of-your-computer\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIf you have questions or problems, feel free to write a comment, I’m  happy to help you.\u003c/p\u003e",
      "url": "https://black-pixel.net/2011/11/01/origin-bf3-in-sandboxie/",
      "date_published": "1116-01-09T1148:11:00+00:00",
      "date_modified": "1116-01-09T1148:11:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "d3a645a4c7a27da86757c51a245ec9df05fc2daa",
      "title": "Ubuntu 11.10: Fix Touchpad",
      "summary": "",
      "content_text": "I’ve recently updated Ubuntu on my Subnotebook to version 11.10. After the update, my touchpad did not work anymore.\nTo fix this, first open /etc/default/grub with your favourite editor.\nsudo vim /etc/default/grub\nFind the line\nGRUB_CMDLINE_LINUX=\u0026quot;\u0026quot;\nand change it to\nGRUB_CMDLINE_LINUX=\u0026quot;i8042.nopnp\u0026quot;\nNow update grub and reboot.\nsudo update-grub\nsudo shutdown -r now\n",
      "content_html": "\u003cp\u003eI’ve recently updated Ubuntu on my Subnotebook to version 11.10. After the update, my touchpad did not work anymore.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eTo fix this, first open \u003ccode\u003e/etc/default/grub\u003c/code\u003e with your favourite editor.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003esudo vim /etc/default/grub\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eFind the line\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eGRUB_CMDLINE_LINUX=\u0026quot;\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eand change it to\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eGRUB_CMDLINE_LINUX=\u0026quot;i8042.nopnp\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eNow update grub and reboot.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003esudo update-grub\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003esudo shutdown -r now\u003c/code\u003e\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2011/10/17/ubuntu-11-10-fix-touchpad/",
      "date_published": "17106-17-09T1055:1717:00+00:00",
      "date_modified": "17106-17-09T1055:1717:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "6229a888fb39c7c6f4abf26a87beccbbe7c740dc",
      "title": "Google Calendar in Windows 7",
      "summary": "",
      "content_text": "This is a short post on how you can display your Google calendar on your Windows 7 desktop.\nFirst of all you have to download the Windows Live Calendar Gadget. Next go to the settings of your Google calendar.\nNow click on your calendar and select the private ICAL address.\nCopy the shown address and paste it into the settings of the Windows Live Calendar Gadget.\nThat’s it.\n",
      "content_html": "\u003cp\u003eThis is a short post on how you can display your Google calendar on your Windows 7 desktop.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eFirst of all you have to download the \u003ca href=\"http://wlcalendargadget.codeplex.com/\"\u003eWindows Live Calendar Gadget\u003c/a\u003e. Next go to the settings of your Google calendar.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"http://black-pixel.net/wp-content/uploads/2011/10/googlecalendar1.jpg\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cp\u003eNow click on your calendar and select the private ICAL address.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"http://black-pixel.net/wp-content/uploads/2011/10/googlecalendar2.jpg\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cp\u003eCopy the shown address and paste it into the settings of the Windows Live Calendar Gadget.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"http://black-pixel.net/wp-content/uploads/2011/10/googlecalendar3.jpg\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cp\u003eThat’s it.\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2011/10/17/google-calendar-in-windows-7/",
      "date_published": "17106-17-09T1024:1717:00+00:00",
      "date_modified": "17106-17-09T1024:1717:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "e909d04439a2d9a5e9d394b5ec9b5e25ffd12daf",
      "title": "Ram device with TmpFS",
      "summary": "",
      "content_text": "In the last post I’ve showed you how to set up a ram device using ramdisk (e.g. /dev/ram0). Now I’ll show you how to create a ram device with tmpfs. This is especially necessary if you are on a VServer and therefore can’t increase the size of the ramdisk.\nTmpFS\nThis is how you mount a tmpfs volume with 128MB space:\nmkdir -p /mnt/tmp mount -t tmpfs -o size=128m tmpfs /mnt/tmp If you don’t set the size, it will use 50% of the available memory. You can set the size as a normal value (size=128[k,m,g]) or as a percentage value (size=20%).\nIf you want to see if it worked or how much of the device is used, use the command df -k.\nIn my opinion, this is the best method to set up a ram device. There is also ramfs, on which tmpfs is based on, but I don’t recommend it.\nDon’t forget that you will loose all the data on the ram device if the computer reboots or crashes, so make sure you do regular backups.\nFor more information, check out this link:\nhttp://www.thegeekstuff.com/2008/11/overview-of-ramfs-and-tmpfs-on-linux/ ",
      "content_html": "\u003cp\u003eIn the last post I’ve showed you how to set up a ram device using ramdisk  (e.g. /dev/ram0). Now I’ll show you how to create a ram device with tmpfs. This is especially necessary if you are on a VServer and therefore can’t increase the size of the ramdisk.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eTmpFS\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eThis is how you mount a tmpfs volume with 128MB space:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003emkdir -p /mnt/tmp\nmount -t tmpfs -o size=128m tmpfs /mnt/tmp\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eIf you don’t set the size, it will use 50% of the available memory. You can set the size as a normal value (size=128[k,m,g]) or as a percentage value (size=20%).\u003c/p\u003e\n\u003cp\u003eIf you want to see if it worked or how much of the device is used, use the command \u003ccode\u003edf -k\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIn my opinion, this is the best method to set up a ram device. There is also ramfs, on which tmpfs is based on, but I don’t recommend it.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eDon’t forget that you will loose all the data on the ram device if the computer reboots or crashes, so make sure you do regular backups.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eFor more information, check out this link:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"http://www.thegeekstuff.com/2008/11/overview-of-ramfs-and-tmpfs-on-linux/\"\u003ehttp://www.thegeekstuff.com/2008/11/overview-of-ramfs-and-tmpfs-on-linux/\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n",
      "url": "https://black-pixel.net/2011/09/21/ram-device-with-tmpfs/",
      "date_published": "21096-21-09T958:2121:00+00:00",
      "date_modified": "21096-21-09T958:2121:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "315987c9431745e7095e4028ca2e320039c9076b",
      "title": "Set up a Ramdisk on CentOS (e.g. for a Minecraft Server)",
      "summary": "",
      "content_text": "UPDATE: I recommend setting up a ram device with tmpfs as I’ve described here: http://black-pixel.net/ram-device-with-tmpfs.html\nI had some performance problems with my Minecraft server and decided to run it on a ramdisk. This is a tutorial on how to set it up on CentOS.\nSince Linux Kernel 2.4 ramdisk support is built-in.\nTo see the names of the ramdisk devices:\nls -l /dev/ram* brw-rw----. 1 root disk 1, 0 Sep 16 20:40 /dev/ram0 brw-rw----. 1 root disk 1, 1 Sep 16 20:36 /dev/ram1 brw-rw----. 1 root disk 1, 10 Sep 16 20:36 /dev/ram10 brw-rw----. 1 root disk 1, 11 Sep 16 20:36 /dev/ram11 brw-rw----. 1 root disk 1, 12 Sep 16 20:36 /dev/ram12 brw-rw----. 1 root disk 1, 13 Sep 16 20:36 /dev/ram13 brw-rw----. 1 root disk 1, 14 Sep 16 20:36 /dev/ram14 brw-rw----. 1 root disk 1, 15 Sep 16 20:36 /dev/ram15 brw-rw----. 1 root disk 1, 2 Sep 16 20:36 /dev/ram2 brw-rw----. 1 root disk 1, 3 Sep 16 20:36 /dev/ram3 brw-rw----. 1 root disk 1, 4 Sep 16 20:36 /dev/ram4 brw-rw----. 1 root disk 1, 5 Sep 16 20:36 /dev/ram5 brw-rw----. 1 root disk 1, 6 Sep 16 20:36 /dev/ram6 brw-rw----. 1 root disk 1, 7 Sep 16 20:36 /dev/ram7 brw-rw----. 1 root disk 1, 8 Sep 16 20:36 /dev/ram8 brw-rw----. 1 root disk 1, 9 Sep 16 20:36 /dev/ram9 The standard ramdisk size is very low ( \u0026lt; 20MB) so you may need to increase it.\nTo increase it, in my case to 128MB, you have to edit the /etc/grub.conf and add ramdisk_size=131072 at the end of the kernel line:\nkernel /boot/vmlinuz-2.6.32-71.29.1.el6.x86_64 ro root=/dev/md2 \u0026lt;strong\u0026gt;ramdisk_size=131072\u0026lt;/strong\u0026gt; Now reboot so the changes take effect.\nOnce rebooted, format one of the ramdisk devices:\nmke2fs -m 0 /dev/ram0 Now create a folder, mount the device and set the appropriate owner.\nmkdir /home/user/ramdisk mount /dev/ram0 /home/user/ramdisk chown user:user /home/user/ramdisk That’s it. Remember that everything you put onto the ramdisk is lost after rebooting. So back it up before you reboot the server or better set up a cron job to do regular backups for you.\nIf you want the ramdisk to be set up automatically after a reboot add the following to your /etc/rc.local file:\nmke2fs -m 0 /dev/ram0 mount /dev/ram0 /home/user/ramdisk chown user:user /home/user/ramdisk # Example for copying the backup back on the ramdisk # cp -R /home/user/backup/* /home/user/ramdisk/ ",
      "content_html": "\u003cp\u003e\u003cem\u003eUPDATE: I recommend setting up a ram device with tmpfs as I’ve described here: \u003ca href=\"http://black-pixel.net/ram-device-with-tmpfs.html\"\u003ehttp://black-pixel.net/ram-device-with-tmpfs.html\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eI had some performance problems with my Minecraft server and decided to run it on a ramdisk. This is a tutorial on how to set it up on CentOS.\u003c/p\u003e\n\u003cp\u003eSince Linux Kernel 2.4 ramdisk support is built-in.\u003c/p\u003e\n\u003cp\u003eTo see the names of the ramdisk devices:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003els -l /dev/ram*\nbrw-rw----. 1 root disk 1,  0 Sep 16 20:40 /dev/ram0\nbrw-rw----. 1 root disk 1,  1 Sep 16 20:36 /dev/ram1\nbrw-rw----. 1 root disk 1, 10 Sep 16 20:36 /dev/ram10\nbrw-rw----. 1 root disk 1, 11 Sep 16 20:36 /dev/ram11\nbrw-rw----. 1 root disk 1, 12 Sep 16 20:36 /dev/ram12\nbrw-rw----. 1 root disk 1, 13 Sep 16 20:36 /dev/ram13\nbrw-rw----. 1 root disk 1, 14 Sep 16 20:36 /dev/ram14\nbrw-rw----. 1 root disk 1, 15 Sep 16 20:36 /dev/ram15\nbrw-rw----. 1 root disk 1,  2 Sep 16 20:36 /dev/ram2\nbrw-rw----. 1 root disk 1,  3 Sep 16 20:36 /dev/ram3\nbrw-rw----. 1 root disk 1,  4 Sep 16 20:36 /dev/ram4\nbrw-rw----. 1 root disk 1,  5 Sep 16 20:36 /dev/ram5\nbrw-rw----. 1 root disk 1,  6 Sep 16 20:36 /dev/ram6\nbrw-rw----. 1 root disk 1,  7 Sep 16 20:36 /dev/ram7\nbrw-rw----. 1 root disk 1,  8 Sep 16 20:36 /dev/ram8\nbrw-rw----. 1 root disk 1,  9 Sep 16 20:36 /dev/ram9\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThe standard ramdisk size is very low ( \u0026lt; 20MB) so you may need to increase it.\u003c/p\u003e\n\u003cp\u003eTo increase it, in my case to 128MB, you have to edit the /etc/grub.conf and add ramdisk_size=131072 at the end of the kernel line:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e kernel /boot/vmlinuz-2.6.32-71.29.1.el6.x86_64 ro root=/dev/md2 \u0026lt;strong\u0026gt;ramdisk_size=131072\u0026lt;/strong\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eNow reboot so the changes take effect.\u003c/p\u003e\n\u003cp\u003eOnce rebooted, format one of the ramdisk devices:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003emke2fs -m 0 /dev/ram0\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eNow create a folder, mount the device and set the appropriate owner.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003emkdir /home/user/ramdisk \n\nmount /dev/ram0 /home/user/ramdisk \n\nchown user:user /home/user/ramdisk\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThat’s it. Remember that everything you put onto the ramdisk is lost after rebooting. So back it up before you reboot the server or better set up a cron job to do regular backups for you.\u003c/p\u003e\n\u003cp\u003eIf you want the ramdisk to be set up automatically after a reboot add the following to your /etc/rc.local file:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003emke2fs -m 0 /dev/ram0 \n\nmount /dev/ram0 /home/user/ramdisk \n\nchown user:user /home/user/ramdisk \n\n# Example for copying the backup back on the ramdisk \n\n# cp -R /home/user/backup/* /home/user/ramdisk/\n\u003c/code\u003e\u003c/pre\u003e\n",
      "url": "https://black-pixel.net/2011/09/16/set-up-a-ramdisk-on-centos-e-g-for-a-minecraft-server/",
      "date_published": "16096-16-09T948:1616:00+00:00",
      "date_modified": "16096-16-09T948:1616:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "fc35a3171838fc4cfb68649250dc897c28755cf7",
      "title": "PyTAG: Saving and Loading",
      "summary": "",
      "content_text": "This is another of my “Python Text Adventure Game” tutorials. I’ll show you a simple way to save data to a file and load it again.\nFirst of all, you have to import the regular expression module re.\nimport re\nNow set some variables:\nname = raw_input(\u0026#34;Your name: \u0026#34;) weapon = raw_input(\u0026#34;Your weapon: \u0026#34;) level = raw_input(\u0026#34;Your level: \u0026#34;) Now you need a class with the save and load functions:\nclass Option: #The function to save your current data def save(self): #Open the file or create it if it does not exist\u0026lt;br /\u0026gt; self.f = open(\u0026#39;saves.txt\u0026#39;, \u0026#39;w+\u0026#39;) #Put everything you want to save in a single variable and use two spaces as a separator #It would look like this: Username 5 Sword self.savegame = name + \u0026#34; \u0026#34; + weapon + \u0026#34; \u0026#34; + str(level) #Now write it into the file. this will overwrite any existing save self.f.write(self.savegame) #Close the file self.f.close() def load(self): #Open the file self.f = open(\u0026#39;saves.txt\u0026#39;, \u0026#39;r\u0026#39;) #Create a list for the saves self.saves = [] #Add each line to the list and count up for line in self.f: self.saves.append(line) #We are assuming that there is only one savegame and that it is in the first line #Now we use the imported re module to search the content of the file for a pattern and group it #You can find more infos about it here: http://docs.python.org/library/re.html self.match = re.search(r\u0026#39;(w+s*w*)ss(w+s*w*)ss(d+)\u0026#39;, self.saves[0]) #Now put the groups in the related variables name = self.match.group(1) weapon = self.match.group(2) level = self.match.group(3) #Close the file self.f.close()` Add this code to test everything:\nloop = 1 while loop == 1: print \u0026#34;What do you want to test?\u0026#34; print \u0026#34;1) Save\u0026#34; print \u0026#34;2) Load\u0026#34; choice = int(raw_input()) if choice == 1: # Create some variables Option().save() print \u0026#34;Saved\u0026#34; elif choice == 2: Option().load() print \u0026#34;Name: \u0026#34; + name print \u0026#34;Weapon: \u0026#34; + weapon print \u0026#34;Level: \u0026#34; + str(level) raw_input() ",
      "content_html": "\u003cp\u003eThis is another of my “Python Text Adventure Game” tutorials. I’ll show you a simple way to save data to a file and load it again.\u003c/p\u003e\n\u003cp\u003eFirst of all, you have to import the regular expression module \u003ca href=\"http://docs.python.org/library/re.html\"\u003ere\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eimport re\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eNow set some variables:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ename = raw_input(\u0026#34;Your name: \u0026#34;)\nweapon = raw_input(\u0026#34;Your weapon: \u0026#34;)\nlevel = raw_input(\u0026#34;Your level: \u0026#34;)\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eNow you need a class with the save and load functions:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eclass Option:\n  #The function to save your current data\n  def save(self):\n    #Open the file or create it if it does not exist\u0026lt;br /\u0026gt;\n    self.f = open(\u0026#39;saves.txt\u0026#39;, \u0026#39;w+\u0026#39;)\n    #Put everything you want to save in a single variable and use two spaces as a separator\n    #It would look like this: Username  5  Sword\n    self.savegame = name + \u0026#34;  \u0026#34; + weapon + \u0026#34;  \u0026#34; + str(level)\n    #Now write it into the file. this will overwrite any existing save\n    self.f.write(self.savegame)\n    #Close the file\n    self.f.close()\n    def load(self):\n      #Open the file\n      self.f = open(\u0026#39;saves.txt\u0026#39;, \u0026#39;r\u0026#39;)\n      #Create a list for the saves\n      self.saves = []\n      #Add each line to the list and count up\n      for line in self.f:\n        self.saves.append(line)\n      #We are assuming that there is only one savegame and that it is in the first line\n      #Now we use the imported re module to search the content of the file for a pattern and group it\n      #You can find more infos about it here: http://docs.python.org/library/re.html\n      self.match = re.search(r\u0026#39;(w+s*w*)ss(w+s*w*)ss(d+)\u0026#39;, self.saves[0])\n      #Now put the groups in the related variables\n      name = self.match.group(1)\n      weapon = self.match.group(2)\n      level = self.match.group(3)\n      #Close the file\n      self.f.close()`\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eAdd this code to test everything:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eloop = 1\nwhile loop == 1:\n  print \u0026#34;What do you want to test?\u0026#34;\n  print \u0026#34;1) Save\u0026#34;\n  print \u0026#34;2) Load\u0026#34;\n  choice = int(raw_input())\n  if choice == 1:\n    # Create some variables\n    Option().save()\n    print \u0026#34;Saved\u0026#34;\n  elif choice == 2:\n    Option().load()\n    print \u0026#34;Name: \u0026#34; + name\n    print \u0026#34;Weapon: \u0026#34; + weapon\n    print \u0026#34;Level: \u0026#34; + str(level)\n    raw_input()\n\u003c/code\u003e\u003c/pre\u003e",
      "url": "https://black-pixel.net/2011/09/05/pytag-saving-and-loading/",
      "date_published": "5096-05-09T97:55:00+00:00",
      "date_modified": "5096-05-09T97:55:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "e62b2e9100356a518c5857cbef1adf2356a640c8",
      "title": "Bootable Pen Drive with Grub4DOS, FreeDOS and ISO Images (e.g. UBCD)",
      "summary": "",
      "content_text": "In this post I’ll show you a really neat pen drive installation. A bootable pen drive with FreeDOS installed (no images used) and Grub4DOS to load any ISO image you want.\nStart with formatting the USB-Stick using FAT32. The first thing to care about now is Grub4DOS.\nYou’ll need the latest version of Grub4DOS and the Installer:\nhttp://download.gna.org/grub4dos/grub4dos-0.4.4.zip\nhttp://download.gna.org/grubutil/grubinst-1.1-bin-w32-2008-01-01.zip\nNow extract them and start grubinst_gui.exe as administrator.\nSelect Disk, click on Refresh and then select your pen drive.\nClick on Refresh at Part List and then select Whole disk (MBR).\nIf you get an error message complaining about an invalid partition table, just put -skip-mbr-test in the Extra field.\nSelect Don't search floppy and leave the rest as it is, then click on Install.\nNow you should get this message:\nNext up, copy the file grldr (NOT grldr.mbr) onto the pen drive and create a new file called menu.lst.\ncolor green/black black/green white/black white/black timeout 30 default 0 This is the first part. It defines the color of the menu, the default menu selection and the time after which the default menu selection is executed.\nNow we’ll add something to boot CD ISO images, in this case, Ultimate Boot CD. (You can add any Image you want, such as Linux live distributions or Windows DVDs , just create a menu entry for every iso)\nhttp://www.ultimatebootcd.com/download.html\ntitle Ultimate Boot CD map (hd0,0)/ubcd511.iso (hd32) map \u0026amp;#8211;hook chainloader (hd32) boot You have to copy the ubcd511.iso in the root directory of your pen drive. You can also create a folder called “Images” and put it in there. Just make sure you set the appropriate path to the file.\nNow let’s set up FreeDOS.\nDownload fdbasecd.iso from http://www.freedos.org/freedos/files/.\nExtract or mount it and copy the folder ODIN from FREEDOSSETUP onto the pen drive and copy COMMAND.COM from the ODIN folder into the root of the device.\nThe last step is to add the following to your menu.lst to boot FreeDOS:\ntitle Boot FreeDOS root (hd0,0) chainloader /ODIN/kernel.sys boot If you want you can also add the following lines at the end, they should be self explanatory.\ntitle reboot reboot title halt halt Congratulations, your done. Now you can try it. It should look like this:\nUpdate 2013-06-23:\nI don’t know why but it is possible that you’ll get this error message when you boot FreeDOS:\nBad or missing Command INterpreter: command.com /P /E:256 Enter the full shell command line: It seems like FreeDOS is searching for the command.com file in the root directory. Anyway, all you have to do is enter the full path: /ODIN/command.com /P /E:256\n\u0026amp;nbKsp;\nHere are several links that helped me to work things out:\nhttp://diddy.boot-land.net/grub4dos/files/boot.htm\nhttp://www.themudcrab.com/acronis_grub4dos.php\n",
      "content_html": "\u003cp\u003eIn this post I’ll show you a really neat pen drive installation. A bootable pen drive with FreeDOS installed (no images used) and Grub4DOS to load any ISO image you want.\u003c/p\u003e\n\u003cp\u003eStart with formatting the USB-Stick using FAT32. The first thing to care about now is Grub4DOS.\u003c/p\u003e\n\u003cp\u003eYou’ll need the latest version of Grub4DOS and the Installer:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://download.gna.org/grub4dos/grub4dos-0.4.4.zip\"\u003ehttp://download.gna.org/grub4dos/grub4dos-0.4.4.zip\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://download.gna.org/grubutil/grubinst-1.1-bin-w32-2008-01-01.zip\"\u003ehttp://download.gna.org/grubutil/grubinst-1.1-bin-w32-2008-01-01.zip\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eNow extract them and start \u003ccode\u003egrubinst_gui.exe\u003c/code\u003e as administrator.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"http://black-pixel.net/wp-content/uploads/2011/08/grub4dos1.gif\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cp\u003eSelect \u003ccode\u003eDisk\u003c/code\u003e, click on \u003ccode\u003eRefresh\u003c/code\u003e and then select your pen drive.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"http://black-pixel.net/wp-content/uploads/2011/08/grub4dos2.gif\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cp\u003eClick on \u003ccode\u003eRefresh\u003c/code\u003e at \u003ccode\u003ePart List\u003c/code\u003e and then select \u003ccode\u003eWhole disk (MBR)\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIf you get an error message complaining about an invalid partition table, just put \u003ccode\u003e-skip-mbr-test\u003c/code\u003e in the \u003ccode\u003eExtra\u003c/code\u003e field.\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"http://black-pixel.net/wp-content/uploads/2011/08/grub4dos3.gif\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cp\u003eSelect \u003ccode\u003eDon't search floppy\u003c/code\u003e and leave the rest as it is, then click on Install.\u003c/p\u003e\n\u003cp\u003eNow you should get this message:\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"http://black-pixel.net/wp-content/uploads/2011/08/grub4dos4.gif\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cp\u003eNext up, copy the file \u003ccode\u003egrldr\u003c/code\u003e (NOT grldr.mbr) onto the pen drive and create a new file called \u003ccode\u003emenu.lst\u003c/code\u003e.\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ecolor green/black black/green white/black white/black\ntimeout 30\ndefault 0\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThis is the first part. It defines the color of the menu, the default menu selection and the time after which the default menu selection is executed.\u003c/p\u003e\n\u003cp\u003eNow we’ll add something to boot CD ISO images, in this case, Ultimate Boot CD. (You can add any Image you want, such as Linux live distributions or Windows DVDs , just create a menu entry for every iso)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://www.ultimatebootcd.com/download.html\"\u003ehttp://www.ultimatebootcd.com/download.html\u003c/a\u003e\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003etitle Ultimate Boot CD\nmap (hd0,0)/ubcd511.iso (hd32)\nmap \u0026amp;#8211;hook\nchainloader (hd32)\nboot\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eYou have to copy the \u003ccode\u003eubcd511.iso\u003c/code\u003e in the root directory of your pen drive. You can also create a folder called “Images” and put it in there. Just make sure you set the appropriate path to the file.\u003c/p\u003e\n\u003cp\u003eNow let’s set up FreeDOS.\u003c/p\u003e\n\u003cp\u003eDownload \u003cspan style=\"background-color: #c0c0c0;\"\u003efdbasecd.iso\u003c/span\u003e from \u003ca href=\"http://www.freedos.org/freedos/files/\"\u003ehttp://www.freedos.org/freedos/files/\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eExtract or mount it and copy the folder \u003ccode\u003eODIN\u003c/code\u003e from \u003ccode\u003eFREEDOSSETUP\u003c/code\u003e onto the pen drive and copy \u003ccode\u003eCOMMAND.COM\u003c/code\u003e from the \u003ccode\u003eODIN\u003c/code\u003e folder into the root of the device.\u003c/p\u003e\n\u003cp\u003eThe last step is to add the following to your menu.lst to boot FreeDOS:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003etitle Boot FreeDOS\nroot (hd0,0)\nchainloader /ODIN/kernel.sys\nboot\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eIf you want you can also add the following lines at the end, they should be self explanatory.\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003etitle reboot\nreboot\n\ntitle halt\nhalt\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eCongratulations, your done. Now you can try it. It should look like this:\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"http://black-pixel.net/wp-content/uploads/2011/08/grub4dos51-300x194.gif\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUpdate 2013-06-23:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eI don’t know why but it is possible that you’ll get this error message when you boot FreeDOS:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eBad or missing Command INterpreter: command.com /P /E:256\nEnter the full shell command line:\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eIt seems like FreeDOS is searching for the command.com file in the root directory. Anyway, all you have to do is enter the full path: \u003ccode\u003e/ODIN/command.com /P /E:256\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e\u0026amp;nbKsp;\u003c/p\u003e\n\u003cp\u003eHere are several links that helped me to work things out:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://diddy.boot-land.net/grub4dos/files/boot.htm\"\u003ehttp://diddy.boot-land.net/grub4dos/files/boot.htm\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://www.themudcrab.com/acronis_grub4dos.php\"\u003ehttp://www.themudcrab.com/acronis_grub4dos.php\u003c/a\u003e\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2011/08/27/bootable-usb-stick-with-grub4dos-freedos-and-iso-images-e-g-ubcd/",
      "date_published": "27086-27-09T83:2727:00+00:00",
      "date_modified": "27086-27-09T83:2727:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "df07a1d5e7124b9a6e076943dcaba09769a892ef",
      "title": "New Theme",
      "summary": "",
      "content_text": "Even though I’ve changed the theme just a month ago, I made a new one. This time I’ve tried to focus more on usability. It is based on the Oulipo theme by A. Mignolo. I’ve chosen this one because of the very nice typography. If you like it or have any suggestions, feel free to write a comment.\nUnfortunately Firefox does not display my custom font for the recent tweets title (the blue box in the header). It seems that @font-face does not work since FF 3.6.10. Here is a link on that topic: https://support.mozilla.com/de/questions/753529.\nAfter searching for a while, I’ve found this:\nhttp://stackoverflow.com/questions/2856502/css-font-face-not-working-with-firefox-but-working-with-chrome-and-ie\nIt seems that in my case it is a cross domain problem, as I am also using the domain black-pixel.info on which the title is displayed. Not in the font I want it to be, but it is displayed. I’ve tried the .htaccess fix but it does not work.\n",
      "content_html": "\u003cp\u003eEven though I’ve changed the theme just a month ago, I made a new one. This time I’ve tried to focus more on usability. It is based on the \u003ca href=\"http://wordpress.org/extend/themes/oulipo\"\u003eOulipo\u003c/a\u003e theme by \u003cspan class=\"Apple-style-span\"\u003e\u003ca title=\"Visit author homepage\" href=\"http://andreamignolo.com/\"\u003eA. Mignolo\u003c/a\u003e. I’ve chosen this one because of the very nice typography. If you like it or have any suggestions, feel free to write a comment.\u003c/span\u003e\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eUnfortunately Firefox does not display my custom font for the recent tweets title (the blue box in the header). It seems that @font-face does not work since FF \u003cspan class=\"Apple-style-span\" style=\"font-size: small;\"\u003e3.6.10. Here is a link on that topic: \u003ca href=\"https://support.mozilla.com/de/questions/753529\"\u003e\u003ca href=\"https://support.mozilla.com/de/questions/753529\"\u003ehttps://support.mozilla.com/de/questions/753529\u003c/a\u003e\u003c/a\u003e\u003c/span\u003e.\u003c/p\u003e\n\u003cp\u003eAfter searching for a while, I’ve found this:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://stackoverflow.com/questions/2856502/css-font-face-not-working-with-firefox-but-working-with-chrome-and-ie\"\u003ehttp://stackoverflow.com/questions/2856502/css-font-face-not-working-with-firefox-but-working-with-chrome-and-ie\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIt seems that in my case it is a cross domain problem, as I am also using the domain black-pixel.info on which the title is displayed. Not in the font I want it to be, but it is displayed. I’ve tried the .htaccess fix but it does not work.\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2011/08/20/new-theme/",
      "date_published": "20086-20-09T837:2020:00+00:00",
      "date_modified": "20086-20-09T837:2020:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "9e2b48ac292e87b4c83594b67a7e4172c6ad5e26",
      "title": "Configure Vsftpd to use FTPS",
      "summary": "",
      "content_text": "This is a little HOWTO on configuring Vsftpd to use FTP over SSL and FTPS only, which is highly recommended. You can use it to upgrade WordPress and install plugins, for example.\nFirst open your vsftpd.conf, it should be located in /etc/.\nNow add the following lines to enable SSL:\nssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=YES ssl_sslv3=YES The last thing you need is to specify the SSL files. There are already default files you can use.\n# This option specifies the location of the RSA certificate to use for SSL # encrypted connections. rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem # This option specifies the location of the RSA key to use for SSL # encrypted connections. rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key You can also use your own SSL files if you want. You just have to set the appropriate path.\nAfter a restart of Vsftpd, everything should work.\nNote: If you’ve just installed vsftpd, you should make some additional configurations depending on your needs.\nThese are some adjustments I recommend:\n# Allow anonymous FTP? (Beware - allowed by default if you comment this out). anonymous_enable=NO # Uncomment this to allow local users to log in. local_enable=YES # Uncomment this to enable any form of FTP write command. write_enable=YES # Default umask for local users is 077. You may wish to change this to 022, # if your users expect that (022 is used by most other ftpd\u0026#39;s) local_umask=022 ",
      "content_html": "\u003cp\u003eThis is a little HOWTO on configuring Vsftpd to use \u003cstrong\u003eFTP\u003c/strong\u003e over \u003cstrong\u003eS\u003c/strong\u003eSL and FTPS only, which is highly recommended. You can use it to upgrade WordPress and install plugins, for example.\u003c/p\u003e\n\u003cp\u003eFirst open your \u003ccode\u003evsftpd.conf\u003c/code\u003e, it should be located in \u003ccode\u003e/etc/\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eNow add the following lines to enable SSL:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003essl_enable=YES\nallow_anon_ssl=NO\nforce_local_data_ssl=YES\nforce_local_logins_ssl=YES\nssl_tlsv1=YES\nssl_sslv2=YES\nssl_sslv3=YES\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThe last thing you need is to specify the SSL files. There are already default files you can use.\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e# This option specifies the location of the RSA certificate to use for SSL\n# encrypted connections.\nrsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem\n# This option specifies the location of the RSA key to use for SSL\n# encrypted connections.\nrsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eYou can also use your own SSL files if you want. You just have to set the appropriate path.\u003c/p\u003e\n\u003cp\u003eAfter a restart of Vsftpd, everything should work.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eNote: If you’ve just installed vsftpd, you should make some additional configurations depending on your needs.\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eThese are some adjustments I recommend:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e# Allow anonymous FTP? (Beware - allowed by default if you comment this out).\nanonymous_enable=NO\n# Uncomment this to allow local users to log in.\nlocal_enable=YES\n# Uncomment this to enable any form of FTP write command.\nwrite_enable=YES\n# Default umask for local users is 077. You may wish to change this to 022,\n# if your users expect that (022 is used by most other ftpd\u0026#39;s)\nlocal_umask=022\n\u003c/code\u003e\u003c/pre\u003e",
      "url": "https://black-pixel.net/2011/08/02/configure-vsftpd-to-use-ftps/",
      "date_published": "2086-02-09T852:22:00+00:00",
      "date_modified": "2086-02-09T852:22:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "2f950c388c430b2effbebc87c6cacf0cc0745f0c",
      "title": "Project File Server 2: The Hardware",
      "summary": "",
      "content_text": "Because of some problems with my file server, I’ve decided to buy new hardware and make a fresh install.\nThis is the hardware I am using: CPU: AMD Athlon II X3 415e\nMainboard: GIGABYTE GA-870A-UD3 Rev. 3.1\nGPU: Sapphire ATI Radeon HD5450\nRAM: Kingston ValueRAM DIMM 4 GB DDR3-1333\nPower supply: Thermaltake Toughpower 750 W\nSystem HDD: Seagate Barracuda 320GB\nFile HDDs: 6 x Samsung HD154UI 1,5 TB (RAID 6)\nPictures: ",
      "content_html": "\u003cp\u003eBecause of some problems with my file server, I’ve decided to buy new hardware and make a fresh install.\u003c/p\u003e\n\u003ch1 id=\"this-is-the-hardware-i-am-using\"\u003eThis is the hardware I am using:\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eCPU\u003c/strong\u003e: AMD Athlon II X3 415e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eMainboard\u003c/strong\u003e: GIGABYTE GA-870A-UD3 Rev. 3.1\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eGPU\u003c/strong\u003e: Sapphire ATI Radeon HD5450\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eRAM\u003c/strong\u003e: Kingston ValueRAM DIMM 4 GB DDR3-1333\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003ePower supply\u003c/strong\u003e: Thermaltake Toughpower 750 W\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eSystem HDD\u003c/strong\u003e: Seagate Barracuda 320GB\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eFile HDDs\u003c/strong\u003e: 6 x Samsung HD154UI 1,5 TB (RAID 6)\u003c/p\u003e\n\u003cp\u003e\n  Pictures:\n\u003c/p\u003e\n\u003cp\u003e\n  \u003ca href=\"http://black-pixel.net/wp-content/uploads/2011/07/cpu.jpg\"\u003e\u003cimg class=\"alignnone size-thumbnail wp-image-586\" title=\"cpu\" src=\"http://black-pixel.net/wp-content/uploads/2011/07/cpu-150x150.jpg\" alt=\"cpu\" width=\"150\" height=\"150\" /\u003e\u003c/a\u003e\u003ca href=\"http://black-pixel.net/wp-content/uploads/2011/07/mobo.jpg\"\u003e\u003cimg class=\"alignnone size-thumbnail wp-image-587\" title=\"mainboard\" src=\"http://black-pixel.net/wp-content/uploads/2011/07/mobo-150x150.jpg\" alt=\"mainboard\" width=\"150\" height=\"150\" /\u003e\u003c/a\u003e\u003ca href=\"http://black-pixel.net/wp-content/uploads/2011/07/gpu.jpg\"\u003e\u003cimg class=\"alignnone size-thumbnail wp-image-588\" title=\"gpu\" src=\"http://black-pixel.net/wp-content/uploads/2011/07/gpu-150x150.jpg\" alt=\"gpu\" width=\"150\" height=\"150\" /\u003e\u003c/a\u003e\u003ca href=\"http://black-pixel.net/wp-content/uploads/2011/07/ram.jpg\"\u003e\u003cimg class=\"alignnone size-thumbnail wp-image-589\" title=\"ram\" src=\"http://black-pixel.net/wp-content/uploads/2011/07/ram-150x150.jpg\" alt=\"ram\" width=\"150\" height=\"150\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\n",
      "url": "https://black-pixel.net/2011/07/30/project-file-server-2-the-hardware/",
      "date_published": "30076-30-09T713:3030:00+00:00",
      "date_modified": "30076-30-09T713:3030:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "9b010cb5bf575dd55a8b801d1f0694dde71c6514",
      "title": "New CSS 3 Theme",
      "summary": "",
      "content_text": "This is my new CSS 3 theme, it’s based on the Twenty Eleven theme. Took me quite a while but it was worth it. The only pictures in this design are the “Pixel” before the title and the social icons.\nSome additional tweaks may follow once I’ve gain more experience with CSS 3. 🙂\nHere are some useful links about CSS 3:\nhttp://www.css3.info/ http://www.addictivefonts.com/various/css3/css3-text-effects/ http://www.webdesignerdepot.com/2011/01/50-awesome-css3-techniques-for-better-designs/ ",
      "content_html": "\u003cp\u003eThis is my new CSS 3 theme, it’s based on the Twenty Eleven theme. Took me quite a while but it was worth it. The only pictures in this design are the “Pixel” before the title and the social icons.\u003c/p\u003e\n\u003cp\u003eSome additional tweaks may follow once I’ve gain more experience with CSS 3. 🙂\u003c/p\u003e\n\u003cp\u003eHere are some useful links about CSS 3:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"http://www.css3.info/\"\u003ehttp://www.css3.info/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://www.addictivefonts.com/various/css3/css3-text-effects/\"\u003ehttp://www.addictivefonts.com/various/css3/css3-text-effects/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://www.webdesignerdepot.com/2011/01/50-awesome-css3-techniques-for-better-designs/\"\u003ehttp://www.webdesignerdepot.com/2011/01/50-awesome-css3-techniques-for-better-designs/\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n",
      "url": "https://black-pixel.net/2011/07/16/new-css-3-theme/",
      "date_published": "16076-16-09T751:1616:00+00:00",
      "date_modified": "16076-16-09T751:1616:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "630c9c16891ce10964bd231ac222d9b70d37c408",
      "title": "PHP: Simple Chart Script",
      "summary": "",
      "content_text": "Source:\n\u0026lt;?php if (in_array($_GET[\u0026#34;table_name\u0026#34;], array(\u0026#39;cooler\u0026#39;))) { $table_name = $_GET[\u0026#34;table_name\u0026#34;]; } else { $table_name = \u0026#34;cooler\u0026#34;; } if (in_array($_GET[\u0026#34;order_value\u0026#34;], array(\u0026#39;name\u0026#39;, \u0026#39;standard\u0026#39;, \u0026#39;overclock\u0026#39;))) { $order_value = $_GET[\u0026#34;order_value\u0026#34;]; } else { $order_value = \u0026#34;name\u0026#34;; } if(in_array($_GET[\u0026#34;order_align\u0026#34;], array(\u0026#39;asc\u0026#39;, \u0026#39;desc\u0026#39;))) { $order_align = $_GET[\u0026#34;order_align\u0026#34;]; } else { $order_align = \u0026#34;asc\u0026#34;; } ?\u0026gt; \u0026lt;html\u0026gt; \u0026lt;head\u0026gt; \u0026lt;title\u0026gt;PHP-Chart\u0026lt;/title\u0026gt; \u0026lt;/head\u0026gt; \u0026lt;body\u0026gt; \u0026lt;?php include(\u0026#34;myConnectionDetails\u0026#34;); $db_link = @mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT); if ( ! $db_link ) { die(\u0026#39;No connection available at the moment\u0026#39;); } $db_sel = mysql_select_db( MYSQL_DATENBANK ) or die(\u0026#34;Database not available\u0026#34;); ?\u0026gt; \u0026lt;form name=\u0026#34;form_table\u0026#34; action=\u0026#34;php_chart.php\u0026#34; method=\u0026#34;GET\u0026#34; enctype=\u0026#34;text/html\u0026#34;\u0026gt; \u0026lt;p\u0026gt;Database\u0026lt;/p\u0026gt; \u0026lt;select name=\u0026#39;table_name\u0026#39;\u0026gt; \u0026lt;option value=\u0026#39;cooler\u0026#39;\u0026gt;CPU-Cooler\u0026lt;/option\u0026gt; \u0026lt;/select\u0026gt; \u0026lt;input type=\u0026#34;Submit\u0026#34; value=\u0026#34;Select\u0026#34; /\u0026gt; \u0026lt;/form\u0026gt; \u0026lt;?php if ($table_name) { $ausgabe = mysql_query(\u0026#34;select * FROM $table_name Order by $order_value $order_align\u0026#34;); //Define arrays and variable i (for the while loop) $name = array(); $standard = array(); $overclock = array(); $i = 0; while ($rows=mysql_fetch_array($ausgabe)) { //Arrays for the rows $name[$i] = $rows[\u0026#39;name\u0026#39;]; $standard[$i] = $rows[\u0026#39;standard\u0026#39;]; $overclock[$i] = $rows[\u0026#39;overclock\u0026#39;]; //Count up for each loop $i = $i+1; } // Define a new variable for the highest value of each array $max_standard = max($standard); $max_overclock = max($overclock); // Find out what value is the highest and calculate the lengh of the regarding bars for ($y = 0; $y \u0026lt; $i; $y++){ if ($max_standard \u0026gt; $max_overclock) { $standard_width[$y] = $standard[$y] / $max_standard * 100; $overclock_width[$y] = $standard[$y] / $max_overclock * 100; } else { $standard_width[$y] = $overclock[$y] / $max_standard * 100; $overclock_width[$y] = $overclock[$y] / $max_overclock * 100; } } //Now it\u0026#39;s time to show the results echo \u0026#34;\u0026lt;table BORDER=\u0026#39;2\u0026#39; CELLPADDING=\u0026#39;2\u0026#39; CELLSPACING=\u0026#39;2\u0026#39;\u0026gt; \u0026lt;th\u0026gt;Name \u0026lt;a href=\u0026#39;php_chart.php?table_name=\u0026#34;.$table_name.\u0026#34;\u0026amp;order_value=name\u0026amp;order_align=asc\u0026#39;\u0026gt;\u0026lt;img src=\u0026#39;asc.png\u0026#39; /\u0026gt;\u0026lt;/a\u0026gt; \u0026lt;a href=\u0026#39;php_chart.php?table_name=\u0026#34;.$table_name.\u0026#34;\u0026amp;order_value=name\u0026amp;order_align=desc\u0026#39;\u0026gt;\u0026lt;img src=\u0026#39;desc.png\u0026#39; /\u0026gt;\u0026lt;/a\u0026gt; \u0026lt;/th\u0026gt; \u0026lt;th width=\u0026#39;100px\u0026#39;\u0026gt;Chart\u0026lt;/th\u0026gt; \u0026lt;th\u0026gt;Standard \u0026lt;a href=\u0026#39;php_chart.php?table_name=\u0026#34;.$table_name.\u0026#34;\u0026amp;order_value=standard\u0026amp;order_align=asc\u0026#39;\u0026gt;\u0026lt;img src=\u0026#39;asc.png\u0026#39; /\u0026gt;\u0026lt;/a\u0026gt; \u0026lt;a href=\u0026#39;php_chart.php?table_name=\u0026#34;.$table_name.\u0026#34;\u0026amp;order_value=standard\u0026amp;order_align=desc\u0026#39;\u0026gt;\u0026lt;img src=\u0026#39;desc.png\u0026#39; /\u0026gt;\u0026lt;/a\u0026gt; \u0026lt;/th\u0026gt; \u0026lt;th\u0026gt;Overclock \u0026lt;a href=\u0026#39;php_chart.php?table_name=\u0026#34;.$table_name.\u0026#34;\u0026amp;order_value=overclock\u0026amp;order_align=asc\u0026#39;\u0026gt;\u0026lt;img src=\u0026#39;asc.png\u0026#39; /\u0026gt;\u0026lt;/a\u0026gt; \u0026lt;a href=\u0026#39;php_chart.php?table_name=\u0026#34;.$table_name.\u0026#34;\u0026amp;order_value=overclock\u0026amp;order_align=desc\u0026#39;\u0026gt;\u0026lt;img src=\u0026#39;desc.png\u0026#39; /\u0026gt;\u0026lt;/a\u0026gt; \u0026lt;/th\u0026gt;\u0026lt;tr\u0026gt;\u0026#34;; // Put all values in the table for ($y = 0; $y \u0026lt; $i; $y++){ echo \u0026#34;\u0026lt;th\u0026gt;\u0026#34;.$name[$y].\u0026#34;\u0026lt;/th\u0026gt; \u0026lt;th\u0026gt;\u0026lt;div style=\u0026#39;background-color:#297f03;width:\u0026#34;.$standard_width[$y].\u0026#34;;height:10px;\u0026#39;\u0026gt;\u0026lt;/div\u0026gt;\u0026lt;div style=\u0026#39;background-color:#c11007;width:\u0026#34;.$overclock_width[$y].\u0026#34;;height:10px;\u0026#39;\u0026gt;\u0026lt;/div\u0026gt;\u0026lt;/th\u0026gt; \u0026lt;th\u0026gt;\u0026#34;.$standard[$y].\u0026#34;\u0026lt;/th\u0026gt;\u0026lt;th\u0026gt;\u0026#34;.$overclock[$y].\u0026#34;\u0026lt;/th\u0026gt;\u0026lt;tr\u0026gt; \u0026#34;; } echo \u0026#34;\u0026lt;/table\u0026gt;\u0026#34;; } ?\u0026gt; \u0026lt;/body\u0026gt; \u0026lt;/html\u0026gt; ",
      "content_html": "\u003cp\u003eSource:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e\u0026lt;?php\nif (in_array($_GET[\u0026#34;table_name\u0026#34;], array(\u0026#39;cooler\u0026#39;))) {\n\t$table_name = $_GET[\u0026#34;table_name\u0026#34;];\n  }\nelse {\n  $table_name = \u0026#34;cooler\u0026#34;;\n  }\n\nif (in_array($_GET[\u0026#34;order_value\u0026#34;], array(\u0026#39;name\u0026#39;, \u0026#39;standard\u0026#39;, \u0026#39;overclock\u0026#39;))) {\n\t$order_value = $_GET[\u0026#34;order_value\u0026#34;];\n  }\nelse {\n  $order_value = \u0026#34;name\u0026#34;;\n  }\n\nif(in_array($_GET[\u0026#34;order_align\u0026#34;], array(\u0026#39;asc\u0026#39;, \u0026#39;desc\u0026#39;))) {\n  $order_align = $_GET[\u0026#34;order_align\u0026#34;];\n  }\nelse {\n  $order_align = \u0026#34;asc\u0026#34;;\n  }\n?\u0026gt;\n\n\u0026lt;html\u0026gt;\n\u0026lt;head\u0026gt;\n\u0026lt;title\u0026gt;PHP-Chart\u0026lt;/title\u0026gt;\n\u0026lt;/head\u0026gt;\n\u0026lt;body\u0026gt;\n\n\u0026lt;?php\ninclude(\u0026#34;myConnectionDetails\u0026#34;);\n$db_link = @mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);\nif ( ! $db_link )\n{\n  die(\u0026#39;No connection available at the moment\u0026#39;);\n}\n\n$db_sel = mysql_select_db( MYSQL_DATENBANK )\n        or die(\u0026#34;Database not available\u0026#34;);\n?\u0026gt;\n\n\u0026lt;form name=\u0026#34;form_table\u0026#34; action=\u0026#34;php_chart.php\u0026#34;\n method=\u0026#34;GET\u0026#34; enctype=\u0026#34;text/html\u0026#34;\u0026gt;\n\u0026lt;p\u0026gt;Database\u0026lt;/p\u0026gt;\n\u0026lt;select name=\u0026#39;table_name\u0026#39;\u0026gt;\n  \u0026lt;option value=\u0026#39;cooler\u0026#39;\u0026gt;CPU-Cooler\u0026lt;/option\u0026gt;\n\u0026lt;/select\u0026gt;\n\u0026lt;input type=\u0026#34;Submit\u0026#34; value=\u0026#34;Select\u0026#34; /\u0026gt;\n\u0026lt;/form\u0026gt;\n\n\u0026lt;?php\nif ($table_name) {\n\t$ausgabe = mysql_query(\u0026#34;select * FROM $table_name Order by $order_value $order_align\u0026#34;);\n\n\t//Define arrays and variable i (for the while loop)\n\t$name = array();\n\t$standard = array();\n\t$overclock = array();\n\t$i = 0;\n\n\twhile ($rows=mysql_fetch_array($ausgabe)) {\n\n\t\t//Arrays for the rows\n\t\t$name[$i] = $rows[\u0026#39;name\u0026#39;];\n\t\t$standard[$i] = $rows[\u0026#39;standard\u0026#39;];\n\t\t$overclock[$i] = $rows[\u0026#39;overclock\u0026#39;];\n\n\t\t//Count up for each loop\n\t\t$i = $i+1;\n\t}\n\n\t// Define a new variable for the highest value of each array\n\t$max_standard = max($standard);\n\t$max_overclock = max($overclock);\n\n\t// Find out what value is the highest and calculate the lengh of the regarding bars\n\tfor ($y = 0; $y \u0026lt; $i; $y++){\n\t\tif \t($max_standard \u0026gt; $max_overclock) {\n\t\t\t$standard_width[$y] = $standard[$y] / $max_standard * 100;\n\t\t\t$overclock_width[$y] = $standard[$y] / $max_overclock * 100;\n\t\t}\n\t\telse {\n\t\t\t$standard_width[$y] = $overclock[$y] / $max_standard * 100;\n\t\t\t$overclock_width[$y] = $overclock[$y] / $max_overclock * 100;\n\t\t}\n\t}\n\n\t//Now it\u0026#39;s time to show the results\n\techo \u0026#34;\u0026lt;table BORDER=\u0026#39;2\u0026#39; CELLPADDING=\u0026#39;2\u0026#39; CELLSPACING=\u0026#39;2\u0026#39;\u0026gt;\n\t\u0026lt;th\u0026gt;Name\n\t\u0026lt;a href=\u0026#39;php_chart.php?table_name=\u0026#34;.$table_name.\u0026#34;\u0026amp;order_value=name\u0026amp;order_align=asc\u0026#39;\u0026gt;\u0026lt;img src=\u0026#39;asc.png\u0026#39; /\u0026gt;\u0026lt;/a\u0026gt;\n\t\u0026lt;a href=\u0026#39;php_chart.php?table_name=\u0026#34;.$table_name.\u0026#34;\u0026amp;order_value=name\u0026amp;order_align=desc\u0026#39;\u0026gt;\u0026lt;img src=\u0026#39;desc.png\u0026#39; /\u0026gt;\u0026lt;/a\u0026gt;\n\t\u0026lt;/th\u0026gt;\n\t\u0026lt;th width=\u0026#39;100px\u0026#39;\u0026gt;Chart\u0026lt;/th\u0026gt;\n\t\u0026lt;th\u0026gt;Standard\n\t\u0026lt;a href=\u0026#39;php_chart.php?table_name=\u0026#34;.$table_name.\u0026#34;\u0026amp;order_value=standard\u0026amp;order_align=asc\u0026#39;\u0026gt;\u0026lt;img src=\u0026#39;asc.png\u0026#39; /\u0026gt;\u0026lt;/a\u0026gt;\n\t\u0026lt;a href=\u0026#39;php_chart.php?table_name=\u0026#34;.$table_name.\u0026#34;\u0026amp;order_value=standard\u0026amp;order_align=desc\u0026#39;\u0026gt;\u0026lt;img src=\u0026#39;desc.png\u0026#39; /\u0026gt;\u0026lt;/a\u0026gt;\n\t\u0026lt;/th\u0026gt;\n\t\u0026lt;th\u0026gt;Overclock\n\t\u0026lt;a href=\u0026#39;php_chart.php?table_name=\u0026#34;.$table_name.\u0026#34;\u0026amp;order_value=overclock\u0026amp;order_align=asc\u0026#39;\u0026gt;\u0026lt;img src=\u0026#39;asc.png\u0026#39; /\u0026gt;\u0026lt;/a\u0026gt;\n\t\u0026lt;a href=\u0026#39;php_chart.php?table_name=\u0026#34;.$table_name.\u0026#34;\u0026amp;order_value=overclock\u0026amp;order_align=desc\u0026#39;\u0026gt;\u0026lt;img src=\u0026#39;desc.png\u0026#39; /\u0026gt;\u0026lt;/a\u0026gt;\n\t\u0026lt;/th\u0026gt;\u0026lt;tr\u0026gt;\u0026#34;;\n\t// Put all values in the table\n\tfor ($y = 0; $y \u0026lt; $i; $y++){\n\t\techo \u0026#34;\u0026lt;th\u0026gt;\u0026#34;.$name[$y].\u0026#34;\u0026lt;/th\u0026gt;\n\t\t\u0026lt;th\u0026gt;\u0026lt;div style=\u0026#39;background-color:#297f03;width:\u0026#34;.$standard_width[$y].\u0026#34;;height:10px;\u0026#39;\u0026gt;\u0026lt;/div\u0026gt;\u0026lt;div style=\u0026#39;background-color:#c11007;width:\u0026#34;.$overclock_width[$y].\u0026#34;;height:10px;\u0026#39;\u0026gt;\u0026lt;/div\u0026gt;\u0026lt;/th\u0026gt;\n\t\t\u0026lt;th\u0026gt;\u0026#34;.$standard[$y].\u0026#34;\u0026lt;/th\u0026gt;\u0026lt;th\u0026gt;\u0026#34;.$overclock[$y].\u0026#34;\u0026lt;/th\u0026gt;\u0026lt;tr\u0026gt;\n\t\t\u0026#34;;\n\t}\n\techo \u0026#34;\u0026lt;/table\u0026gt;\u0026#34;;\n\n}\n?\u0026gt;\n\u0026lt;/body\u0026gt;\n\u0026lt;/html\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e",
      "url": "https://black-pixel.net/2011/07/07/php-simple-chart-script/",
      "date_published": "7076-07-09T76:77:00+00:00",
      "date_modified": "7076-07-09T76:77:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "a52bfa78a821765a5dab0abeab2baf96cdc4da09",
      "title": "Python Text Adventure Game: Simple Interaction",
      "summary": "",
      "content_text": "In this post I will show you a very primitive interaction script and combine it with the text displaying script.\nFirst of all you have to import os:\nimport os\nYou need this for the “clearscreen” function. As the name says, it “clears” the screen so you can focus on new text.\nThis is the script:\ndef clearscreen(): if os.name == \u0026#34;posix\u0026#34;: # Unix/Linux/MacOS/BSD/etc os.system(\u0026#39;clear\u0026#39;) elif os.name in (\u0026#34;nt\u0026#34;, \u0026#34;dos\u0026#34;, \u0026#34;ce\u0026#34;): # DOS/Windows os.system(\u0026#39;CLS\u0026#39;) The first thing you do here is defining a function with def. This is so you don’t have to write the whole script everytime. As there are different commands for clear depending on the operating system, you check what os you are dealing with and then use the related command.\nYou should also define a function for the writing script. It should look like this:\nimport time import sys from random import randrange def writetext(text): for c in text: sys.stdout.write(c) sys.stdout.flush() seconds = \u0026#34;0.0\u0026#34; + str(randrange(5, 9, 1)) seconds = float(seconds) time.sleep(seconds) If you want to learn more about functions, have a look at this page: http://docs.python.org/tutorial/controlflow.html#defining-functions\nNow it’s time for some more functions. 🙂\nIn this example, our character is in a locked room and searches for the key. Let’s start with the function for the menu:\ndef menu(list, question): for entry in list: print 1 + list.index(entry), print \u0026#34;) \u0026#34; + entry return input(question) - 1 The list will contain all places we want to search for the key to open the door. This function shows our menu with all the places from our list.\nJust one more function now. 😉\ndef inspect(choice,location): if choice == location: print \u0026#34;\u0026#34; print \u0026#34;You found a key!\u0026#34; print \u0026#34;\u0026#34; return 1 else: print \u0026#34;\u0026#34; # Clear the screen so the menu won\u0026#39;t be duplicated. clearscreen() print \u0026#34;Nothing of interest here.\u0026#34; print \u0026#34;\u0026#34; return 0 This was the inspect function. It defines what happens if we select a place from the menu. If our choice is the right place for the key, it will display “You found a key!”. If it was the wrong place, the screen will be cleared and the menu written again.\nNow define the items and set some variables:\nitems = [\u0026#34;pot plant\u0026#34;,\u0026#34;small case\u0026#34;,\u0026#34;vase\u0026#34;,\u0026#34;shoe\u0026#34;] keylocation = 2 keyfound = 0 loop = 1 Items are the places to look for the key.\nKeylocation is where the key is, in our case it’s the vase. (It starts at 0)\nKeyfound is whether you have found the key already or not and loop is the variable to loop the whole game until we found the key.\nNow you can execute the game:\nprint \u0026#34;\u0026#34; # Write the introduction text writetext(text) print \u0026#34;\u0026#34; #Get your menu working, and the program running until you find the key while loop == 1: keyfound = inspect(menu(items,\u0026#34;What do you want to inspect? \u0026#34;),keylocation) if keyfound == 1: writetext(\u0026#34;You put the key in the lock of the door, and turn it. It opens!\u0026#34; loop = 0 Here is the whole Code: pytag.zip\nI got a lot of stuff in this post from this site: http://www.sthurlow.com/python/lesson07/\nIt has nice tutorials and may also help you. 🙂\n",
      "content_html": "\u003cp\u003eIn this post I will show you a very primitive interaction script and combine it with the \u003ca href=\"http://black-pixel.net/python-text-adventure-game-displaying-text-slowly.html\"\u003etext displaying script\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eFirst of all you have to import os:\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eimport os\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eYou need this for the “clearscreen” function. As the name says, it “clears” the screen so you can focus on new text.\u003c/p\u003e\n\u003cp\u003eThis is the script:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003edef clearscreen():\n    if os.name == \u0026#34;posix\u0026#34;:\n       # Unix/Linux/MacOS/BSD/etc\n       os.system(\u0026#39;clear\u0026#39;)\n    elif os.name in (\u0026#34;nt\u0026#34;, \u0026#34;dos\u0026#34;, \u0026#34;ce\u0026#34;):\n       # DOS/Windows\n       os.system(\u0026#39;CLS\u0026#39;)\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThe first thing you do here is defining a function with \u003cspan style=\"color: #ff9900;\"\u003e\u003cem\u003edef\u003c/em\u003e\u003c/span\u003e. This is so you don’t have to write the whole script everytime. As there are different commands for clear depending on the operating system, you check what os you are dealing with and then use the related command.\u003c/p\u003e\n\u003cp\u003eYou should also define a function for the \u003ca href=\"http://black-pixel.net/python-text-adventure-game-displaying-text-slowly.html\"\u003ewriting script\u003c/a\u003e. It should look like this:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eimport time\nimport sys\nfrom random import randrange\ndef writetext(text):\n    for c in text:\n       sys.stdout.write(c)\n       sys.stdout.flush()\n       seconds = \u0026#34;0.0\u0026#34; + str(randrange(5, 9, 1))\n       seconds = float(seconds)\n       time.sleep(seconds)\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eIf you want to learn more about functions, have a look at this page: \u003ca href=\"http://docs.python.org/tutorial/controlflow.html#defining-functions\"\u003ehttp://docs.python.org/tutorial/controlflow.html#defining-functions\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eNow it’s time for some more functions. 🙂\u003c/p\u003e\n\u003cp\u003eIn this example, our character is in a locked room and searches for the key. Let’s start with the function for the menu:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003edef menu(list, question):\n    for entry in list:\n       print 1 + list.index(entry),\n       print \u0026#34;) \u0026#34; + entry\n       return input(question) - 1\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThe list will contain all places we want to search for the key to open the door. This function shows our menu with all the places from our list.\u003c/p\u003e\n\u003cp\u003eJust one more function now. 😉\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003edef inspect(choice,location):\n   if choice == location:\n        print \u0026#34;\u0026#34;\n        print \u0026#34;You found a key!\u0026#34;\n        print \u0026#34;\u0026#34;\n        return 1\n   else:\n        print \u0026#34;\u0026#34;\n        # Clear the screen so the menu won\u0026#39;t be duplicated.\n        clearscreen()\n        print \u0026#34;Nothing of interest here.\u0026#34;\n        print \u0026#34;\u0026#34;\n        return 0\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThis was the inspect function. It defines what happens if we select a place from the menu. If our choice is the right place for the key, it will display “You found a key!”. If it was the wrong place, the screen will be cleared and the menu written again.\u003c/p\u003e\n\u003cp\u003eNow define the items and set some variables:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eitems = [\u0026#34;pot plant\u0026#34;,\u0026#34;small case\u0026#34;,\u0026#34;vase\u0026#34;,\u0026#34;shoe\u0026#34;]\n\nkeylocation = 2\nkeyfound = 0\nloop = 1\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eItems are the places to look for the key.\u003c/p\u003e\n\u003cp\u003eKeylocation is where the key is, in our case it’s the vase. (It starts at 0)\u003c/p\u003e\n\u003cp\u003eKeyfound is whether you have found the key already or not and loop is the variable to loop the whole game until we found the key.\u003c/p\u003e\n\u003cp\u003eNow you can execute the game:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eprint \u0026#34;\u0026#34;\n# Write the introduction text\nwritetext(text)\nprint \u0026#34;\u0026#34;\n#Get your menu working, and the program running until you find the key\nwhile loop == 1:\n    keyfound = inspect(menu(items,\u0026#34;What do you want to inspect? \u0026#34;),keylocation)\n    if keyfound == 1:\n        writetext(\u0026#34;You put the key in the lock of the door, and turn it. It opens!\u0026#34;\n        loop = 0\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eHere is the whole Code: \u003ca href=\"http://black-pixel.net/wp-content/uploads/2011/04/pytag.zip\"\u003epytag.zip\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eI got a lot of stuff in this post from this site: \u003ca href=\"http://www.sthurlow.com/python/lesson07/\"\u003ehttp://www.sthurlow.com/python/lesson07/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIt has nice tutorials and may also help you. 🙂\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2011/04/24/python-text-adventure-game-simple-interaction/",
      "date_published": "24046-24-09T446:2424:00+00:00",
      "date_modified": "24046-24-09T446:2424:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "5e4ad44d85b0e7959ed100ae5290bcf710f8e572",
      "title": "Debian RAID 5 + Encryption",
      "summary": "",
      "content_text": "This is a little summary about what I did to create an encrypted RAID 5 device on my file server.\nFirst of all I had to install mdadm and cryptsetup.\napt-get install mdadm cryptsetup\nThe next step is to create the RAID 5, this is an example of my configuration.\nmdadm –-create /dev/md0 –-level=5 -–raid-disks=3 /dev/sdb /dev/sdc /dev/sdd\nNow it’s time for the encryption, I’ll call my encrypted RAID 5 device raid1 because I will have 2 raids. You can name it as you like.\ncryptsetup create -c twofish-cbc-essiv:sha256 raid1 /dev/md0\nThe filesystem is still missing. (If you have Debian Lenny, you have to use ext4dev for ext4. More information about it here.)\nmke2fs -t ext4 /dev/mapper/raid1\nThat’s all, now mount it.\nmount /dev/mapper/raid1 /media/raid1\nIf you need to close the container, use the following commands (remember, these are my settings, yours may be different).\numount /media/raid1 cryptsetup remove raid1 /dev/md0 You have to recreate the cryptodrive on every reboot. You have to use exact the same password! There is no message like “wrong password”.\nI wrote a little shell script to make it easier. Content of mount_raid.sh:\ncryptsetup create -c twofish-cbc-essiv:sha256 raid1 /dev/md0 mount /dev/mapper/raid1 /media/raid1 Just to mention, these two German blogs helped me a lot to get started:\nhttp://www.morphhome.net/software-raid5-mit-debian\nhttp://www.navelfluff.de/partitionen-verschlusseln-mit-linux\n",
      "content_html": "\u003cp\u003eThis is a little summary about what I did to create an encrypted RAID 5 device on my file server.\u003c/p\u003e\n\u003cp\u003eFirst of all I had to install mdadm and cryptsetup.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eapt-get install mdadm cryptsetup\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eThe next step is to create the RAID 5, this is an example of my configuration.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003emdadm –-create /dev/md0 –-level=5 -–raid-disks=3 /dev/sdb /dev/sdc /dev/sdd\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eNow it’s time for the encryption, I’ll call my encrypted RAID 5 device raid1 because I will have 2 raids. You can name it as you like.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ecryptsetup create -c twofish-cbc-essiv:sha256 raid1 /dev/md0\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eThe filesystem is still missing. (If you have Debian Lenny, you have to use ext4dev for ext4. More information about it \u003ca href=\"https://ext4.wiki.kernel.org/index.php/Ext4_Howto#For_people_who_are_running_Debian\" title=\"DebianLennyEXT4\"\u003ehere\u003c/a\u003e.)\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003emke2fs -t ext4 /dev/mapper/raid1\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eThat’s all, now mount it.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003emount /dev/mapper/raid1 /media/raid1\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eIf you need to close the container, use the following commands (remember, these are my settings, yours may be different).\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eumount /media/raid1\ncryptsetup remove raid1 /dev/md0\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eYou have to recreate the cryptodrive on every reboot. You have to use exact the same password! There is no message like “wrong password”.\u003c/p\u003e\n\u003cp\u003eI wrote a little shell script to make it easier. Content of mount_raid.sh:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ecryptsetup create -c twofish-cbc-essiv:sha256 raid1 /dev/md0\nmount /dev/mapper/raid1 /media/raid1\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eJust to mention, these two German blogs helped me a lot to get started:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://www.morphhome.net/software-raid5-mit-debian\"\u003ehttp://www.morphhome.net/software-raid5-mit-debian\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://www.navelfluff.de/partitionen-verschlusseln-mit-linux\"\u003ehttp://www.navelfluff.de/partitionen-verschlusseln-mit-linux\u003c/a\u003e\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2011/03/13/debian-raid-5-encryption/",
      "date_published": "13036-13-09T38:1313:00+00:00",
      "date_modified": "13036-13-09T38:1313:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "98e3ca6b1035bd854010990a8eb4bee785f4d1e3",
      "title": "Photoshop Planets",
      "summary": "",
      "content_text": "I’ve made a few planets with Photoshop, these are my first three tries. If you want to use them for something, I can give you a bigger version. Just write me an e-mail. You can find them also in my Art section.\n",
      "content_html": "\u003cp\u003eI’ve made a few planets with Photoshop, these are my first three tries. If you want to use them for something, I can give you a bigger version. Just write me an e-mail. You can find them also in my Art section.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://black-pixel.net/wp-content/uploads/2011/03/planet3.jpg\"\u003e\u003cimg class=\"size-medium wp-image-456 alignnone\" title=\"planet3\" src=\"http://black-pixel.net/wp-content/uploads/2011/03/planet3-300x300.jpg\" alt=\"a planet\" width=\"180\" height=\"180\" /\u003e\u003c/a\u003e\u003ca href=\"http://black-pixel.net/wp-content/uploads/2011/03/planet2.jpg\"\u003e\u003cimg class=\"size-medium wp-image-455 alignnone\" title=\"planet2\" src=\"http://black-pixel.net/wp-content/uploads/2011/03/planet2-300x300.jpg\" alt=\"a planet\" width=\"180\" height=\"180\" /\u003e\u003c/a\u003e\u003ca href=\"http://black-pixel.net/wp-content/uploads/2011/03/planet.jpg\"\u003e\u003cimg class=\"size-medium wp-image-454 alignnone\" title=\"planet\" src=\"http://black-pixel.net/wp-content/uploads/2011/03/planet-300x300.jpg\" alt=\"a planet\" width=\"180\" height=\"180\" /\u003e\u003c/a\u003e\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2011/03/10/photoshop-planets/",
      "date_published": "10036-10-09T329:1010:00+00:00",
      "date_modified": "10036-10-09T329:1010:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "4685a1d03d2eb83a7be50032f1a7ce33af9e6c86",
      "title": "Win7 UAC: Autostart with Admin Privileges",
      "summary": "",
      "content_text": "UAC is a very good feature of Windows 7 and I recommend everyone to use it. No one should work as an administrator. Unfortunately, sometimes you need programs to be started with administrator privileges.\nCore Temp is one example. I like to use the Core Temp Sidebar Gadget but it needs Core Temp to be started with admin privileges. Doing that manually every day annoyed me, so I decided to look for a way to let it start automatically and I found a solution.\nTo do this, you have to open the Task Sheduler and create a new task.\nGive it a name and select your user account, then check “Run only when user is logged on” and “Run with highest privileges”\nGo to Trigger and add a new trigger “at logon”, select all users\nNow go to Actions and add a new one to start your program. (You should put the exe file in your users folder)\nLogout and login again, it should work.\n",
      "content_html": "\u003cp\u003eUAC is a very good feature of Windows 7 and I recommend everyone to use it. No one should work as an administrator. Unfortunately, sometimes you need programs to be started with administrator privileges.\u003c/p\u003e\n\u003cp\u003eCore Temp is one example. I like to use the \u003ca title=\"CoreTempGadget\" href=\"http://www.alcpu.com/CoreTemp/addons.html\" target=\"_blank\"\u003eCore Temp Sidebar Gadget\u003c/a\u003e but it needs Core Temp to be started with admin privileges. Doing that manually every day annoyed me, so I decided to look for a way to let it start automatically and I found a solution.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eTo do this, you have to open the Task Sheduler and create a new task.\u003c/p\u003e\n\u003cp\u003eGive it a name and select your user account, then check “Run only when user is logged on” and “Run with highest privileges”\u003c/p\u003e\n\u003cp\u003eGo to Trigger and add a new trigger “at logon”, select all users\u003c/p\u003e\n\u003cp\u003eNow go to Actions and add a new one to start your program. (You should put the exe file in your users folder)\u003c/p\u003e\n\u003cp\u003eLogout and login again, it should work.\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2011/03/06/win7-uac-autostart-with-admin-privileges/",
      "date_published": "6036-06-09T356:66:00+00:00",
      "date_modified": "6036-06-09T356:66:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "fa495bf1a54f93996534f77a2ca74f2360e44b7e",
      "title": "TS Optics 15 x 70 LE Binocular",
      "summary": "",
      "content_text": "I bought the TS Optics 15 x 70 LE a few weeks ago at Teleskop-Express for a price of 119€. I think this binoculars are a good start for amateur astronomers. You don’t have the weight of a telescope and don’t have the problems to adjust it. You can take it easily with you and just start to look at the sky. It’s a nice way to learn star hopping. You have a greater field of view than with telescopes, which makes it easier.\nI often read that you shouldn’t use a binocular greater than 10×50 without a tripod. But I think, at least in this case, 15×70 is OK to use freehand. Of course you have to practice a little bit to hold it calmly but for the beginning you can also try to lean on something. This binocular has only a weight of 1300 gram so it shouldn’t be a big problem.\nThis week was the first time that I could use it. It was really nice to just look around and notice all those stars you can’t see with the naked eye. The first “object” I’ve seen were the Pleiades, they are easy to find and look great. After that I looked for the Orion Nebula, it was also quite easy to find and a nice view.\nA day after that I took a look at Jupiter at dusk. Of course you can’t expect to see much of a planet with binoculars, but I could notice 2 of Jupiters moons, Ganymede and Callisto.\nI’m very happy with the binocular and hope I can find more interesting objects soon.\n",
      "content_html": "\u003cp\u003eI bought the \u003cstrong\u003eTS Optics 15 x 70 LE\u003c/strong\u003e a few weeks ago at \u003ca title=\"Teleskop-Express\" href=\"https://www.teleskop-express.de/shop/product_info.php/language/en/info/p1420_TS-LE-15x70-Porro-Weitwinkel-Fernglas-mit-besserer-Verguetung.html\" target=\"_blank\"\u003eTeleskop-Express\u003c/a\u003e for a price of 119€. I think this binoculars are a good start for amateur astronomers. You don’t have the weight of a telescope and don’t have the problems to adjust it. You can take it easily with you and just start to look at the sky. It’s a nice way to learn \u003ca title=\"star hopping\" href=\"http://en.wikipedia.org/wiki/Star_hopping\" target=\"_blank\"\u003estar hopping\u003c/a\u003e. You have a greater field of view than with telescopes, which makes it easier.\u003c/p\u003e\n\u003cp\u003eI often read that you shouldn’t use a binocular greater than 10×50 without a tripod. But I think, at least in this case, 15×70 is OK to use freehand. Of course you have to practice a little bit to hold it calmly but for the beginning you can also try to lean on something. This binocular has only a weight of 1300 gram so it shouldn’t be a big problem.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://black-pixel.net/wp-content/uploads/2011/02/1570_h.jpg\"\u003e\u003cimg class=\"size-full wp-image-429 aligncenter\" title=\"1570_h\" alt=\"\" src=\"http://black-pixel.net/wp-content/uploads/2011/02/1570_h.jpg\" width=\"400\" height=\"282\" /\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis week was the first time that I could use it. It was really nice to just look around and notice all those stars you can’t see with the naked eye. The first “object” I’ve seen were the \u003cstrong\u003ePleiades\u003c/strong\u003e, they are easy to find and look great. After that I looked for the \u003cstrong\u003eOrion Nebula\u003c/strong\u003e, it was also quite easy to find and a nice view.\u003c/p\u003e\n\u003cp\u003eA day after that I took a look at Jupiter at dusk. Of course you can’t expect to see much of a planet with binoculars, but I could notice 2 of Jupiters moons, Ganymede and Callisto.\u003c/p\u003e\n\u003cp\u003eI’m very happy with the binocular and hope I can find more interesting objects soon.\u003c/p\u003e",
      "url": "https://black-pixel.net/2011/02/26/ts-optics-15-x-70-le-binocular/",
      "date_published": "26026-26-09T250:2626:00+00:00",
      "date_modified": "26026-26-09T250:2626:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "b7c00a902139db0d869784f679214dee6c7cbf31",
      "title": "Stellarium: The Open Source Planetarium",
      "summary": "",
      "content_text": "I want to show you a really good software, it is called Stellarium.\nIt’s very useful if you want to watch the sky. You can easily find out what you can see from your position. You can select whether you watch with the naked eye, binoculars or a telescope. It’s also a nice tool to learn the constellations, stars, planets, moons and improve your orientation skills.\nYou can decide what you want to be shown (planets, nebulas, etc.) and you can zoom in to get a closer look to see the moons of the planets for example.\nIt is open source and available for Linux, Mac OSX and Windows. The official homepage is: http://stellarium.org/\nI made a few Screenshots to show some of the features:\n",
      "content_html": "\u003cp\u003eI want to show you a really good software, it is called Stellarium.\u003c/p\u003e\n\u003cp\u003eIt’s very useful if you want to watch the sky. You can easily find out what you can see from your position. You can select whether you watch with the naked eye, binoculars or a telescope. It’s also a nice tool to learn the constellations, stars, planets, moons and improve your orientation skills.\u003c/p\u003e\n\u003cp\u003eYou can decide what you want to be shown (planets, nebulas, etc.) and you can zoom in to get a closer look to see the moons of the planets for example.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eIt is open source and available for Linux, Mac OSX and Windows. The official homepage is: \u003ca href=\"http://stellarium.org/\"\u003ehttp://stellarium.org/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eI made a few Screenshots to show some of the features:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://black-pixel.net/wp-content/uploads/2011/02/stellarium.jpg\"\u003e\u003cimg class=\"alignnone size-medium wp-image-379\" title=\"stellarium\" alt=\"\" src=\"http://black-pixel.net/wp-content/uploads/2011/02/stellarium-300x187.jpg\" width=\"300\" height=\"187\" /\u003e\u003c/a\u003e \u003ca href=\"http://black-pixel.net/wp-content/uploads/2011/02/stellarium2.jpg\"\u003e\u003cimg class=\"alignnone size-medium wp-image-380\" title=\"stellarium2\" alt=\"\" src=\"http://black-pixel.net/wp-content/uploads/2011/02/stellarium2-300x187.jpg\" width=\"300\" height=\"187\" /\u003e\u003c/a\u003e \u003ca href=\"http://black-pixel.net/wp-content/uploads/2011/02/Stellarium3.jpg\"\u003e\u003cimg class=\"alignnone size-medium wp-image-381\" title=\"Stellarium3\" alt=\"\" src=\"http://black-pixel.net/wp-content/uploads/2011/02/Stellarium3-300x187.jpg\" width=\"300\" height=\"187\" /\u003e\u003c/a\u003e \u003ca href=\"http://black-pixel.net/wp-content/uploads/2011/02/Stellarium4.jpg\"\u003e\u003cimg class=\"alignnone size-medium wp-image-382\" title=\"Stellarium4\" alt=\"\" src=\"http://black-pixel.net/wp-content/uploads/2011/02/Stellarium4-300x187.jpg\" width=\"300\" height=\"187\" /\u003e\u003c/a\u003e \u003ca href=\"http://black-pixel.net/wp-content/uploads/2011/02/Stellarium5.jpg\"\u003e\u003cimg class=\"alignnone size-medium wp-image-383\" title=\"Stellarium5\" alt=\"\" src=\"http://black-pixel.net/wp-content/uploads/2011/02/Stellarium5-300x187.jpg\" width=\"300\" height=\"187\" /\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n",
      "url": "https://black-pixel.net/2011/02/12/stellarium-the-open-source-planetarium/",
      "date_published": "12026-12-09T20:1212:00+00:00",
      "date_modified": "12026-12-09T20:1212:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "1c4e36c523483022034ddad2d36e615f7fdc7761",
      "title": "Biohacking/Modifying yourself",
      "summary": "",
      "content_text": "I just watched a really interesting speech from the 27th Chaos Communication Congress. It’s about modifying yourself. The lecturer, Lepht Anonym, is trying to extend her own senses by putting tiny magnets and other electronic devices under her own skin.\nA result of this is, for example, the ability to feel electromagnetic fields. If her next project succeeds, she will be able to feel the magnetic north.\nYou can watch the speech here:\nhttp://mirror.netcologne.de/CCC/27C3/mp4-h264-HQ/27c3-4003-en-cybernetics_for_the_masses.mp4 She also has a blog, you can reach it at this link, it\u0026#8217;s also in my blogroll: http://sapiensanonym.blogspot.com/ And here is a Wired article about her and the speech: http://www.wired.com/threatlevel/2010/12/transcending-the-human-diy-style/ Of course this is far away from, let\u0026#8217;s call them cyborgs, we see in science fiction movies or games, but I think experimenting with it is necessary. At least to show what is possible and what could be the next step. She also shows that, theoretically, everyone could do it, you don\u0026#8217;t need much money for it. But if you want to do it, you should know the possible consequences and know what you are doing. (Do some research etc.) ",
      "content_html": "\u003cp\u003eI just watched a really interesting speech from the \u003ca href=\"http://events.ccc.de/congress/2010/wiki/Welcome\" title=\"27C3\"\u003e27th Chaos Communication Congress\u003c/a\u003e. It’s about modifying yourself. The lecturer, Lepht Anonym, is trying to extend her own senses by putting tiny magnets and other electronic devices under her own skin.\u003c/p\u003e\n\u003cp\u003eA result of this is, for example, the ability to feel electromagnetic fields. If her next project succeeds, she will be able to feel the magnetic north.\u003c/p\u003e\n\u003cp\u003eYou can watch the speech here:\u003c/p\u003e\n\u003cp style=\"text-align: center;\"\u003e\n  \u003ca title=\"Cybernetics for the masses\" href=\"http://mirror.netcologne.de/CCC/27C3/mp4-h264-HQ/27c3-4003-en-cybernetics_for_the_masses.mp4\"\u003ehttp://mirror.netcologne.de/CCC/27C3/mp4-h264-HQ/27c3-4003-en-cybernetics_for_the_masses.mp4\u003c/a\u003e\n\u003c/p\u003e\n\u003cp style=\"text-align: left;\"\u003e\n  She also has a blog, you can reach it at this link, it\u0026#8217;s also in my blogroll:\n\u003c/p\u003e\n\u003cp style=\"text-align: center;\"\u003e\n  \u003ca href=\"http://sapiensanonym.blogspot.com/\"\u003ehttp://sapiensanonym.blogspot.com/\u003c/a\u003e\n\u003c/p\u003e\n\u003cp style=\"text-align: left;\"\u003e\n  And here is a Wired article about her and the speech:\n\u003c/p\u003e\n\u003cp style=\"text-align: center;\"\u003e\n  \u003ca href=\"http://www.wired.com/threatlevel/2010/12/transcending-the-human-diy-style/\"\u003ehttp://www.wired.com/threatlevel/2010/12/transcending-the-human-diy-style/\u003c/a\u003e\n\u003c/p\u003e\n\u003cp style=\"text-align: left;\"\u003e\n  Of course this is far away from, let\u0026#8217;s call them cyborgs, we see in science fiction movies or games, but I think experimenting with it is necessary. At least to show what is possible and what could be the next step.\n\u003c/p\u003e\n\u003cp style=\"text-align: left;\"\u003e\n  She also shows that, theoretically, everyone could do it, you don\u0026#8217;t need much money for it. But if you want to do it, you should know the possible consequences and know what you are doing. (Do some research etc.)\n\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2011/01/09/biohackingmodifying-yourself/",
      "date_published": "9016-09-09T157:99:00+00:00",
      "date_modified": "9016-09-09T157:99:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "dab08a0e01aa1973f394000bdd7fc2a4424240fc",
      "title": "Photo Manipulation: Tiger Orange",
      "summary": "",
      "content_text": "I’ve already made this a little time ago with Gimp, it’s an orange combined with the mouth of a tiger. I think it took me about 1-2 hours, I can’t remember exactly how long I worked on it as I improved it over and over again. (On different days)\nYou can find this and other stuff I made in the art section of my blog.\n",
      "content_html": "\u003cp\u003eI’ve already made this a little time ago with Gimp, it’s an orange combined with the mouth of a tiger. I think it took me about 1-2 hours, I can’t remember exactly how long I worked on it as I improved it over and over again. (On different days)\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"http://black-pixel.net/wp-content/uploads/2011/01/TigerOrange.jpg\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cp\u003eYou can find this and other stuff I made in the \u003ca title=\"art section\" href=\"http://black-pixel.net/art\"\u003eart section\u003c/a\u003e of my blog.\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2011/01/08/photo-manipulation-tiger-orange/",
      "date_published": "8016-08-09T18:88:00+00:00",
      "date_modified": "8016-08-09T18:88:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "4d7624992abef7ab328273136d6d8301dddf56a6",
      "title": "Python Text Adventure Game: Displaying Text Slowly",
      "summary": "",
      "content_text": "I started to work on a Python text adventure game. I will split the working progress into several parts. This is the first one.\nWith “displaying the text slowly” I mean that, for example the introduction text, should appear like it is just being typed.\nTo do this, you must first import some things:\nimport time import sys The next step is to set the text you want to be “written”.\ntext = \u0026quot;This is the introduction text.\u0026quot;\nNow you have to make a for loop to print the text not as a single string, but character by character with a little delay between.\nfor c in text: sys.stdout.write(c) sys.stdout.flush() time.sleep(0.2) The “c” stands for character. So the for loop is continuing until it passed every character from the string.\nsys.stdout.write(c) writes the actual character.\nsys.stdout.flush() actually I’m not sure what this means, I think it just clears the buffer.\ntime.sleep(0.2) makes the loop wait 0.2 seconds before it writes the next character.\nYou can set this to any value you feel comfortable with, you can even make it a random number, for example between 0.1 and 0.4.\nThis can be done the following way:\nfrom random import randrange for c in text: sys.stdout.write(c) sys.stdout.flush() seconds = \u0026#34;0.\u0026#34; + str(randrange(1, 4, 1)) seconds = float(seconds) time.sleep(seconds) seconds = “0.” + str(randrange(1, 4, 1)) generates a random integer between 1 and 4 in the step of 1 and converts it into a string. As we need a number between 0.1 and 0.4 we have to add the 0. manually because randrange does only support integer values.\nseconds = float(seconds) converts the string to float, so we can use it with the time.sleep function.\nThis is the whole code again, with the random time.sleep function:\nimport\u0026lt;/span\u0026gt; time import\u0026lt;/span\u0026gt; sys from\u0026lt;/span\u0026gt; random import randrange text = \u0026#34;This is the introduction text.\u0026#34; for c in text: sys.stdout.write(c) sys.stdout.flush() seconds = \u0026#34;0.\u0026#34; + str(randrange(1, 4, 1)) seconds = float(seconds) time.sleep(seconds) ",
      "content_html": "\u003cp\u003eI started to work on a Python text adventure game. I will split the working progress into several parts. This is the first one.\u003c/p\u003e\n\u003cp\u003eWith “displaying the text slowly” I mean that, for example the introduction text, should appear like it is just being typed.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eTo do this, you must first import some things:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eimport time\nimport sys\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThe next step is to set the text you want to be “written”.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003etext = \u0026quot;This is the introduction text.\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eNow you have to make a for loop to print the text not as a single string, but character by character with a little delay between.\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003efor c in text:\n    sys.stdout.write(c)\n    sys.stdout.flush()\n    time.sleep(0.2)\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThe “c” stands for character. So the for loop is continuing until it passed every character from the string.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003esys.stdout.write(c)\u003c/em\u003e writes the actual character.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003esys.stdout.flush()\u003c/em\u003e actually I’m not sure what this means, I think it just clears the buffer.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003etime.sleep(0.2)\u003c/em\u003e makes the loop wait 0.2 seconds before it writes the next character.\u003c/p\u003e\n\u003cp\u003eYou can set this to any value you feel comfortable with, you can even make it a random number, for example between 0.1 and 0.4.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eThis can be done the following way:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003efrom random import randrange\nfor c in text:\n    sys.stdout.write(c)\n    sys.stdout.flush()\n    seconds = \u0026#34;0.\u0026#34; + str(randrange(1, 4, 1))\n    seconds = float(seconds)\n    time.sleep(seconds)\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e\u003cem\u003eseconds = “0.” + str(randrange(1, 4, 1))\u003c/em\u003e generates a random integer between 1 and 4 in the step of 1 and converts it into a string. As we need a number between 0.1 and 0.4 we have to add the 0. manually because randrange does only support integer values.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eseconds = float(seconds)\u003c/em\u003e converts the string to float, so we can use it with the time.sleep function.\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eThis is the whole code again, with the random time.sleep function:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eimport\u0026lt;/span\u0026gt; time\nimport\u0026lt;/span\u0026gt; sys\nfrom\u0026lt;/span\u0026gt; random import randrange\ntext = \u0026#34;This is the introduction text.\u0026#34;\n\nfor c in text:\n    sys.stdout.write(c)\n    sys.stdout.flush()\n    seconds = \u0026#34;0.\u0026#34; + str(randrange(1, 4, 1))\n    seconds = float(seconds)\n    time.sleep(seconds)\n\u003c/code\u003e\u003c/pre\u003e",
      "url": "https://black-pixel.net/2011/01/07/python-text-adventure-game-displaying-text-slowly/",
      "date_published": "7016-07-09T154:77:00+00:00",
      "date_modified": "7016-07-09T154:77:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "8453db7109a5deef4342ad12e015189ec57bd4e4",
      "title": "CentOS Server in Virtualbox",
      "summary": "",
      "content_text": "I just installed a CentOS Server in Virtualbox, so I can work with a Red Hat based distribution. Until now I only used Debian based systems and now I decided to to broaden my mind. 😉\nI had a little problem with the installation, as the loading stopped at NET: Registered protocol family 2.\nThe solution is to enable IO APIC for the guest in the settings.\nIf you want more information, here is the bug report I found: http://www.virtualbox.org/ticket/5423\nNow I’m going to play around a little bit to get used to it.\n",
      "content_html": "\u003cp\u003eI just installed a CentOS Server in Virtualbox, so I can work with a Red Hat based distribution. Until now I only used Debian based systems and now I decided to to broaden my mind. 😉\u003c/p\u003e\n\u003cp\u003eI had a little problem with the installation, as the loading stopped at \u003ccode\u003eNET: Registered protocol family 2\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe solution is to \u003ccode\u003eenable IO APIC\u003c/code\u003e for the guest in the settings.\u003c/p\u003e\n\u003cp\u003eIf you want more information, here is the bug report I found: \u003ca href=\"http://www.virtualbox.org/ticket/5423\"\u003ehttp://www.virtualbox.org/ticket/5423\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eNow I’m going to play around a little bit to get used to it.\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2011/01/03/centos-server-in-virtualbox/",
      "date_published": "3016-03-09T143:33:00+00:00",
      "date_modified": "3016-03-09T143:33:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "40b00b71c136397ece4ec25023f95458cc3f5350",
      "title": "Coca Cola Commercials",
      "summary": "",
      "content_text": "I gathered a few of the best Coca Cola commercials I know. One of them is this:\nCoca Cola \u0026#8211; Avatar\nI’ve also gathered some Christmas commercials (I love the Coca Cola trucks :D).\nHere is the latest:\nCoca Cola Trucks 2010\nYou can find them in the Videos section, or by clicking one of the following links:\nhttp://black-pixel.net/videos/coca-cola-commercials\nhttp://black-pixel.net/videos/coca-cola-christmas\nEnjoy 🙂\n",
      "content_html": "\u003cp\u003eI gathered a few of the best Coca Cola commercials I know. One of them is this:\u003c/p\u003e\n\u003cdiv style=\"text-align: center;\"\u003e\n  \u003ca href=\"http://www.youtube.com/watch?v=Kwke0LNardc\"\u003eCoca Cola \u0026#8211; Avatar\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eI’ve also gathered some Christmas commercials (I love the Coca Cola trucks :D).\u003c/p\u003e\n\u003cp\u003eHere is the latest:\u003c/p\u003e\n\u003cdiv style=\"text-align: center;\"\u003e\n  \u003ca href=\"http://www.youtube.com/watch?v=BztOLaIfCMI\u0026feature=related\"\u003eCoca Cola Trucks 2010\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\u003cp\u003eYou can find them in the Videos section, or by clicking one of the following links:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://black-pixel.net/videos/coca-cola-commercials\" title=\"Coca Cola general\"\u003ehttp://black-pixel.net/videos/coca-cola-commercials\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://black-pixel.net/videos/coca-cola-christmas\" title=\"Coca Cola Christmas\"\u003ehttp://black-pixel.net/videos/coca-cola-christmas\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e \u003c/p\u003e\n\u003cp\u003eEnjoy 🙂\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2010/12/02/coca-cola-commercials/",
      "date_published": "2126-02-09T1233:22:00+00:00",
      "date_modified": "2126-02-09T1233:22:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "a4630780d24d797d69b2f8886f757ff462a814c4",
      "title": "Best Google Chrome Extensions",
      "summary": "",
      "content_text": "AdBlock\nAdBlock for Chrome! Blocks ads all over the web.\nAdBlock+ – Element Hiding Helper\nAn adblock extension for Google Chrome. Similar to “Remove It Permanently” and “Adblock Plus: Element Hiding Helper” from FireFox.\n** Firebug Lite**\nFirebug Lite for Google Chrome, supported by the Firebug Working Group.\nSpeed Dial\nSpeed Dial for Chrome – replace Chrome new tab with your predefined visual bookmarks.\nWeb Developer\nAdds a toolbar button with various web developer tools. The official port of the Web Developer extension for Firefox.\nUltimate Chrome Flag\nThis extension displays country or region name, Geo, Google PageRank, Alexa Rank and WOT info for the websites you’re visiting.\nNotScripts\nA clever extension that provides a high degree of ‘NoScript’ like control of javascript, iframes, and plugins on Google Chrome.\n",
      "content_html": "\u003cp\u003e\u003cstrong\u003e\u003ca title=\"AdBlock\" href=\"https://chrome.google.com/extensions/detail/gighmmpiobklfepjocnamgkkbiglidom?hl=en\" target=\"_blank\"\u003eAdBlock\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eAdBlock for Chrome! Blocks ads all over the web.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca title=\"AdBlock+\" href=\"https://chrome.google.com/extensions/detail/chmimgmjdabgiilljdjfbonifbhiglao?hl=en\" target=\"_blank\"\u003eAdBlock+ – Element Hiding Helper\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eAn adblock extension for Google Chrome. Similar to “Remove It Permanently” and “Adblock Plus: Element Hiding Helper” from FireFox.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e** \u003ca title=\"Firebug Lite\" href=\"https://chrome.google.com/extensions/detail/bmagokdooijbeehmkpknfglimnifench?hl=en\" target=\"_blank\"\u003eFirebug Lite\u003c/a\u003e**\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eFirebug Lite for Google Chrome, supported by the Firebug Working Group.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca title=\"Speed Dial\" href=\"https://chrome.google.com/extensions/detail/dgpdioedihjhncjafcpgbbjdpbbkikmi?hl=en\" target=\"_blank\"\u003eSpeed Dial\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eSpeed Dial for Chrome – replace Chrome new tab with your predefined visual bookmarks.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca title=\"Web Developer\" href=\"https://chrome.google.com/extensions/detail/bfbameneiokkgbdmiekhjnmfkcnldhhm?hl=en\" target=\"_blank\"\u003eWeb Developer\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eAdds a toolbar button with various web developer tools. The official port of the Web Developer extension for Firefox.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca title=\"Ultimate Chrome Flag\" href=\"https://chrome.google.com/extensions/detail/dbpojpfdiliekbbiplijcphappgcgjfn?hl=en\" target=\"_blank\"\u003eUltimate Chrome Flag\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eThis extension displays country or region name, Geo, Google PageRank, Alexa Rank and WOT info for the websites you’re visiting.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca title=\"NotScripts\" href=\"https://chrome.google.com/extensions/detail/odjhifogjcknibkahlpidmdajjpkkcfn?hl=en\" target=\"_blank\"\u003eNotScripts\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eA clever extension that provides a high degree of ‘NoScript’ like control of javascript, iframes, and plugins on Google Chrome.\u003c/p\u003e\n\u003c/blockquote\u003e\n",
      "url": "https://black-pixel.net/2010/10/05/best-chrome-extensions/",
      "date_published": "5106-05-09T1021:55:00+00:00",
      "date_modified": "5106-05-09T1021:55:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "fc1b7c1299802dea2cf7fa2c04a381c4440ae897",
      "title": "Google Chrome – Prevent Spying with Kill-ID",
      "summary": "",
      "content_text": "Google Chrome is in my opinion the best browser available at the moment. It’s very fast and you can get an extension for everything you need. The only thing you could complain about are the “spying features”. Of course there are some other browsers based on chromium and without these features (SR Iron, ChromePlus), but they are always a little bit out-dated and lot’s of plugins require the current version of Chrome.\nI just found a solution for this. The program Kill-ID, it gives you full control of the features and lets you deactivate them.\nYou can get it from the official homepage: http://www.almisoft.de/?cont=kchrome\nIt’s in German, but that should be no problem.\nHere in short what the options do:\nChrome-ID\nSend auto-completed url to Google\nSend navigation errors (Not existing homepage/wrong url,…) to Google\nSend user statistics and error messages to Google\nResolve the IP of every link on the homepage\nGoogle Cookies\nGoogle Update program\nAktivieren == Activate || Deaktivieren == Deactivate\n",
      "content_html": "\u003cp\u003eGoogle Chrome is in my opinion the best browser available at the moment. It’s very fast and you can get an extension for everything you need. The only thing you could complain about are the “spying features”. Of course there are some other browsers based on chromium and without these features (SR Iron, ChromePlus), but they are always a little bit out-dated and lot’s of plugins require the current version of Chrome.\u003c/p\u003e\n\u003cp\u003eI just found a solution for this. The program Kill-ID, it gives you full control of the features and lets you deactivate them.\u003c/p\u003e\n\u003cp\u003eYou can get it from the official homepage: \u003ca href=\"http://www.almisoft.de/?cont=kchrome\"\u003ehttp://www.almisoft.de/?cont=kchrome\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIt’s in German, but that should be no problem.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://black-pixel.net/wp-content/uploads/2010/10/killid.jpg\"\u003e\u003cimg class=\"alignleft size-medium wp-image-198\" title=\"killid\" src=\"http://black-pixel.net/wp-content/uploads/2010/10/killid-300x279.jpg\" alt=\"\" width=\"300\" height=\"279\" /\u003e\u003c/a\u003eHere in short what the options do:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003eChrome-ID\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSend auto-completed url to Google\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSend navigation errors (Not existing homepage/wrong url,…) to Google\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSend user statistics and error messages to Google\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eResolve the IP of every link on the homepage\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eGoogle Cookies\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eGoogle Update program\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eAktivieren == Activate || Deaktivieren == Deactivate\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2010/10/03/google-chrome-prevent-spying-with-kill-id/",
      "date_published": "3106-03-09T1044:33:00+00:00",
      "date_modified": "3106-03-09T1044:33:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "faeb4c4dfe9c02767632af6ac0424db7aa4a78d8",
      "title": "Caesar Cipher in Python",
      "summary": "",
      "content_text": "I just wrote a simple encryption application using the caesar cipher. I wrote the same in C++ a while ago but this version is, in my opinion, much better coded.\nI decided to stop learning C++ and learn Python instead.\nHere is the file: ccipher1.zip\nUse at your own risk!\n",
      "content_html": "\u003cp\u003eI just wrote a simple encryption application using the caesar cipher. I wrote the same in C++ a while ago but this version is, in my opinion,  much better coded.\u003c/p\u003e\n\u003cp\u003eI decided to stop learning C++ and learn Python instead.\u003c/p\u003e\n\u003cp\u003eHere is the file: \u003ca href=\"http://black-pixel.net/wp-content/uploads/2010/09/ccipher1.zip\"\u003eccipher1.zip\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eUse at your own risk!\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2010/09/21/caesar-cipher-in-python/",
      "date_published": "21096-21-09T938:2121:00+00:00",
      "date_modified": "21096-21-09T938:2121:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "118698b7121b6bb0396cf0db84cf09712101f51a",
      "title": "My first C++ Application",
      "summary": "",
      "content_text": "I finally finished my first C++ console application. (Except hello world) I made it using Eclipse IDE.\nIt’s an encryption program which let’s you encrypt or decrypt text using the simple caesar cypher.\nYou can get the source code here: cryptCC.cpp.tar\nHere is the executable for Linux: cryptCC.tar\nUse at your own risk!\nAt the moment, I’m thinking about adding features like encrypting a whole .txt file, or something like that.\nMy next aim is to write an encryption program with a more complex method, such as AES or Twofish. I want to finish it not later than the end of September.\n",
      "content_html": "\u003cp\u003eI finally finished my first C++ console application. (Except hello world) I made it using Eclipse IDE.\u003c/p\u003e\n\u003cp\u003eIt’s an encryption program which let’s you encrypt or decrypt text using the simple caesar cypher.\u003c/p\u003e\n\u003cp\u003eYou can get the source code here: \u003ca href=\"http://black-pixel.net/wp-content/uploads/2010/08/cryptCC.cpp_.tar.gz\"\u003ecryptCC.cpp.tar\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eHere is the executable for Linux: \u003ca href=\"http://black-pixel.net/wp-content/uploads/2010/08/cryptCC.tar.gz\"\u003ecryptCC.tar\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eUse at your own risk!\u003c/p\u003e\n\u003cp\u003eAt the moment, I’m thinking about adding features like encrypting a whole .txt file, or something like that.\u003c/p\u003e\n\u003cp\u003eMy next aim is to write an encryption program with a more complex method, such as AES or Twofish. I want to finish it not later than the end of September.\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2010/08/20/my-first-c-application/",
      "date_published": "20086-20-09T822:2020:00+00:00",
      "date_modified": "20086-20-09T822:2020:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "88c0e263abd427c837803523317a98338be54616",
      "title": "ALC892/Realtek ID 892 on Mint Linux/Ubuntu",
      "summary": "",
      "content_text": "After installing Mint Linux on my computer, I noticed that the sound did not work. I tried a lot of things and then finally, thanks to the help of some guys from http://www.linuxmintusers.de, I found a solution.\nFirst I identified the codec of my sound card:\ndrag@hell ~ $ head -n 1 /proc/asound/card0/codec* Codec: Realtek ALC892\nThen i found a blog post regarding this problem. You can read it in German here: http://www.spacefish.biz/blog/2010/06/alc892-b-z-w-realtek-id-892-unter-ubuntu-10-04/\nThe problem is that the ALSA package of Ubuntu based distributions (maybe others too) does not include a module for the ALC892. But you can easily build it from the package http://files.spacefish.biz/LinuxPkg-5.15rc1.tar.bz2.\nYou just have to unpack it and execute the install script as root. After that you have to reboot your computer, then everything should work well.\n",
      "content_html": "\u003cp\u003eAfter installing Mint Linux on my computer, I noticed that the sound did not work. I tried a lot of things and then finally, thanks to the help of some guys from \u003ca href=\"http://www.linuxmintusers.de\"\u003ehttp://www.linuxmintusers.de\u003c/a\u003e, I found a solution.\u003c/p\u003e\n\u003cp\u003eFirst I identified the codec of my sound card:\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003edrag@hell ~ $ head -n 1 /proc/asound/card0/codec* Codec: Realtek ALC892\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eThen i found a blog post regarding this problem. You can read it in German here: \u003ca href=\"http://www.spacefish.biz/blog/2010/06/alc892-b-z-w-realtek-id-892-unter-ubuntu-10-04/\"\u003ehttp://www.spacefish.biz/blog/2010/06/alc892-b-z-w-realtek-id-892-unter-ubuntu-10-04/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe problem is that the ALSA package of Ubuntu based distributions (maybe others too) does not include a module for the ALC892. But you can easily build it from the package \u003ca href=\"http://files.spacefish.biz/LinuxPkg-5.15rc1.tar.bz2\"\u003ehttp://files.spacefish.biz/LinuxPkg-5.15rc1.tar.bz2\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eYou just have to unpack it and execute the install script as root. After that you have to reboot your computer, then everything should work well.\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2010/08/18/alc892realtek-id-892-on-mint-linuxubuntu/",
      "date_published": "18086-18-09T80:1818:00+00:00",
      "date_modified": "18086-18-09T80:1818:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "d2b6fbb33f96b8f67ab00a65566ecc320195a263",
      "title": "Linux vs ACPI APIC Support",
      "summary": "",
      "content_text": "Now that I have my new computer, I wanted to try Linux on it. Unfortunately, none of the distributions I tried worked, they just did not want to start so I could not install them. The only way was to use the safe mode.\nAfter a while, I found the reason for it. The ACPI APIC support. After disabling it in the BIOS, everything worked fine. An alternative way is to set the boot option noapic.\nI don’t know why none of the Linux Distributions can handle it, I hope this will be fixed soon.\n",
      "content_html": "\u003cp\u003eNow that I have my new computer, I wanted to try Linux on it. Unfortunately, none of the distributions I tried worked, they just did not want to start so I could not install them. The only way was to use the safe mode.\u003c/p\u003e\n\u003cp\u003eAfter a while, I found the reason for it. The ACPI APIC support. After disabling it in the BIOS, everything worked fine. An alternative way is to set the boot option noapic.\u003c/p\u003e\n\u003cp\u003eI don’t know why none of the Linux Distributions can handle it, I hope this will be fixed soon.\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2010/08/18/linux-vs-acpi-apic-support/",
      "date_published": "18086-18-09T86:1818:00+00:00",
      "date_modified": "18086-18-09T86:1818:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "db5059ccd97025d372d6a546ec544b4e05024f6d",
      "title": "New Hardware",
      "summary": "",
      "content_text": "I sold my old hardware and arranged a new computer. This time, I didn’t use a water cooling system, the new computer is cooled just via air cooling.\nThis is the new hardware:\nCPU: AMD Phenom II X6 1055T Mainboard: Biostar TA890FXE GPU: Sapphire HD5850 Toxic RAM: 2 x 4 GB Mushkin Blackline DDR3-1600 CL9 As I wanted my system to be silent, I decided to use a noise dampened case. Also a new CPU cooler was needed and of course a fan control.\nI bought the following components:\nNoise dampened Lian Li PC-P50 Midi-Tower Thermaltake Venomous X CPU cooler Lamptron FC2 Fan Controller 5,25″ – black The system works really good and the temperatures are fine, even after a few hours of crunching (BOINC). I haven’t been able to test a lot more yet, but I will do soon.\n",
      "content_html": "\u003cp\u003eI sold my old hardware and arranged a new computer. This time, I didn’t use a water cooling system, the new computer is cooled just via air cooling.\u003c/p\u003e\n\u003cp\u003eThis is the new hardware:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eCPU:\u003c/strong\u003e AMD Phenom II X6 1055T\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eMainboard:\u003c/strong\u003e Biostar TA890FXE\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGPU:\u003c/strong\u003e Sapphire HD5850 Toxic\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRAM:\u003c/strong\u003e 2 x 4 GB Mushkin Blackline DDR3-1600 CL9\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAs I wanted my system to be silent, I decided to use a noise dampened case. Also a new CPU cooler was needed and of course a fan control.\u003c/p\u003e\n\u003cp\u003eI bought the following components:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNoise dampened Lian Li PC-P50 Midi-Tower\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eThermaltake Venomous X CPU cooler\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eLamptron FC2 Fan Controller 5,25″ – black\u003c/strong\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe system works really good and the temperatures are fine, even after a few hours of crunching (BOINC). I haven’t been able to test a lot more yet, but I will do soon.\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2010/08/15/new-hardware/",
      "date_published": "15086-15-09T839:1515:00+00:00",
      "date_modified": "15086-15-09T839:1515:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "753e0bdf2c23a59f29a4a263223d2ccf7f6891e2",
      "title": "DLNA via MiniDLNA",
      "summary": "",
      "content_text": "I had some issues with Mediatomb:\nI had to tweek the configuration to make it work with my Samsung TV Adding Truecrypt devices was very laborious My media folders weren’t updated on new files Fast-forward and wind back did not work on most of the videos So I decided to search for an alternative.\nAfter a little search, I found MiniDLNA. The only thing I had to configure to make it work, was to set the path for the media files. Unlike Mediatomb, there was no extra configuration needed to make it work with my TV.\nI found the following init-script, it works well:\n#!/bin/sh # chkconfig: 345 99 10 # description: Startup/shutdown script for MiniDLNA daemon # # $Id: minidlna.init.d.script,v 1.2 2009/07/02 00:33:15 jmaggard Exp $ # MiniUPnP project # author: Thomas Bernard # website: http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ MINIDLNA=/usr/sbin/minidlna ARGS=’-f /etc/minidlna.conf’ test -f $MINIDLNA || exit 0 . /lib/lsb/init-functions case ”$1″ in start) log_daemon_msg ”Starting minidlna” ”minidlna” start-stop-daemon –start –quiet –pidfile /var/run/minidlna.pid –startas $MINIDLNA – $ARGS $LSBNAMES log_end_msg $? ;; stop) log_daemon_msg ”Stopping minidlna” ”minidlna” start-stop-daemon –stop –quiet –pidfile /var/run/minidlna.pid log_end_msg $? ;; restart|reload|force-reload) log_daemon_msg ”Restarting minidlna” ”minidlna” start-stop-daemon –stop –retry 5 –quiet –pidfile /var/run/minidlna.pid start-stop-daemon –start –quiet –pidfile /var/run/minidlna.pid –startas $MINIDLNA – $ARGS $LSBNAMES log_end_msg $? ;; *) log_action_msg ”Usage: /etc/init.d/minidlna {start|stop|restart|reload|force-reload}” exit 2 ;; esac exit 0 Source: http://www.hifi-forum.de/viewthread-151-11576.html\nIn summary:\nWorks with Samsung TV without any additional tweaks Adding devices is very easy, just enter a line in the configuration file The media folders are updated on the fly, as soon as there is a new file, you can watch it Fast-forward and wind back works on most of the videos The only thing I could complain about is the missing web UI, but I don’t really need it.\nThis software is really great, especially if you want to use it with a Samsung TV.\n",
      "content_html": "\u003cp\u003eI had some issues with Mediatomb:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eI had to tweek the configuration to make it work with my Samsung TV\u003c/li\u003e\n\u003cli\u003eAdding Truecrypt devices was very laborious\u003c/li\u003e\n\u003cli\u003eMy media folders weren’t updated on new files\u003c/li\u003e\n\u003cli\u003eFast-forward and wind back did not work on most of the videos\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSo I decided to search for an alternative.\u003c/p\u003e\n\u003cp\u003eAfter a little search, I found MiniDLNA. The only thing I had to configure to make it work, was to set the path for the media files. Unlike Mediatomb, there was no extra configuration needed to make it work with my TV.\u003c/p\u003e\n\u003cp\u003eI found the following init-script, it works well:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e    #!/bin/sh\n\n    # chkconfig: 345 99 10\n    # description: Startup/shutdown script for MiniDLNA daemon\n    #\n    # $Id: minidlna.init.d.script,v 1.2 2009/07/02 00:33:15 jmaggard Exp $\n    # MiniUPnP project\n    # author: Thomas Bernard\n    # website: http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/\n\n    MINIDLNA=/usr/sbin/minidlna\n    ARGS=’-f /etc/minidlna.conf’\n\n    test -f $MINIDLNA || exit 0\n\n    . /lib/lsb/init-functions\n\n    case ”$1″ in\n    start)  log_daemon_msg ”Starting minidlna” ”minidlna”\n    start-stop-daemon –start –quiet –pidfile /var/run/minidlna.pid –startas $MINIDLNA – $ARGS $LSBNAMES\n    log_end_msg $?\n    ;;\n    stop)   log_daemon_msg ”Stopping minidlna” ”minidlna”\n    start-stop-daemon –stop –quiet –pidfile /var/run/minidlna.pid\n    log_end_msg $?\n    ;;\n    restart|reload|force-reload)\n    log_daemon_msg ”Restarting minidlna” ”minidlna”\n    start-stop-daemon –stop –retry 5 –quiet –pidfile /var/run/minidlna.pid\n    start-stop-daemon –start –quiet –pidfile /var/run/minidlna.pid –startas $MINIDLNA – $ARGS $LSBNAMES\n    log_end_msg $?\n    ;;\n    *)      log_action_msg ”Usage: /etc/init.d/minidlna {start|stop|restart|reload|force-reload}”\n    exit 2\n    ;;\n    esac\n    exit 0\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eSource: \u003ca title=\"HiFi Forum Source\" href=\"http://www.hifi-forum.de/viewthread-151-11576.html\" target=\"_blank\"\u003e\u003ca href=\"http://www.hifi-forum.de/viewthread-151-11576.html\"\u003ehttp://www.hifi-forum.de/viewthread-151-11576.html\u003c/a\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIn summary:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWorks with Samsung TV without any additional tweaks\u003c/li\u003e\n\u003cli\u003eAdding devices is very easy, just enter a line in the configuration file\u003c/li\u003e\n\u003cli\u003eThe media folders are updated on the fly, as soon as there is a new file, you can watch it\u003c/li\u003e\n\u003cli\u003eFast-forward and wind back works on most of the videos\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe only thing I could complain about is the missing web UI, but I don’t really need it.\u003c/p\u003e\n\u003cp\u003eThis software is really great, especially if you want to use it with a Samsung TV.\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2010/07/29/dlna-via-minidlna/",
      "date_published": "29076-29-09T753:2929:00+00:00",
      "date_modified": "29076-29-09T753:2929:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "38fab9f36a0b5f3dd0d67a5790990049ad9bf677",
      "title": "WorldWide Telescope",
      "summary": "",
      "content_text": "I just found a very interesting site, it’s called WorldWide Telescope.\nQuote:\nWorldWide Telescope (WWT) enables your computer to function as a virtual telescope, bringing together imagery from the best ground and space-based telescopes in the world. Experience narrated guided tours from astronomers and educators featuring interesting places in the sky.\nA web-based version of WorldWide Telescope is also now available. This version enables seamless, guided explorations of the universe from within a web browser on PC and Intel Mac OS X by using the power of Microsoft Silverlight 3.0.\nThere are new detailed Mars Exploration and Enhanced Night Sky images. You can also watch the Mars in a 3D View, just like Google Street View. It’s really worth a look.\nHere is a sample Screenshot:\nHomepage: http://www.worldwidetelescope.org ",
      "content_html": "\u003cp\u003eI just found a very interesting site, it’s called WorldWide Telescope.\u003c/p\u003e\n\u003cp\u003eQuote:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eWorldWide Telescope (WWT) enables your computer to function as a virtual telescope, bringing together imagery from the best ground and space-based telescopes in the world. Experience narrated guided tours from astronomers and educators featuring interesting \u003ca href=\"http://www.worldwidetelescope.org/search/objects.aspx\"\u003eplaces\u003c/a\u003e in the sky.\u003c/p\u003e\n\u003cp\u003eA web-based version of WorldWide Telescope is also now available. This version enables seamless, guided explorations of the universe from within a web browser on PC and Intel Mac OS X by using the power of Microsoft Silverlight 3.0.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eThere are new detailed Mars Exploration and Enhanced Night Sky images. You can also watch the Mars in a 3D View, just like Google Street View. It’s really worth a look.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eHere is a sample Screenshot:\u003c/em\u003e\u003c/p\u003e\n\u003cdiv\u003e\n  \u003cem\u003e\u003ca href=\"http://black-pixel.net/wp-content/uploads/2010/07/mars.jpg\"\u003e\u003cimg class=\"aligncenter size-medium wp-image-76\" title=\"mars\" alt=\"WorldWide Telescope.\" src=\"http://black-pixel.net/wp-content/uploads/2010/07/mars-300x187.jpg\" width=\"180\" height=\"112\" /\u003e\u003c/a\u003e\u003c/em\u003e\n\u003c/div\u003e\n\u003cdiv\u003e\n  \u003cstrong\u003eHomepage:\u003c/strong\u003e \u003ca title=\"WorldWide Telescope\" href=\"http://www.worldwidetelescope.org\" target=\"_blank\"\u003ehttp://www.worldwidetelescope.org\u003c/a\u003e\n\u003c/div\u003e\n",
      "url": "https://black-pixel.net/2010/07/22/worldwide-telescope/",
      "date_published": "22076-22-09T757:2222:00+00:00",
      "date_modified": "22076-22-09T757:2222:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "70dc6f92c28541d9d6d21a7d9cebb0c192687a42",
      "title": "New Clone Wars Signatures",
      "summary": "",
      "content_text": "I recently submitted two of my new Clone Wars signatures on Deviantart.\nAshoka:\nYoda:\nI am already planning other Clone Wars signatures, but it will take some time.\n",
      "content_html": "\u003cp\u003eI recently submitted two of my new Clone Wars signatures on Deviantart.\u003c/p\u003e\n\u003cp\u003eAshoka:\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"http://black-pixel.net/wp-content/uploads/2010/07/asoka2a.jpg\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cp\u003eYoda:\u003c/p\u003e\n\u003cp\u003e\u003cimg\n  src=\"http://black-pixel.net/wp-content/uploads/2010/07/yoda1.png\"\n  alt=\"\"\n  loading=\"lazy\"\n  decoding=\"async\"\n  class=\"full-width\"\n/\u003e\n\n\u003c/p\u003e\n\u003cp\u003eI am already planning other Clone Wars signatures, but it will take some time.\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2010/07/22/new-clone-wars-signatures-submitted-on-deviantart/",
      "date_published": "22076-22-09T79:2222:00+00:00",
      "date_modified": "22076-22-09T79:2222:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "2b7b7272ca96fe39eef46ee6db88dbcc74ac9dfb",
      "title": "Project Fileserver: DLNA via Mediatomb",
      "summary": "",
      "content_text": "To watch my videos via DLNA on my Samsung TV, I needed an alternative program, because the Samsung software does not support Linux operating systems.\nI chose to install Mediatomb. To make it work with Samsung TVs, there were a few additional config tweaks necessary.\nThe config.xml files in /etc/mediatomb/ and in /root/.mediatomb/ have to be identically, else it Mediatomb won’t start.\nFirst of all you have to uncomment the \u0026lt;custom-http-headers\u0026gt; section.\nThe next step is to add the following lines to this section:\n\u0026lt;add header=\u0026#34;transferMode.dlna.org: Streaming\u0026#34;/\u0026gt; \u0026lt;add header=\u0026#34;contentFeatures.dlna.org: DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=017000 00000000000000000000000000\u0026#34;/\u0026gt; At last you have to change\n\u0026lt;protocolInfo extend=\u0026quot;no\u0026quot;/\u0026gt; to \u0026lt;protocolInfo extend=\u0026quot;yes\u0026quot;/\u0026gt;\nNow you can (re)start Mediatomb and it should be identified by the TV.\nTo add the video folders you normally have to go to the web ui http://serverip:49152/.\nIn my case, Mediatomb could not scan the Truecrypt devices. To solve this problem I used the following command:\nmediatomb --add /media/truecrypt3/\nThat’s it.\nBy the way, Mediatomb is much better than the Samsung PC Share Manager.\n",
      "content_html": "\u003cp\u003eTo watch my videos via DLNA on my Samsung TV, I needed an alternative program, because the Samsung software does not support Linux operating systems.\u003c/p\u003e\n\u003cp\u003eI chose to install Mediatomb. To make it work with Samsung TVs, there were a few additional config tweaks necessary.\u003c/p\u003e\n\u003cp\u003eThe config.xml files in /etc/mediatomb/ \u003cstrong\u003eand\u003c/strong\u003e in /root/.mediatomb/ have to be identically, else it Mediatomb won’t start.\u003c/p\u003e\n\u003cp\u003eFirst of all you have to uncomment the \u003ccode\u003e\u0026lt;custom-http-headers\u0026gt;\u003c/code\u003e section.\u003c/p\u003e\n\u003cp\u003eThe next step is to add the following lines to this section:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e\u0026lt;add header=\u0026#34;transferMode.dlna.org: Streaming\u0026#34;/\u0026gt;\n\u0026lt;add header=\u0026#34;contentFeatures.dlna.org:  DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=017000   00000000000000000000000000\u0026#34;/\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eAt last  you have to change\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e\u0026lt;protocolInfo extend=\u0026quot;no\u0026quot;/\u0026gt; to \u0026lt;protocolInfo extend=\u0026quot;yes\u0026quot;/\u0026gt;\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eNow you can (re)start Mediatomb and it should be identified by the TV.\u003c/p\u003e\n\u003cp\u003eTo add the video folders you normally have to go to the web ui \u003ccode\u003ehttp://serverip:49152/\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIn my case, Mediatomb could not scan the Truecrypt devices. To solve this problem I used the following command:\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003emediatomb --add /media/truecrypt3/\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eThat’s it.\u003c/p\u003e\n\u003cp\u003eBy the way, Mediatomb is \u003cstrong\u003emuch\u003c/strong\u003e better than the Samsung PC Share Manager.\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2010/07/19/project-fileserver-dlna-via-mediatomb/",
      "date_published": "19076-19-09T759:1919:00+00:00",
      "date_modified": "19076-19-09T759:1919:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "e9ee6b2fe0bf8097e4684f03e898291ddb3b698f",
      "title": "Project Fileserver: Samba + Truecrypt",
      "summary": "",
      "content_text": "After assembling the computer and connecting everything, I had to install the operating system. I chose to install Debian Linux via netinst image, then I installed Samba and Truecrypt.\nThe next step was configuring Samba and mounting the Truecrypt devices. I thought it would be done by that, but then I got 2 issues:\nThe Fileserver was not “visible” in Windows 7. Solution:\nYou have to add two things to the Windows registry:\nHKLMSystemCCSServicesLanmanWorkstationParameters DWORD DomainCompatibilityMode = 1 DWORD DNSNameResolutionRequired = 0 Even though the rights in Linux were correct, all my Truecrypt folders were read-only. Solution:\nIf you want Truecrypt to mount the devices in read/write mode, you have to install the ntfs-3g driver and force Truecrypt to mount using it, with the following command:\n--filesystem=ntfs-3g\nNow everything works fine.\n",
      "content_html": "\u003cp\u003eAfter assembling the computer and connecting everything, I had to install the operating system. I chose to install Debian Linux via netinst image, then I installed Samba and Truecrypt.\u003c/p\u003e\n\u003cp\u003eThe next step was configuring Samba and mounting the Truecrypt devices. I thought it would be done by that, but then I got 2 issues:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eThe Fileserver was not “visible” in Windows 7.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eSolution:\u003c/p\u003e\n\u003cp\u003eYou have to add two things to the Windows registry:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eHKLMSystemCCSServicesLanmanWorkstationParameters\nDWORD  DomainCompatibilityMode = 1\nDWORD  DNSNameResolutionRequired = 0\n\u003c/code\u003e\u003c/pre\u003e\u003col start=\"2\"\u003e\n\u003cli\u003eEven though the rights in Linux were correct, all my Truecrypt folders were read-only.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eSolution:\u003c/p\u003e\n\u003cp\u003eIf you want Truecrypt to mount the devices in read/write mode, you have to install the ntfs-3g driver and force Truecrypt to mount using it, with the following command:\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e--filesystem=ntfs-3g\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eNow everything works fine.\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2010/07/18/project-fileserver-samba-truecrypt/",
      "date_published": "18076-18-09T710:1818:00+00:00",
      "date_modified": "18076-18-09T710:1818:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    },
    
    {
      "id": "22267e60e545a58b92e4287cd531216c0b81c9e0",
      "title": "Project Fileserver: The Hardware",
      "summary": "",
      "content_text": "Today, I will present you the Hardware for my File Server:\nCPU: AMD Athlon64 X2 4850e Mainboard: MSI K9A2VM-FD RAM: 2 GB DDR2-800 Power supply: Thermaltake Toughpower 750 W System HDD: Seagate Barracuda 320GB File HDDs: 2x Samsung 500GB; 1x Samsung 1,5TB Pictures:\n",
      "content_html": "\u003cp\u003eToday, I will present you the Hardware for my File Server:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eCPU\u003c/strong\u003e: AMD Athlon64 X2 4850e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eMainboard\u003c/strong\u003e: MSI K9A2VM-FD\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRAM\u003c/strong\u003e: 2 GB DDR2-800\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePower supply\u003c/strong\u003e: Thermaltake Toughpower 750 W\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSystem HDD\u003c/strong\u003e: Seagate Barracuda 320GB\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFile HDDs\u003c/strong\u003e: 2x Samsung 500GB; 1x Samsung 1,5TB\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePictures:\u003c/p\u003e\n",
      "url": "https://black-pixel.net/2010/07/18/project-fileserver-the-hardware/",
      "date_published": "18076-18-09T751:1818:00+00:00",
      "date_modified": "18076-18-09T751:1818:00+00:00",
      "author": {
        "name": "Andy",
        "url": "https://black-pixel.net/"
      }
    }
    
  ]
}