Showing posts with label cli. Show all posts
Showing posts with label cli. Show all posts

Monday, September 6, 2021

4 tools in javascript

picture name: wichy asking for more coffee


01 NVM: 

NVM is the acronym for Node Version Manager, which is a command-line tool that lets you install and use many Node.js versions and NPM on your computer. It is a dev tool, so I don't recommend using it in production environments. NVM works fine in Linux and Mac. You can also check the documentation here: https://github.com/nvm-sh/nvm.


When is it useful to use NVM? 

*   In teams where we have different operating systems.

*   When we have to test new things, for example, the testing version for Node.js.

*  When we have many projects with different versions, and you cannot update Node.js and you have to maintain two or more node js versions in many projects, so is a way to tidy up the dev environment, switching between Node.js versions.


NVM: Installation

Mac:

You can use homebrew. If you don’t know how to install it, you could check here it (https://brew.sh/) and that’s all.

 

brew install nvm
source $(brew --prefix nvm)/nvm.sh
echo 'source $(brew --prefix nvm)/nvm.sh' >> ~/.profile


Linux:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash


The line before will have an output such as this:

 

=> Downloading nvm from git to '/home/jennifer/.nvm'
=> Cloning into '/home/jennifer/.nvm'...
remote: Enumerating objects: 278, done.
remote: Counting objects: 100% (278/278), done.
remote: Compressing objects: 100% (249/249), done.
remote: Total 278 (delta 33), reused 88 (delta 16), pack-reused 0
Receiving objects: 100% (278/278), 142.36 KiB | 0 bytes/s, done.
Resolving deltas: 100% (33/33), done.
Checking connectivity... done.
=> Compressing and cleaning up git repository
=> Appending nvm source string to /home/jennifer/.bashrc
=> Appending bash_completion source string to /home/jennifer/.bashrc
=> Close and reopen your terminal to start using nvm or run the following to use it now:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion


Make sure that these lines below are in your ~/.bashrc or ~/.zshrc:

 

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm



 

My personal desktop runs over Arch Linux,  so I used an aur package, for example https://aur.archlinux.org/packages/nvm/. I downloaded the snapshot file and uncompressed the tar.gz file.  Also, you could use the same installation explained before or these lines for installing nvm:

$ cd nvm
$ makepkg  -s  #this will generate an Arch Linux package (nvm.tar.xz).
$ ls -l nvm.tar.xz

$ pacman -U nvm.tar.xz


NVM Usage:

nvm list : List all versions installed on your machine

➜  ~ nvm list
->       system
iojs -> N/A (default)
node -> stable (-> N/A) (default)
unstable -> N/A (default)


NVM install: Install a local version on your machine from the remote list. The remote list could be filtered by another command like: nvm ls-remote <versionLike>  for example “nvm ls-remote v11” lists all versions that have v11 as prefix.


➜  ~  nvm install v10.15.3
Downloading and installing node v10.15.3...
Downloading https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.xz...
######################################################################## 100,0%
Computing checksum with sha256sum
Checksums matched!
Now using node v10.15.3 (npm v6.4.1)
Creating default alias: default -> v10.15.3


nvm use: set in the current terminal the environments variables so all command executed related to Node.js will use the version defined by NVM.

➜  ~ nvm use v10.15.3
Now using node v10.15.3 (npm v6.4.1)


nvm which: show the path to the Node.js bin file.

➜  ~ nvm which v10.15.3
/home/jennifer/.nvm/versions/node/v10.15.3/bin/node




02 Docker container with node js/ angular-cli:



Hub docker contains a thousand images that you could use in your daily tasks at work, in a simple search you could see (https://hub.docker.com/search?q=angular-cli&type=image)

About 1 - 25 of 492 results for angular-cli. 

Here is my recommendation to use it in a local environment for a development process: https://hub.docker.com/r/trion/ng-cli/


docker pull trion/ng-cli

When node_modules directory already was generated.

docker run -u $(id -u) --rm -p 4200:4200 -v "$PWD":/app trion/ng-cli  ng serve --host 0.0.0.0 --disableHostCheck


In this way, you need node_modules directory inside the directory defined in $PWD variable.

When a node_modules directory is not generated. And that’s all.

first

docker run -u $(id -u) --rm -p 4200:4200 -v "$PWD":/app trion/ng-cli npm install


later:

docker run -u $(id -u) --rm -p 4200:4200 -v "$PWD":/app trion/ng-cli  ng serve --host 0.0.0.0 --disableHostCheck




03 Dotenv using a .env file with and avoid versioning



Dotenv is useful to keep tidy up the code, avoid magic number, avoid push any secret key to the repo and it is a relief for many environments. With this, you can run your app anywhere by modifying the environment variables without changing your code and without rebuilding it!

npm install dotenv


Later, create the .env file in the root of your app and add your variables and values to it. Don’t forget to add this file to .gitignore to avoid committing it.


.env
PORT=55555



Server.js
const dotenv = require('dotenv');
dotenv.config();
console.log(`Your port is ${process.env.PORT}`);


4 Cloud solutions:

For each project, you could use one of these, sometimes I have to share code with a friend or when I have a doubt, and I need to ask something with a context code, it’s the best way to show when you are remote, for example for an angular-cli project there is no doubt that the best is  https://stackblitz.com/ has a better integration with angular and let you download the project in a zip file, also is recommended by @angular documentation. 

Also for Js, HTML, and CSS, and tiny projects you could use https://jsfiddle.net/, https://codepen.io/.  In the last one, there are many web artists and you could make you own portfolio to share it.  And From Red Hat, we have https://codenvy.com/ has a free subscription with limitations, but it’s ok for prototyping things.

 

 

Thursday, August 19, 2021

Reinstalling Archlinux on a old Laptop


 

Yesterday I accidentally run rm -rf /  because everybody makes mistakes. 

each step is written here:

1 - first memtest86 

2 - swap memories, test one memory slot each time, and test a new one memory module from another laptop that it's working. So in this part I figure out that my laptop was broken, so Nico borrow me an old laptop :'-( .

3 - UEFI, installing Archlinux on UEFI require use the pen-drive on UEFI mode. after boot on UEFI mode, I did a back up to the files on the /home directory and install the Operative System again. 

4 - first I already have the partition so, this part is not new. the only thing with this new laptop is that I have to do a new UEFI partition to the grub, my old laptop does not have UEFI mode, so the grub was installed in the BIOS MBR sort of.
 

After I did the new UEFI Archlinux partition with "cfdisk /dev/sda" change Type to UEFI system, and verify if the notebook has a the boot mode UEFI listing this directory:

 

ls -l /sys/firmware/efi/efivars

 

If the output show you a list of files! Bingo you are currently booting in UEFI mode.

In UEFI we need the partition table in this Disklabel "GPT", so we check with

fdisk -l if the partition table is type BIOS or GPT. the output should be like:

"Disklabel type: gpt"


Also used parted -l to fix an error that was show up when we execute "fdisk -l": 

"something that GPT partition was different from MBR partition"

"GPT PMBR size mismatch" something like that.

 To do that: I installed parted 

$pacman -S parted && parted -l /dev/sda

 

 

5 -  After that I formatted the partitions to do a fresh installation.

mkswap /dev/sda6

swapon /dev/sda6 

mkfs.ext4 /dev/sda5 => /root

mkfs.vfat -F32 /dev/sda7 => /boot/grub/efi

6 - preparing for the chroot

from general to specify 

mount /dev/sda5 /mnt

mkdir -p /mnt/boot/efi

mount /dev/sda7 /mnt/boot/efi

7 - using pacstrap to install base system

pacstrap /mnt base base-devel grub os-prober ntfs-3g networkmanager efibootmgr gvfs gvfs-afc dhcpcd vim linux-headers linux-firmware linux  netctl wpa_supplicant xf86-input-synaptics pavucontrol htop lshw meld transmission-gtk docker docker-compose gvfs-mtp xdg-user-dirs lightdm  xorg xorg-xinit gnome-keyring xorg-server xorg-server-common xf86-video-vesa xorg-font-util  ttf-dejavu opencl-nvidia dkms git terminator rsync go-tools cinnamon-desktop cinnamon gnome-terminal lightdm-gtk-greeter  pulseaudio  pulseaudio-alsa firefox vlc  gimp xfburn gedit gnome-system-monitor faenza-icon-theme smartmontools

 

(xorg is an alias and in this case I installed ALL :O, just in case).

 

At first I did the install of nvidia and nvidia-utils  nvidia-304, driver BUT  doesn't have the correct version of the drivers that I need. so I have to uninstall later to install the correct one.

 

Something to remember if you install nvidia-lts you need to install kernel-lts and header-lts, and re run mkinitcpio -p.

 

nvidia-xconfig to set Xorg configuration.  See Also nvidia-settings and nvidia-smi.

 

nouveau-dri  I tried to install the open source driver but was a failed, after many modprobe and rmprobe  with nouveau and nvidia and debuging with modinfo -p video, lshw -c video, so I  install the legacy driver from an AUR package with the tool "yay" is a client writen on golang, and is easy to use and install from Cli.

    Cinnamon package to see sections:

    $ pacman -Ql cinnamon | awk -F '[_.]' '/cs_.+\.py/ {print $2}'

 

8 - generar fstab

genfstab -pU /mnt >> /mnt/etc/fstab

 

9 - the chroot to make some configurations and installing the grub in the new uefi partition.

arch-chroot /mnt


10 - without  GUI, setting configuration files, service, and customizations:

    hostname

        echo "CoolName" >> /etc/hostname

   Timezone:
       ln -sf /usr/share/zoneinfo/America/Buenos_Aires  /etc/localtime
   Setting Locale:
       uncomment a line on this file "/etc/locale.gen" and run the command cli  $ locale-gen
   Setting keymap:
         localectl list-keymaps | grep -i us  (list all available keymaps)
         echo "KEYMAP=us" > /etc/vconsole.conf  (do the setting)
   Making grub config file:
         echo "GRUB_DISABLE_OS_PROBER=false" >> /etc/default/grub (edit /etc/default/grub)
         grub-install --efi-directory=/boot/efi --bootloader-id="Archlinux" --target=x86_64-efi --removable
         os-prober (testing if we have another OS like windows) 
         grub-mkconfig -o /boot/grub/grub.cfg
    Adding a new user to use with sudo:
        useradd -m -g users -G audio,lp,optical,video,wheel,games,power,scanner -s /bin/bash j3nnn1
        passwd j3nnn1 
    Installing nvidia driver via Yay: 
        - git clone https://aur.archlinux.org/yay.git
        - cd yay
        - makepkg -si (don't forget to add this user to sudoers file)
        - if you run without -i use pacman -U package.gz (optional)
        - yay -S nvidia-390xx-dkms 
        - yay -S google-chrome 
        - yay -S numix-gtk-theme 
    Setting  Time:
        - timedatectl set-ntp true. (only if you did previously the setting of timezone on the file: /etc/localtime)
        - timedatectl timesync-status
        - timedatectl status
    Related to Kernel:
        - mkinitcpio -P 
    Enable display manager and network manager and GUI:
        - systemctl enable lightdm
        - systemctl enable NetworkManager
        - systemctl isolate  graphical.target ( testing graphical UI, on next reboot will be dismiss this change) 
        - systemctl set-default multi-user.target (CLI)
        - systemctl set-default graphical.target (GUI) 
        - systemctl get-default 

11 - enable GUI.

     - systemctl set-default graphical.target (GUI) 

12 - disable GUI (troubleshooting).

     - systemctl set-default multi-user.target (CLI)

13 - testing with startx (xorg-xinit and xorg-apps should be installed)

       - edit file "~/.xinitrc".  

            vim ~/.xinitrc 

            OR

            echo "exec cinnamon-session" > ~/.xinitrc

       - from CLI execute: startx


And That's all. 

By now..

Sorry about  the Spanglish and grammatical errors.

14 - tools nvidia

is loaded nvidia driver?

dkms install --no-depmod nvidia/390.144 -k 5.15.3-arch1-1 && depmod 5.15.3-arch1-1

Logs

cat /var/log/Xorg.0.log

Blacklist noveau

caracas# cat /usr/lib/modprobe.d/nvidia-390xx-dkms.conf
blacklist nouveau 

When The Xorg Server API is not compatible with the driver:

caracas# cat /etc/X11/xorg.conf.d/20-server_flags.conf

Section "ServerFlags"
    Option "IgnoreABI" "1"
EndSection

cat /usr/lib/modprobe.d/nvidia-lts.conf

update nvidia driver with new API

 ..@TODO

References: 

https://wiki.archlinux.org/title/NVIDIA#Installation


gdm locked user.

vim /etc/security/faillock.conf

deny = 9999