10/11/2024

สาย Lan ที่ใช้จริงและ Spare สามารถสลับเส้นกันได้

 สาย Lan ที่ใช้จริงและ Spare สามารถสลับเส้นกันได้
- แลนไม่ติด / เครื่องไม่ได้ ip
ใช้เครื่อง testสายเช็คที่ต้นทางและปลายทางถ้าเช็คแล้วไฟวิ่งครบ 8 เส้นก็ถือว่าสายแลนเราปกติ

แต่ถ้าไฟวิ่งไม่ครบ 8 เส้นก็ไม่ต้องตกใจ (อาจจะเป็นเพราะหนูกัดสายหรืออะไรสักอย่าง)
- สายแลนเรามีทั้งหมด 8 เส้น แต่สายที่เราใช้งานจริงมีแค่ 4 เส้นครับ (ส่วนอีก 4 เส้น คือ Spare)

วิธีดูเครื่อง test สาย
1 คือ ขาว-ส้ม ( ใช้ )
2 คือ ส้ม ( ใช้ )
3 คือ ขาว-เขียว ( ใช้ )
4 คือ น้ำเงิน (Spare)
5 คือ ขาว-น้ำเงิน (Spare)
6 คือ เขียว ( ใช้ )
7 คือ ขาว-น้ำตาล (Spare)
8 คือ น้ำตาล (Spare)

Ex.เช่น เช็คแล้วไฟสายเส้นที่ 1 กับ 6 ไม่ติด ทำไงดี..???
ง่ายๆๆเลยครับ เราก็เอาสาย Spare ที่เหลือมาสลับใช้งานแทน (ต้องเปลี่ยนตามคู่สีน่ะครับเพราะง่ายต่อการดูและแก้ไขในครั้งต่อไป)
เข้าหัวใหม่ให้ทั้ง 2 ด้านเหมือนกันครับ
1 คือ ขาว-น้ำตาล ( ใช้ )
2 คือ น้ำตาล ( ใช้ )
3 คือ ขาว-น้ำเงิน ( ใช้ )
4 คือ เขียว (Spare)
5 คือ ขาว-เขียว (Spare)
6 คือ น้ำเงิน ( ใช้ )
7 คือ ขาว-ส้ม (Spare)
8 คือ ส้ม (Spare)

หลักการเข้าหัว /สลับสาย แบบนี้ก็สามารถใช้ได้กับ RJ45 ตัวเมียและ Part Panel ก็สามารถใช้งานได้เช่นกัน

10/03/2024

Function Checkbox checked by scrip.

 Function Checkbox checked by scrip.

  1. <!DOCTYPE html>
  2. <html>
  3.     <title>Test</title>
  4.     <meta charset="UTF-8">
  5.  
  6.     <body>
  7.         <div align='center'>
  8.             <form id="myForm" align='center'>
  9.                 <label><input type="checkbox" name="OD" id="OD" value="1" onchange="CheckedBox(this.value)"> ฝพอ.</label><br>
  10.                 <label><input type="checkbox" name="IF" id="IF" value="2" onchange="CheckedBox(this.value)"> ฝบง.</label><br>
  11.                 <label><input type="checkbox" name="DS" id="DS" value="3" onchange="CheckedBox(this.value)"> ฝอบ.</label><br>
  12.                 <br>
  13.                 <input type="button" name="Submit" id='Submit' value=" Reset " onClick="CheckedBox()";>
  14.             </form>
  15.             <br>
  16.             <form id="myForm2" align='center'>
  17.                 <label><input type="checkbox" name="checkbox3" id="checkbox3" value=""> หน.งทส.</label><br>
  18.                 <label><input type="checkbox" name="checkbox4" id="checkbox4" value=""> หน.งพม.</label><br>
  19.                 <label><input type="checkbox" name="checkbox5" id="checkbox5" value=""> หน.งสป.</label><br>
  20.                 <label><input type="checkbox" name="checkbox6" id="checkbox6" value=""> หน.งบง.</label><br>
  21.                 <label><input type="checkbox" name="checkbox7" id="checkbox7" value=""> หน.งอบ 1.</label><br>
  22.                 <label><input type="checkbox" name="checkbox8" id="checkbox8" value=""> หน.งอบ 2.</label><br>
  23.             </form>
  24.         </div> 
  25.         <script></script>
  26.     </body>
  27. </html>

  1.  
  2.         function CheckedBox(value) {
  3.             if(value == 1){
  4.                 document.getElementById("checkbox3").checked = true;
  5.                 document.getElementById("checkbox4").checked = true;
  6.                 document.getElementById("checkbox5").checked = true;
  7.                 document.getElementById("checkbox6").checked = false;
  8.                 document.getElementById("checkbox7").checked = false;
  9.                 document.getElementById("checkbox8").checked = false;
  10.             } else if (value == 2){
  11.                 document.getElementById("checkbox3").checked = false;
  12.                 document.getElementById("checkbox4").checked = false;
  13.                 document.getElementById("checkbox5").checked = false;
  14.                 document.getElementById("checkbox6").checked = true;   
  15.                 document.getElementById("checkbox7").checked = false;
  16.                 document.getElementById("checkbox8").checked = false;   
  17.             } else if (value == 3){
  18.                 document.getElementById("checkbox3").checked = false;
  19.                 document.getElementById("checkbox4").checked = false;
  20.                 document.getElementById("checkbox5").checked = false;
  21.                 document.getElementById("checkbox6").checked = false;   
  22.                 document.getElementById("checkbox7").checked = true;
  23.                 document.getElementById("checkbox8").checked = true;   
  24.             } else {
  25.                 document.getElementById("OD").checked = false;
  26.                 document.getElementById("IF").checked = false;
  27.                 document.getElementById("DS").checked = false;
  28.                 document.getElementById("checkbox3").checked = false;
  29.                 document.getElementById("checkbox4").checked = false;
  30.                 document.getElementById("checkbox5").checked = false;
  31.                 document.getElementById("checkbox6").checked = false;
  32.                 document.getElementById("checkbox7").checked = false;
  33.                 document.getElementById("checkbox8").checked = false;
  34.             }   
  35.         } 

