Whether you like it or else, this site uses cookies. On this site will rise... something. Words fail me. Thoughts fail me. Give me a kiss and enliven my inspiration. Hold me. Kiss my asinine comments. This is my website, and I am Loloy D.

Random fun stuff:

Migrating To A Homegrown and Personal Platform

Due to the tediousness of maintaining a Drupal website, I have decided to migrate the platform of this website, which in itself has undergone so many iterations in Drupal alone, from Drupal to a homegrown and personal one. I will get to it eventually. This is probably going to involve a 10-year transition plan hahaha.

Here is what's on the agenda regarding this matter:

How To Tweak Synology Drupal Package

I searched and Googled quite a lot on this subject only to become frustrated with unrelated, unhelpful or mildly helpful results. And this is why I am tagging this post with the following distinct words and identifiers:
Tweak Synology Drupal Package with custom and/or modified ini settings, especially open_basedir

This is not necessarily an article on the optimization context of tweaking but on how to make the tweaks or custom PHP INI settings work and persist across Synology restarts and Drupal Package restarts. I imagine that people will be finding this article because they would have wanted to apply custom PHP INI settings on their Synology Drupal Package installations.

In my case, I had my Synology Drupal Package installed at http://192.168.10.138/drupal/, and once logged in with an administrator account, I can verify and confirm as to which PHP INI file my Drupal installation is using by looking at the following token-value set upon browsing http://192.168.10.138/drupal/admin/reports/status/php

Configuration File (php.ini) Path /usr/local/etc/php56
Loaded Configuration File /volume1/@appstore/WebStation/misc/php56.ini
Scan this dir for additional .ini files no value
Additional .ini files parsed /usr/local/etc/php56/conf.d/SYNO.SDS.Drupal.ini, /usr/local/etc/php56/conf.d/SYNO.SDS.MantisBT.ini, /usr/local/etc/php56/conf.d/webstation-extensions.ini, /run/php-fpm/conf.d/timezone.ini

Under PHP INI Core section, you may also find a token-value set something similar to this:

open_basedir /tmp:/var/services/tmp:/var/services/web no value

Your mileage may vary. From this result set, you would think that you could put/place your tweaks in /volume1/@appstore/WebStation/misc/php56.ini or in /usr/local/etc/php56/conf.d/SYNO.SDS.Drupal.ini but according to my personal experience, you would rather implement your changes in /volume1/@appstore/Drupal/synology_added/etc/SYNO.SDS.Drupal.ini. Whatever you do, you'd want to back up that modified PHP INI file some place else, so that you can redo these changes if they ever get overwritten by eventual Synology Package updates.

In my case, I edited the file /volume1/@appstore/Drupal/synology_added/etc/SYNO.SDS.Drupal.ini and put in the following change:

[PATH=/var/services/web/drupal]
open_basedir = /etc.defaults:/etc:/usr/syno/synoman:/tmp:/var/services/tmp:/var/services/web:/var/services/homes:/volume1/Audio

