Sunday, May 21, 2017

Apache එකම directory එකට domains 2ක් configure කරමු


අද අපි බලමු කොහොමද එකම web directory එකට domains දෙකක් configure කරන්නේ කියලා. ඒ කියන්නේ මේකයි. fb.com ගියත් facebook.com ගියත් දෙකෙන්ම එකම website එකට direct වෙන්නේ.
අපි සාරාංශයක් වශයෙන් කරන්න යන්නේ මේ ටික

  1. HOST කිරීම සදහා 192.168.1.100 කියන ip එකට server එකක් Virtual Machine එකක up කරන එක 
  2. Apache web directory එකක් හදල එකේ files ටිකක් හොස්ට් කරගන්නවා 
  3. umesh.com සහ prabushitha.com කියන domains දෙකට අපි හදපු apache directory එක configure කිරීම 
  4. වෙනම virtual machine එකකින් umesh.com සහ prabushitha.com කියන domains දෙක access කිරීම 
හරි අපි වැඩේ පටන් ගමු.


Step 01 - Virtual Box එක configure කිරීම 

මුලින්ම අපි අපේ website එක හොස්ට් කරන්න server vm එකක් configure කරගන්න ඕනි. Virtual Box open කරලා file->preferences තෝරන්න.  
එන window එකෙන් Network යටතේ තියෙන Host-only Network Tab එක select කරන්න. Add new host-only network button එක click කරලා අලුතෙන් එකක් create කරගන්න.
ඊට පස්සේ Edit selected host-only network button එක click කරලා මේ විදියට ip එක සහ netmask එක set කරන්න.