Code function validate Input number in textbox only.

 

Code function validate Input number in textbox only.
html
  1. <input type="text" id="test_id" name="test" value="" oninput="validateInput(event)">

js function

  1. function validateInput(event) {
  2.    var input = event.target.value;
  3.    if (!/^[0123456789 ]*$/.test(input)) {
  4.       event.target.value = input.replace(/[^0123456789 ]/g, '');
  5.    }
  6. }

PHP : Code get all supervisor to Checkbox.

 PHP : Code get all supervisor to Checkbox.

$SQL="SELECT EmpEmail, PositionCalled FROM sci._employees ";
$SQL.=" LEFT JOIN sci._positions ON _positions.PositionCode=_employees.PositionCode";
$SQL.=" LEFT JOIN sci._sections ON _sections.SectionId=_positions.SectionId";
$SQL.=" LEFT JOIN sci._departs ON _departs.DepartId=_sections.DepartId";
$SQL.=" WHERE _employees.isEnabled = 'Y'";
$SQL.=" AND sci._employees.LevelPriority ='6'";
$SQL.=" ORDER BY _departs.DepartId,EmpId";
$NumRows=$myDB->Query($SQL);
 
$SupervisorSelect ="<b>หน.งาน</b><br><table border='0' width='100%'><tr>";
$i = 0;
$mod = 0;
while($row=$myDB->GetRow()){
    $mod = $i % 8; //### แบ่งแถวล่ะกี่ Checkbox
    if($mod == 0 && $i>0){
        $SupervisorSelect.="</tr><tr>";
    }
    $SupervisorSelect.="<td><input type='checkbox' name='SupervisorList[]' value='".$row["EmpEmail"]."'>".tis2utf8($row["PositionCalled"])."</td>";
    $i++;
}
$SupervisorSelect.="</table>";

7/20/2024

Docker on debian12

https://intranet.scivalve.com/blog.php?u=3&b=1953

https://docs.docker.com/desktop/install/debian/
1. ติดตั้ง Debian12
2. เตรียมติดตั้ง Docker
  1. for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done


  1. sudo apt-get update
  2. sudo apt-get install ca-certificates curl
  3. sudo install -m 0755 -d /etc/apt/keyrings
  4. sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
  5. sudo chmod a+r /etc/apt/keyrings/docker.asc


# Add the repository to Apt sources: bookworm คือ VERSION_CODENAME ของ OS แต่ละรุ่น
  1. echo \
  2.   "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  3.   $(. /etc/os-release && echo "bookworm") stable" | \
  4.   sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

  1. sudo apt-get update
  2. sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  3. docker run hello-world
  4. docker version


3. สร้าง file
  1. mkdir php
  2. cd php
  3. nano docker-compose.yml


PHP+DB+phpmyadmin เพิ่มข้อมูล
version: "3.8"
services:
php-apache-environment:
container_name: php-apache
build:
context: ./
dockerfile: Dockerfile
depends_on:
- db
volumes:
- ./:/var/www/html/
ports:
- 8001:80

db:
container_name: db
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: MYSQL_ROOT_PASSWORD
MYSQL_DATABASE: MYSQL_DATABASE
MYSQL_USER: MYSQL_USER
MYSQL_PASSWORD: MYSQL_PASSWORD
ports:
- "8002:3306"

phpmyadmin:
container_name: phpmyadmin
image: phpmyadmin/phpmyadmin
ports:
- "8003:80"
restart: always
environment:
PMA_HOST: db
depends_on:
- db


ในไฟล์ docker-compose.yml เป็นตัวตั้งค่านำไปใช้ใน โปรแกรม เช่น
database name คือ db
User Password อยู่ที่ environment
ports ต่าง ๆ สามารถเปลี่ยนได้ เช่น 8001 คือ web apache, 8003 คือ phpmyadmin


4. สร้าง Dockerfile ชื่อต้องตรงกันกับในไฟล์ docker-compose.yml version php สามารถเปลี่ยนตามที่เราต้องการ
FROM php:8.2-apache
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
RUN apt-get update && apt-get upgrade -y

คำสั่ง
  1. sudo docker compose up #เริ่มทำงาน
  2. sudo docker compose down #หยุดทำงาน
  3. sudo docker compose pull #update
  4. sudo docker compose up -d #เริ่มทำงานแบบ daemon


  1. sudo docker ps #เรียกดูรายการ process ที่กำลังทำงานอยู่
  2. sudo docker exec -it [ID] bash #เรียกใช้คำสั่งภายใน container


5. เตรียม Folder web
  1. chown www-data:www-data -r /php
  2. chmod 775 -r /php


ใน 1 เครื่อง CT ประกอบด้วย 3 Image
ดู ID ของแต่ละเครื่อง
  1. docker ps

เข้าไปแต่ละเครื่อง bash คือโปรแกรมที่ต้องการใช้งาน
  1. docker exec -it 1d6f98697fba bash

ตั้งเวลาของแต่ละ Image
  1. dpkg-reconfigure tzdata


6. เปิด root ให้สามารถ เข้า ssh ได้ จะได้เข้าได้หลาย ๆ User หรือจะเพิ่ม User เอาก็ได้
  1. nano /etc/ssh/sshd_config

เพิ่มไว้ท้ายสุด
PermitRootLogin yes
  1. /etc/init.d/ssh restart


เพิ่ม User
  1. adduser sa