This particular change made my custom PHP scripts alongside (or within Drupal) work as expected. It is in my understanding that similar PHP profiles for various other Synology Packages can be implemented by going through the source templates made available at /volume1/@appstore/*.

The above procedure applies to DSM version 6.1.5-15254 with the as-of-writing latest Synology Drupal Package 7.56.

Extra tags and citations for search engine optimization: Tweak Synology Drupal Package with custom and/or modified ini settings, especially open_basedir, How To Tweak Synology Drupal Package

Extremely Noteworthy Light Apps for Linux Mint

  1. Totem (media player for audio and video files, capable of playlists)

    Version: 3.18.1-1ubuntu4
    Size: 586KB of disk space freed

  2. Kazam (screencast recorder, screenshot capture utility)

    Version: 1.4.5-2
    Size: 761KB to download, 1MB of disk space required

  3. Audacious

    Version: 3.6.2-2
    Size: 1MB of disk space freed (when removed)

  4. Parole (media player for local audio and video files, capable of playlists)

    Version: 0.8.1-1ubuntu4
    Size: 3MB of disk space required

How To Create A Control Panel All Tasks on Windows Desktop

This apparently applies to Windows Vista (32-bit only with quirky 64-bit version) through (64-bit version OK from then on) Windows 10.

Why I Am Migrating From The Windows Ecosystem To The Linux Mint/Ubuntu Ecosystem

I am already in the process of migrating much of my computing life - at work and at home - from Windows, mostly Windows 10, to Linux Mint. And here are my observed reasons why:

  • It's already 2017 and Windows has yet to allow sequential copy/move of files and folders
  • In Linux Mint, this is already a given and users are optionally given the option to enable simultaneously do copy/move operations over files and folders, albeit without a pause button. This functionality, or feature if you will, is too essential, too basic and too fundamental to simply be ignored. Even though Windows allows me to pause multiple copy/move processes, I am still unable to do unattended file-transfer services over long operations. I understand that there are third party tools out there that excel in this kind of activity, but file transfer over local storage drives is innately an operating system function.
  • Obscurity of Control Panel items that need quick configuration
  • Amazingly slow speed 64-bit performance to its Linux counterparts
  • Is the unnecessary bloat wreaking havoc on Windows 10's supposedly blazing 64-bit performance?

    How To Treat A Local Git Repository Into A Remote One Without Setting Up SSH Or HTTPS Servers

    In this article, I will attempt to give insights on how to treat another local repository as a remote one. This could be useful for members in collaborative development teams who would want to work on their own individual repositories and would want to synchronize among themselves in a LAN environment without an explicit Git server. The strategy described in this article does not make use of a bare repository. A bare repository is essentially a repository with only an index and there are no workable files stored that are directly reachable or accessible. In the simplest Git terms, a bare repository contains only the hidden .git subdirectory, with no working copies of the files described by the .git subdirectory. In my view, bare repositories are what's stored inside GitHub and Bitbucket, and inside instances of GitLab servers. Bare repositories also work great with local area network (LAN) sharing as different could people could push and pull at the bare repository without it having to eat more storage space since it is not storing the working tree. The strategy being proposed in this article however, skips the utility of bare repositories in LAN environments altogether to further maximize efficiency by making team members synchronize directly off one another. The use case that I am talking about can be illustrated in the following scenario.

    Let's have three developers named Julia, Jeremy and Josh working on a project with a model-view-controller (MVC) architecture. The project's name is Foobaria and so is their chosen name for each of their individual repositories. Let's say that Julia works on the model components of the project, Jeremy works on the view components of the project and Josh works on the controller components of the project. Let's further assume that they share a Linux-based server and they are working on the project with their files hosted in that server, such that Julia has her Git repository stored in /home/julia/foobaria, Jeremy has his Git repository stored in /home/jeremy/foobaria while Josh has his Git repository stored in /home/josh/foobaria. Let's further assume that they have granted complete write access to each other's foobaria repository. To enable synchronizing repositories with her teammates, Julia sets up Jeremy's and Josh's repositories as her remote repositories such that she makes the following commands from within her repository:

    /home/julia/foobaria $ git remote add foobaria-jeremy /home/jeremy/foobaria
    /home/julia/foobaria $ git remote add foobaria-josh /home/josh/foobaria

    Jeremy does the same inside his foobaria repository and makes Julia's and Josh's repositories as his remote repositories that he can push and pull with. Josh does the same thing, making remote repositories out of Julia's and Jeremy's.

    The 3 developers work on their own components and sync off each other locally with simple "git push" and "git pull". There's a caveat though, as Julia can't push her changes to Jeremy and Josh unless they switch to another dummy branch first. So, inside Jeremy's repository, he creates a temporary branch and enters that.

    /home/jeremy/foobaria $ git branch tempbranch
    /home/jeremy/foobaria $ git checkout tempbranch

    Josh does the same thing.

    /home/josh/foobaria $ git branch tempbranch
    /home/josh/foobaria $ git checkout tempbranch

    Only then can Julia proceed with pushing through:

    /home/julia/foobaria $ git push jeremy master
    /home/julia/foobaria $ git push josh master

    Oh wait, Jeremy and Josh can't see the changes that Julia made unless they move back in to their master branches.

    /home/jeremy/foobaria $ git checkout master
    /home/josh/foobaria $ git checkout master

    Admittedly, the entire process looks tediously intervening to other developers as they have to always checkout to an alternate branch whenever one of the developers has to push changes. However, on another viewpoint, if all the developers are simply keen on always updating themselves by doing "git status" to check for changes, along with "git fetch" and then checking with "git diff" on the master branch, from other repositories and subsequently doing "git pull" instead, then the interventions would not be that much necessary anymore. And if one of the devs are finding themselves ahead by some commits as possibly that the other devs have just pulled the latest changes from him/her ("Your branch is ahead of 'origin/master' by n commits."), he/she can simply do a "git fetch" to enable the synchronization of their repository index references. While the process continuous to become tedious, the strategy remains to be available and feasible.

    Steps:

    1. Make a repository out of a directory, say /home/user1/repo1.

    $ mkdir /home/user1/repo1
    $ cd /home/user1/repo1
    $ git init
    $ touch newfile.txt
    $ git add newfile.txt
    $ git commit -m "Add newfile.txt to project"

    2. Clone that repository to another directory, say /home/user1/repo2. Note that /repo2's remote origin has been automatically set to /home/user1/repo1

    $ git clone /home/user1/repo1 /home/user1/repo2
    $ cd /home/user1/repo2
    $ git remote -v

    3. Now, let us do some changes from inside /repo2 and make a commit.

    $ touch newfile2.txt
    $ git add newfile2.txt
    $ git commit -m "Add newfile2.txt to project"

    4. From within /repo2, "git push" will fail because it thinks that origin/master branch is currently mounted or checked out. To resolve this, simply make a temporary branch from within /repo1 and mount that branch by checking it out. Return to /repo2 and you should now be able to "git push" successfully.

    $ git push --set-upstream origin master

    Git will respond with:

    "To /home/user1/repo1
    ! [remote rejected] master -> master (branch is currently checked out)
    error: failed to push some refs to '/home/user1/repo1'"

    $ cd /home/user1/repo1
    $ git branch tempbranch
    $ git checkout tempbranch
    $ cd /home/user1/repo2
    $ git push

    5. The work is not yet completely done. Since /repo1 is still branched out to tempbranch, you will not see the changes in it yet. Go back to /repo1's master branch to see the updates.

    $ cd /home/user1/repo1
    $ git checkout master

    In this example, we have seen how to make a "localized remote" repository which can be useful in some collaborative team environments wherein team members would want to synchronize with each other through their shared network folders without having to setup ssh or https servers on their work machines. They can still maintain synchronizing to a "more central" Git server such as GitHub, GitLab or BitBucket by simply adding a remote reference to those repositories.

    Where In Windows 10 Is...

    The evolution of Windows beyond Windows XP made me actually "concretize" my relationship with Linux flavors Ubuntu and Mint. I still have to use Windows at work though and the current incarnation of Windows as I write this is version 10. Windows 10 has brought me a lot of headaches in terms of usability and customization for my specific use-case, such that, old features don't work anymore or were no longer considered in the next iterative development. This becomes a pain when I still work with a lot of legacy applications and solutions that suit my needs and legacy automation designs.

    Global Peace Index Report 2015

    Global Peace Index Report - 2015 from visionofhumanity.org.

    Electric Cars, Elon Musk, Negative Externalities and Incentives Best Explained and Why Hydrogen Is Not Feasible

    Hydrogen is not exactly feasible due to the following article.

    Time To Come Clean About Hydrogen Fuel Cell Vehicles

    http://cleantechnica.com/2014/06/04/hydrogen-fuel-cell-vehicles-about-no...

    Files and Folders Library

    Audio Library implementation

    Tags:

    Pages

    Subscribe to LD TechnoLogics RSS