හරි දැන් OK click කරලා Virtual box main screen එකට යන්න. දැන් host එක සදහා new VM එකක් setup කරගන්න
(මම Ubuntu server OS එක තමා මේ සදහා බාවිතා කලේ මොකද apache ඇතුළු server එකකට අවශ්‍ය ගොඩක් tools default එන නිසා. new VM එකක් setup කරගන්න දන්නේ නැත්තම් google කරලා හොයා ගන්න පුළුවන් ගොඩක් tutorials තියෙනවා 

දැන් හදාගත්ත VM එක right click කරලා settings තෝරන්න.  තෝරලා Network යටතේ adapter 1 tab එකට යන්න. ගිහින් Attached to Host Only Network select කරලා Name එක ලෙස අපි කලින් හදාගත්ත host only network එක තෝරන්න.  Advanced කොටස expand කරලා promiscuous mode එක Allow All ලෙස වෙනස් කරන්න. 
 දැන් හරි. Okay කරලා ඔයා හදාගත්ත VM එක start කරලා install කරලා නැතිනම් install කරගන්න.
එතනින් VM එක configure කරන එක ඉවරයි.   
දැන් ubuntu server vm එකට log වෙලා 192.168.1.100 කියන ip එක up කරගමු. 

ඒක කරන්න අපේ තියෙන network interface එක මොකද්ද කියලා දැනගෙන ඉන්න ඕනි.
ifconfig කියලා terminal එකේ ගහලා බලන්න.  eth හරි enp වලින්  හරි පටන් ගන්න එකක් තියෙනවද බලන්න. මගේ තියෙන්නේ enp0s3 කියන interface එක.
දැන් අපි 192.168.1.100 enp0s3ට සෙට් කරගමු. මුලින්ම , 
sudo nano /etc/network/interfaces
ගිහින් මේ විදියට primary network interface එක වෙනස් කරගන්න
(enp0s3 කියන එක ඔයාලගේ interface එකේ නම දාල වෙනස් කරගන්න)
(මේක කලාම VM එකෙන් internet යන්න බැරි වෙනවා. ඒක හින්දා පස්සේ වෙලාවක ඉන්ටෙර්න්ට් යන්න ඔනි වෙනවා නම් VM එකෙන්, /etc/network/interfaces file එක backup කරලා තියා ගන්න)

දැන් save (CTRL+O) කරලා  exit (CTRL+X) වෙන්න.
කරපු changes effective වෙන්න මේ විදියට interface එක down කරලා ආයේ up කරන්න! 
sudo ifdown enp0s3 
sudo ifup enp0s3
දැන් අපේ ip එක up වෙලා තියෙන්නේ. 



Step 02 - Apache Web Directory එකට files host කිරීම 

/var/www folder එකේ අලුතෙන් directory එකක් හදලා එකට ඔයාගේ website එකට ඕනි files ටික දාන්න.  මේ විදියට තාම මගේ නම් files ටික structure කරලා තියෙන්නේ.   

web folder එක ඇතුලේ තාම website එකේ display වෙන files දාල තියෙන්නේ.
ඔයාලට ඔනී විදියට files ටික හදාගන්න.  


Step 03 - Apache Host දෙකක් Configure කිරීම 

අලුතින් apache config file එකක් හදලා ape web directory එකට අදාළ විස්තර දැන් අපි දාගන්න ඕනි. එකට මන් mysite.conf කියල file එකක් /etc/apache2/sites-available/ directory එකේ හදාගන්නවා මේ විදියට.
sudo nano /etc/apache2/sites-available/mysite.conf 

දැන් මේ විදියට ඒ file එකේ අපේ site එක configurations define කරන්න පුළුවන්

ඔය විදියට file එක edit කරලා save කරන්න.
මේක බැලුවම අපිට පේනවා virtual host දෙකක් අපි configure කරලා තියෙනවා umesh.com සහ prabushitha.com කියන domains දෙකට හැබැයි ServerName කියන parameter එක ඇරෙන්න ඉතුරු ඔක්කොම දෙකේම සමානයි. 
ඔය විදියට අපිට පුළුවන් files directories දෙකක duplicate කරන්නේ නැතුව එකම site එකට point කරන්න. 

දැන් මේ හදපු configuration file එක enable කරගන්න අපිට කරන්න තියෙන්නේ


sudo a2ensite mysite.conf
(එතකොට වෙන්නේ sites-available ඉදන් sites-enabled වලට symlink එකක් හැදෙන එක)

දැන් apache restart කරන්න 
sudo service apache2 restart

Step 04 - වෙනම VM එකකින් Test කිරීම  

දැන් ubuntu server vm එක run වෙද්දීම Virtual Box එකෙන් තවත් VM එකක් start කරන්න. ( ex. ubuntu desktop os එක දාපු VM එකක් start කරන්න) මම start කරන vm එකේ network configurations හදල තියෙන්නේ මේ විදියට.


දැන් එකට log වෙලා අපි 192.168.1.100 ip එකට domain set කරන්න ඕනි.
මේ සදහා  hosts file එක open කරගන්න ඕනි 
sudo nano /etc/hosts 
දැන් ඒ file එකේ අගට මේ විදියට entries දෙකක් add කරන්න 

හරි දැන් save කරලා exit වෙන්න.
දැන් browser එක open කරලා umesh.com සහ prabushitha.com url access කරලා බලන්න. ඔයා ubuntu server එකේ හදපු website එකට direct වෙයි. index.html එකක් හදලා තියෙනවා නම් එක display වෙයි. නැත්තම් files ටික display වෙයි. 


ඔය විදියටම ඔයාට sites ගොඩක් virtual hosts configure කරලා පාවිච්චි කරන්න පුළුවන්, ගොඩක් වෙලාවට development කරද්දී  අපිට මේ විදියට configure කරලා කරන එක ලේසි මොකද deploy කරන site එකක් විදියටම අපිට configurations හදාගන්න පුළුවන් නිසා.


කරද්දී මොකක් හරි අවුලක් අවොත් comment එකක් දාන්න!    


Monday, April 24, 2017

Apache User Authentication කරන්නේ කොහොමද?


අපිට apache server එකක හදන directories වලට user based access දෙන්න නම් Apache වලම එන default authentication  පාවිච්චි කරන්න පුළුවන්. අපි බලමු කොහොමද ඒක කරන්නේ කියලා.

අපි කරන්න යන්නේ මෙන්න මේ දේවල් ටික.

  1. Apache document root එකේ තියන directory එකක් (eg. 14000522 directory) username එකක් සහ password එකක් පාවිච්චි කරලා protect කිරීම 
  2. Username password වැරදි හෝ cancel කරන විට custom authentication fail page එකක් display කිරීම 
  3. Specific ip range එකකට විතරක් server එක access කිරීම
  4. VM එකක් (client)  මාර්ගයෙන් අපේ host server එක access කිරීම
මම arch linux පාවිච්චි කරලා තමා මේක කරන්නේ ubuntu වල කරන විදියත් ඒ එක්කම දාන්නම්.(Ubuntu or similar OS වල පාවිච්චි වෙන files සහ directories වලට පොඩ්ඩක් වෙනස්)

***DISCLAIMER: Files වෙනස් කරන්න කලින් ඒවල copy එකක් වෙනම අරන් backup කරලා තිය ගන්න  

Step 00
apache install කිරීම 
Arch Based OS
sudo pacman -S apache
Ubuntu Based OS
sudo apt-get install apache2 apache2-utils

Step 01  
මුලින්ම අපි අපේ server එකේ file structure එක හදාගෙන ඉන්න ඕනි :-D
අපි apache default document root eke,
> 14000522 directory එක හදන්න ඕනි 
> 401.html page එක හදන්න ඕනි 
> 14000522 directory එකේ index.html file එකකුත් හදමු 

arch linux වල /srv/http directory එක තමා apache files දාන්න ඕනි directory එක.
(ubuntu වල  /var/www/html කියල වෙනස් වෙන්න ඕනි පහත commands )

sudo mkdir -p /srv/http/14000522
sudo nano /srv/http/401.html 
<html>
<body>Authentication Fails</body>
</html> 

save කරලා (CTRL+O and then ENTER) 
exit වෙන්න (CTRL+X )
sudo nano /srv/http/14000522/index.html 

<html>
<body>Authentication Success</body>
</html> 

save කරලා (CTRL+O and then ENTER) exit වෙන්න (CTRL+X )

හරි file structure එක සහ files ටික හදල ඉවරයි දැන් ඉතුරු වෙලා තියෙන්නේ username password සෙට් කරලා apache configure කරන්න

Step 02
දැන් බලමු username password සෙට් කරන්නේ කොහොමද කියලා.
sudo htpasswd -c /etc/apache2/.htpasswd prabushitha 
 ඊට පස්සේ password එකක් type කරන්න ඉල්ලයි. password එකක් එතෙන්ට දීල ආයේ confirm කරන්න.
හරි එකේ එච්චරයි!

Step 03
දැන් අපි apache configurations හදන්නේ කොහොමද බලමු!
arch linux පාවිච්චි කරනවා නම්, මුලින්ම main apache conf file එකේ Include conf/extra/httpd-vhosts.conf කියන line එක comment කරලා නම් uncomment කරන්න ඕනි (remove #). අන්තිමේට කොහොම හරි මේ විදියට තියෙන්න ඕනි  

Include conf/extra/httpd-vhosts.conf

(ubuntu වල ඕක කරන්න ඕනි නෑ මන් හිතන්නේ)
  
ඊට පස්සේ virtual host file එක super user mode එකෙන් (sudo) open කරගන්න ඕනි (කැමති text editor එකින් ඔපෙන් කරගන්න). 
arch linux වල නම් /etc/httpd/conf/extra/httpd-vhosts.conf කියන file එක
ubuntu වල නම් /etc/apache2/sites-enabled/000-default.conf කියන file එක
file එකේ කොපියක් backup කරලා තියා ගන්න!!!

උදා . sudo nano /etc/httpd/conf/extra/httpd-vhosts.conf

දැන් මේ විදියට virtual හොස්ට් info ඇතුලත් කරගන්න ඔනි (අවශ්‍යම දේවල් ටික විතරයි මේකේ දාල තියෙන්නේ).  
(රතු පාටින් දාල තියෙන්නේ arch වලට අදාළව ubuntu වල වෙනස් වෙන්න ඕනි තැන්) 

<VirtualHost *:80>
    DocumentRoot "/srv/http"
   <Location />
Order deny,allow
Deny from all
Allow from 192.168.0.0/16
    </Location>
    <Directory "/srv/http/14000522">
AuthType Basic
AuthName "Apache Web Root"
AuthBasicProvider file
AuthUserFile /etc/httpd/conf/passwords
Require valid-user
    </Directory>
    ErrorDocument 401 /401.html
</VirtualHost>

උබුන්ටු වල නම් 
/srv/http කියන එක /var/www/html ලෙසට ද 
/etc/httpd/conf/passwords කියන එක /etc/apache2/.htpasswd ලෙසට ද වෙනස් විය යුතුයි.

Step 04
හරි වැඩේ ඉවරයි! දැන් තියෙන්නේ ටෙස්ට් කරලා බලන්න කරපු ටික වැඩද කියලා :-D 

මුලින්ම apache server එක restart කරන්න.

arch වල මේ command එක ගහල restart කරන්න පුළුවන්  
sudo systemctl restart httpd
ubuntu වල,
sudo service apache2 restart 

දැන් localhost කියල ගැහුවට අපිට server එක access කරන්න බෑ මොකද අපි virtual host configuration වල Allow from 192.168.0.0/16 කියල දුන්න නිසා. request එක එන්න ඕනි 192.168 කියන ip address එකකින්.

දැන් කරන්න තියෙන්නේ මෙච්චරයි,
wifi එකකට connect වෙන්න (data awashya නෑ, phone එකෙන් උනත් නිකන් wifi hotspot එකක් දාල එකෙන් connect වෙන්න පුළුවන්)

terminal එකේ  මේ command එක type කරලා wifi එකට අදාලව අපිට හම්බුනා ip v4 address එක ගන්න
ifconfig | grep inet 

මෙන්න මේ විදියට address එකක් හම්බෙයි 

හදිස්සියෙවත් ip එක 192.168 වලින් පටන් ගන්න එකක් නෙමෙයි නම් බය වෙන්න දෙයක් නෑ, ඔයාට ආපු ip එක virtual host configuration file එකට දාල (Allow from 192.168.0.0/16 කියන කෑල්ල වෙනස් කරන්න ඔයාට අපු ip එක දාල) save කරලා ආයේ apache restart කරන්න.  


Step 05
හරි දැන් අන්තිම එක. virtual box වලින් මොකක් හරි OS එකක් run කරන්න. ඊට පස්සේ එකේ web browser එක open කරලා අපිට ifconfig වලින් අපූ ip එක ගහලා හදපු folder එක access කරන්න බලන්න.  
(මගේ උදාහරණෙට අනුව නම් 192.168.1.5/14000522) 

දැන් username එකයි password එකයි ඉල්ලයි. මුලින්ම ඕක cancel කරලා බලන්න 401.html page එක එතකොට display වෙයි!














හරියට username password දුන්නම 14000522 folder එකේ හදපු index.html page එක display වෙයි.


ඉවරයි!


කරද්දී මොකක් හරි අවුලක් අවොත් comment එකක් දාන්න!  
මේ විදියට අපිට අපේ web application එකේ directories password protected කරගන්න පුළුවන්!

Saturday, April 8, 2017

Angular 2 parent-child අතර data pass කරන්නේ කොහොමද


Angular 2 පාවිච්චි කරලා ලේසියෙන් parent component එකෙන් child component එකට data pass කරගන්නේ කොහොමද කියලා බලමු!

Q. 
මොකද්ද child සහ parent components කියන්නේ?
A. 
X කියලා component එකක්  Y කියන component එක පාවිච්චි කරනවා නම් ඒ අවස්ථාවට අනුව,
  • X = parent component 
  • Y = child component 
උදාහරණයක් විදියට අපි සලකමු Movie කියලා component එකක් තියෙනවා කියලා. ඒ Movie component එකේ Rating කියන component එක use කරලා තියෙනවා. 
Movie = parent component
Rating = child  component 

parent.component.ts



import { Component } from '@angular/core';


@Component({
  selector: 'app-root',
  template: '<child-app inputdata="data"> </child-app> '
})

export class ParentComponent {
  public data:string = "Hello!!!";
}


child.component.ts



import { Component, Input } from '@angular/core';

@Component({
  selector: 'child-app',
  template: '<p>{{fromParent}}</p>'
})

export class ChildComponent {
   @Input('inputdata') fromParent:string;
}


ඔය අවස්ථාවේදී output එක විදියට data කියලා print වෙන්නේ. 


parent ගේ data කියන variable එක  ගන්න නම් කරන්න තියෙන්නේ, 

parent.component.ts එකේ <child-app inputdata="data"> කියන එක <child-app [inputdata]="data"> ලෙස වෙනස් කිරීම!

parent.component.ts



import { Component } from '@angular/core';


 @Component({
  selector: 'app-root',
  template: '<child-app [inputdata]="data"> </child-app> '
})

export class ParentComponent {
  public data:string = "Hello!!!";
}



දැන් output එක විදියට  print වෙන්නේ Hello!!!

මේ data pass කරන ඉතාම සරල විදියක්.  Angular 2 data binding වලදීත් මේ concept එකම තමා use වෙන්නේ!

Saturday, February 18, 2017

Arch linux : AUR packages install කරමු


සාමාන්‍යෙන් අපි pacman කියන package manager එක හරහා තමයි arch packages install කරගන්නේ. හැබැයි හැම package එකක්ම pacman වලින් කරගන්න බෑ මොකද by default එකෙන් Arch linux community (AUR - arch linux user reository) එකේ තියෙන packages install කරගන්න බෑ. හැබැයි AUR වල අපිට ඕනි ගොඩක් packages  තියෙනවා.
yaourt කියලා package manager එකක් තියෙනවා. එකෙන් අපිට AUR වල තියෙන package දාගන්න පුළුවන්. හැබැයි සමහර packages වලට මේ වගේ errors එනවා. 


අපිට yaourt පාවිච්චි කරන්නේ නැතුව AUR package එකක්  install කරගන්න පුළුවන් විදියක් තියෙනවා. ඒ තමයි makepkg කියන command එක. අපි දැන් බලමු කොහොමද මේක කරගන්නේ කියල.

makepkg command එක වැඩ කරන්න නම් base-devel කියන package එක ඕනි.
pacman -S base-devel 
ඔය විදියට එක දාගන්න. හරි දැන් අපේ වැඩේට බහිමු!

Step 01 - package එක හොයාගෙන PKGBUID file එක download කිරීම 

https://aur.archlinux.org/packages/ වලට ගිහින් අපිට ඕනි package එක හොයාගෙන download snapshot click කරලා package එක install කරන්න ඕනි file එක download කරගන්න. tar.gz file එකක් තමා download වෙන්නේ. මේක ඇතුලේ PKGBUILD file එක තියෙනවා.



Step 02 - tar.gz file එක extract කිරීම 

download උන directory එකට terminal එකෙන් යන්න. ගිහින් tar.gz එක මේ විදියට extract කරගන්න. උදාහරනෙකට මම ගන්නේ heidisql කියන package එක.
(heidisql වෙනුවට ඔයාල download කරපු package එකේ නම දෙන්න)
tar -xf heidisql.tar.gz 
Step 03 - makepkg මගින් package එක build කරලා install කිරීම 

දැන් extract උන folder එකට යන්න මේ විදියට
cd heidisql 
ඊට පස්සේ යට තියෙන command එක ගහල install කරගන්න පුළුවන්.
makepkg -sic 
ඊට පස්සේ confirm screen එකෙන් Y දුන්නම download වෙලා install වෙන එක පටන් ගනී.
  
ඔච්චරයි කරන්න තියෙන්නේ!

ප.ලි.
makepkg -sic කියල ගහල තියන එකේ -sic කියන එකේ තේරුම තමා 
s => අවශ්‍ය dependencies install කරන්න  
i => BUILD වෙලා ඉවර උනාම package එක install කරන්න 
c =>අනවශ්‍ය file clean කරන්න 
තව ඕනි commands https://www.archlinux.org/pacman/makepkg.8.html බලාගන්න පුළුවන් 

Wednesday, February 8, 2017

Arch linux : bash commands කීපයක් සහිත තනි command එකක් හදමු


Linux පාවිච්චි කරද්දී අපිට වෙන එපාම කරපු වැඩක් තමා පොඩි වැඩක් කරගන්න terminal එකේ commands ගොඩක් ගහන්න වෙන එක.

උදාහරණයක් විදියට අපිට apache, php, mysql  servers ඔක්කොම start කරන්න නම් හැම එකම වෙන වෙනම start කරන්න ඕනි (lamp). හැබැයි ඒ ඔක්කොම start කරන commands එක command එකක් විදියට execute කරන්න පුළුවන් නම් එක මරු නේ!

ඉතින් linux අපිට් ඕනි විදියට හදාගන්න පුළුවන් නිසා වැඩේ ගොඩ දාගන්න ලේසියෙන්ම පුළුවන්.
කරන්න තියෙන්නේ මෙච්චරයි,

Step 01 - ඔයා ලියන අලුත් commands දාන්න directory එකක් හදාගන්න
උදාහරණයක්  ලියන commands ටික save කරන්න මම /home/myscripts  කියන තැන තෝරාගන්නවා.

Step 02 - ඒ directory එක bash එකට link කරන්න ඕනි 
bash එකට link කරන්න නම් /etc/bash.bashrc කියන file එකට මේ lines ටික අන්තිමට දාන්න. (අත්තට්ටම මේ කරන්නේ අපේ path කියන variable එකට අපේ commands තියෙන තැන දාන එක)

# if /home/myscripts exists and is a directory & if is not already in your $PATH
# then export /home/myscripts to your $PATH.
if [[ -d /home/myscripts && -z $(echo $PATH | grep -o /home/myscripts) ]]
then
   export PATH="${PATH}:/home/myscripts" 
fi

හරි දැන් අපි අපේ commands ලියමු. එකට මන් lamp උදාහරනේ ගන්නම්.

Step 03 - commands සහිත file එකක් ලිවීම
අපි මුලින් කරන්න ඕනි අදාළ කාර්ය කරන commands සහිත file එකක් හදන එක.
මේ file එකේ නම අපේ අලුත් command එකට දාන නම වෙන්න ඕනි.
මම lamp server එක start කරන්න command එකක් ලියන නිසා මම මේ file එක lampstart කියලා නම් කරනවා.
terminal command එක (using gedit as text editor)
gedit  /home/myscripts/lampstart

දැන් අපි මේ file එකට අපි කරන දේට අදාළ commands ටික මේ විදියට දාන්න ඕනි. (මම කරන්නේ lamp start කරන එක. ඔයාලට ඔයාලට ඕනි commands ටික දාගන්න පුළුවන්)
#!/bin/bash    
#start apache  
echo "starting lamp server..."
sudo systemctl start httpd
#start mysql  
sudo systemctl start mysqld
echo "lamp server started!"

(echo ටික දාල තියෙන්නේ එතකොට run වෙන්න පටන් ගත්ත දැන් හරි start උනා වගේ එව්වා ටෙර්මිනල් එකේ print කරන්න පුළුවන් නේ. # කියන්නේ comments)

 දැන් ඉවරයි. ඕක save කරලා terminal එකේ lampstart කියල ගහලා බලන්න. සුකිරි වගේ වැඩ කරන්න ඕනි.

ඔය විදියට දැන් පුළුවන් commands ගොඩක් execute වෙන තනි command හදල run කරන්න. commands  ටික තියෙන file එකක් විතරයි හදන්න තියෙන්නේ අලුතෙන් හදපු directory එකේ!

Sunday, February 5, 2017

Arch linux හා i3 window manager : වැදගත් configurations කීපයක්


i3 එකේ ඔක්කොම වැඩ වෙන්නේ i3 config file එකෙන්. අපි i3 අපිට ඕනි විදියට හදාගන්න නම් config file එක edit කරන්න ඕනි.
config file එක arch linux වල
~/.config/i3
කියන directory එකේ තියෙනවා.
සැ.යු. යට තියෙන commands config එකට දැම්මට පස්සේ එක වැඩ කරන්න නම් i3 reload කරන්න.
(reload කරන හැටි අන්තිමට තියෙනවා)   


1. wallpaper එකක් set කර ගන්න 
පහත line එක config file එකට add කරන්න.
exec --no-startup-id feh --bg-fill ~/Pictures/pic.png 
 ~/Pictures/pic.png කියන්නේ පින්තුරේ තියෙන තැන.

2. screen එක lock කරන්න   
පහත line එක config file එකට add කරන්න.
bindsym $mod+l exec i3lock
 දැන් අපිට් පුළුවන් $mod key එක එකක් L key එක ඔබලා screen එක lock කරන්න.
(හදිස්සියෙවත් ඕක වැඩ නෑ කියන්නේ i3lock එක install කරලා නෑ වගේ සීන් එකක්. පොඩ්ඩක් බලන්න i3lock install කරලා ද කියලා)

3. screen print කරන්න  
මම use කරන්නේ scrot කියන tool එක screen ප්‍රින්ට් කරන්න. කැමති ටූල් එකක් තෝරාගෙන keys bind කරගන්න පුලුවන් අවුලක් නෑ.

scrot install කරන්න terminal එකේ මේ command එක ගහන්න.
pacman -S scrot
අපි image editor එකකුත් ඒ එක්කම install කරගමු ගහන screenshot එක open කරගන්න.
gimp image editor එක දාගන්න
pacman -S gimp
කියල ටෙර්මිනල් එකේ ගහන්න

හරි දැන් print key එක scrot printscreen එකට bind කරන්න පහත lines config file එකට add කරන්න.
# print screen - whole screen 
bindsym Print exec scrot -e 'mv $f /tmp/ && gimp /tmp/$f' 
# print screen - select window or rectangle 
bindsym $mod+Print exec scrot -s -e 'mv $f /tmp/ && gimp /tmp/$f'
දැන් හරි.


තව මොනවද කරන්නේ? 

ඔය මං කිව්වේ වැදගත් වෙන configurations ටිකක් විතරයි i3 පටන් ගන්න කෙනෙකුට.
ඔය කට්ටියට දැන් ඔය configuration commands බැලුවොත් මේ වගේ දේවල් ටිකක් නිරීක්ෂණය කරන්න පුළුවන්.

  • #            - comment   
  • bindsym - key combination එකක් linux command එකකට bind කරගන්න පුළුවන්.
                        මේ වගේ syntax එකක් තම එකට තියෙන්නේ.
                     bindsym key_combination linux_command
  • නිකන්ම් configuration file එකේ linux command එකක් දැම්මොත් එක i3 start වෙද්දීම run වෙනවා.
    (wallpaper එකක් set කර ගන්න උදාහරනේ වගේ)






i3 reload කරන්න පුළුවන් යට තියෙන විදි දෙකෙන්ම
key combination 
$mod + shift + r 
terminal එකේ 
i3-msg restart


Arch linux හා i3 window manager : audio functions configure කිරීම්



Arch linux හා i3 window manager වල audio keys වලින් වැඩ කරන්න නම් අපි ඒ keys අදාල functionalities වලට assign කරන්න ඕනි. අපි බලමු කොහොමද එක කරන්නේ කියලා.

STEP 01 - installing audio functions package

මුලින්ම linux වලට audio functionalities පහසුවෙන් කරගන්න alsa-utils package එක දාගෙන ඉන්න ඕනි.
pacman -S alsa-utils
STEP 02 - assigning keys

හරි, දැන් අපි volume keys වලට sound අඩු වැඩි කරන සහ mute කරන commands අදාල keys වලට bind කරගන්න ඕනි. එකට i3 config file එක open කරගන්න.
(config file එක ~/.config/i3 directory එකේ තියෙන්නේ )
ඒ file එකට පහත lines ටික එකතු කරගන්න.

i3 config file
#volume control
bindsym XF86AudioRaiseVolume exec amixer -q set Master 1%+ unmute
bindsym XF86AudioLowerVolume exec amixer -q set Master 1%- unmute
bindsym XF86AudioMute exec amixer -q set Master toggle

දැන් අපි i3 reload කරලා බැලුවොත් volume down, volume up සහ mute keys වලින් අදාල functions කරගන්න පුළුවන් කියල බලාගන්න පුළුවන්.
හැබැයි graphically කොහෙවත් එක අපිට පෙන්නන්නේ නෑ. එක නිසා අපි දැන් volume එක status bar එකේ පෙන්නන්න හදාගමු.

STEP 03 - show volume graphically

status bar එකේ volume එක පෙන්නන්න හදාගන්න නම් i3status.conf file එක edit කරන්න ඕනි. එකට යට තියෙන code එක අන්තිමට එකතු කරන්න විතරයි තියෙන්නේ.
i3status.conf file 
#volume show
volume master {
format = "♪ %volume"
device = "default"
mixer = "Master"
mixer_idx = 0
}
order += "volume master"

දැන් i3 reload කරන්න.



i3 reload කරන්න පුළුවන් යට තියෙන විදි දෙකෙන්ම
key combination 
$mod + shift + r 
terminal එකේ 
i3-msg restart

Saturday, February 4, 2017

Arch linux හා i3 window manager : Install කිරීම


i3 කියන්නේ window manager එකක්. Linux වල desktop environment එකක් නැතිව අපිට window manager එකක් පාවිච්චි කරන්න පුළුවන්. ඔය උඩ තියෙන්න i3 වල screenshot එකක්. මේක use කරන එක ගොඩක් developersලට පහසුයි වගේම ඉකමනින් වැඩක් කර ගන්න පුළුවන්. මොකද keys එකතු කරලා (key bindings) අපිට ඕනි විදියට application open/close වෙන එව්වා වගේම terminal commands run කරවන්න පුළුවන්.
අනික් එක තමා window tiling.

i3 වල feature (resource : https://i3wm.org)

දැන් බලමු කොහොමද i3 arch linux වලට දාගන්නේ කියලා.

මුලින්ම terminal එක open කරලා,
pacman -S i3 
ඊට පස්සේ all දීල components 3ම install කරගන්න.

ටෙර්මිනල් එකේ 
startx 
කියල type කරන්න. එතකොට i3 window manager එකට යනවා.

මුල්ම සැරේට යද්දී අහනවා arch configure කරන්න. ඒ configure screen එකේ $mod යතුර තෝරන්න ඕනි.
ගොඩක් කට්ටිය එක window key එක තමා $mod එකට දාන්නේ.
  • terminal එක open කරන්න නම්
    $mod + enter
    key combination එක පාවිච්චි කරන්න පුළුවන්.

  • i3 manager එකෙන් exit වෙන්න නම්
    $mod + shift  + E
    key combination එක පාවිච්චි කරන්න පුළුවන්.

(configure screen එක අවේ නැති උනොත්, default $mod key එක තමා alt key එක)

i3 එකේ ඔක්කොම වැඩ වෙන්නේ i3 config file එකෙන්. අපි i3 අපිට ඕනි විදියට හදාගන්න නම් config file එක edit කරන්න ඕනි.
config file එක arch linux වල
$HOME/.config/i3
කියන directory එකේ තියෙනවා ($HOME කියන්නේ userගේ home directory එක)









i3 එකේ status bar එක වෙනස් කරන්න නම්

/etc/i3status.conf 

කියන file එක edit කරන්න ඕනි


පස්සේ පොස්ට් එකකින් බලමු කොහොමද i3 අපිට ඕනි විදියට configure කරන්නේ කියලා!

Arch Linux වලට composer දාගමු




php පාවිච්චි කරන යට ඉතා වැදගත් tool එකක් තමා composer කියන්නේ. මේක dependency management tool එකක්. ඒ කියන්නේ අපි කරන project එකට අවශ්‍ය external libraries/packages install කරන්න, update කරන්න වගේ දේවල් කරන්න පුළුවන් composer පාවිච්චි කලොත් ලේසියෙන්.
මේක arch package එකක් විධියට තියෙනවා. එක හින්ද arch වල නම් ලේසියෙන්ම pacman package manager එක හරහා දාගන්න පුළුවන් ගේමක් නැතුව. terminal එක open කරලා මේ විධියට (සාමාන්‍ය package එකක් install කරන විදියට) enter කරන්න 

pacman -S composer

දැන් අපි composer bin directory  එක path variable එකට set කරන්න ඕනි. 

එකට කරන්න තියෙන්නේ /etc/bash.bashrc එකේ මේක දාන එක.
(arch වල composer directory එක එන්නේ ගොඩක් වෙලාවට අදල user ගේ home directory ඒකේ .config කියන directory එකේ)  
# if ~/.config/composer/vendor/bin exists and is a directory & if is not already in your $PATH
# then export ~/.config/composer/vendor/bin to your $PATH.
if [[ -d $HOME/.config/composer/vendor/bin && -z $(echo $PATH | grep -o $HOME/.config/composer/vendor/bin) ]]
then
    export PATH="${PATH}:$HOME/.config/composer/vendor/bin"
fi 

දැන් වැඩේ හරි. කරන්න තියෙන්න ඔය ටික තමා.




ප.ළි :
අපි composer bin directory එක path variable එකට set කරන්න හේතුව තමා එතකොට අපිට පුළුවන් අපි install කරන libraries/packages terminal commands විදියට බාවිත කරන්න.
උදා: laravel framework එක composer වලින් දාගත්තට පස්සේ laravel කියන command එක terminal එකේ ගහල පාවිච්චි කරන්න පුළුවන් වෙන්න ඕනි. එහෙම කරන්න නම් bin directory එක path variable එකට set වෙලා තියෙන්න oni.  


linux වලට composer දාන ආකාරය composer site එකෙත් දල තියෙනවා 
https://getcomposer.org/download/