11/13/2024

Axpata X++ Not Like in SQL.

 Axpata X++ Not Like in SQL.

  1. SELECT * FROM purchTable
  2. WHERE !(purchTable.purchId LIKE 'PO24*');

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

6/22/2024

Ubuntu คำสั่งหา File ที่ซ้ำกัน ข้อมูลซ้ำกัน

 

Ubuntu คำสั่งหา File ที่ซ้ำกัน ข้อมูลซ้ำกัน
ด้วยโปรแกรม fdupes
https://itsfoss.com/find-duplicate-files-linux/

ติดตั้งโปรแกรมด้วยคำสั่ง
  1. sudo apt install fdupes

ใช้งาน
  1. fdupes /path/to/folder

เช่น
  1. fdupes -r /home

หรือเข้าไปที่ Folder ที่ต้องการก่อน
  1. fdupes -r . > fdupes.text

เช่น


6/21/2024

Ubuntu คำสั่ง Scan ดูขนาดพื้นที่แต่ละ Folder ด้วยโปรแกรม ncdu

 Ubuntu คำสั่ง Scan ดูขนาดพื้นที่แต่ละ Folder ด้วยโปรแกรม ncdu
ติดตั้งโปรแกรม

  1. apt install ncdu


เข้าไปใน Folder ที่ต้องการ Scan ดูข้อมูล เช่น datacenter
  1. cd /DATA


Run Program
  1. ncdu .
ใช้ลูกศรเลื่อนเข้าออก ขึ้นลง เพื่อดูข้อมูล

5/28/2024

ตั้งค่า Firefox ไม่ให้ redirect http to https

ตั้งค่า Firefox ไม่ให้ redirect http to https
1. เข้าแก้ Config firefox ด้วยคำสั่ง [b]about:config[/b]
2. ค้นหา [b]network.stricttransportsecurity.preloadlist[/b] เปลี่ยนจาก true เป็น false


3. ปิด Firefox แล้วเข้าใหม่ ทดลองเข้า Url ที่เป็น http ก็จะไม่ redirect


https://stackoverflow.com/questions/30532471/firefox-redirects-to-https


5/11/2024

Thunderbird ไม่โหลดเมล์อัตโนมัติ ต้องกด Get Message เอง

 Thunderbird ไม่โหลดเมล์อัตโนมัติ ต้องกด Get Message เอง
วิธีแก้
https://support.mozilla.org/en-US/questions/1303932

โดยเปลี่ยน security.tls.version.min  จาก 2 หรือ 3 ให้เป็น 1

1. In Menu Tools --> Settings
2. Scroll forever to the bottom and click on 'Config Editor'
3. accept the risk
4. In search type: tls.version
5. look for this line : security.tls.version.min
6. Double click on line to open an edit window and enter the number 1
7. click on OK.
8. Exit window - top right x


3/06/2024

Alfresco มีปัญหา Load CPU เยอะค้นหาไม่ได้ Error

Alfresco มีปัญหา Run CPU เยอะค้นหาไม่ได้ Error
แก้ปัญหาโดย
ใช้วิธีตั้ง Crontab ให้ Restart service ตอน 8.40 น. แต่บางวันก็ต้อง Restart Manual อีกรอบ เป็นทุกวันตอนเช้า หลังจาก Restart ไป ก็ใช้งานได้ทั้งวันและจะเป็นอีกทีในตอนเช้าของวันต่อไป
Error ค้นหาไฟล์ไม่พบ

search failed due to system error: 0822154976 request failed 500 /solr/alfresco/alfresco?wt=json&fl=dbid%2cscore&rows=500&df=text&start=0&locale=en_us&fq=%7b%21afts%7dauthority_filter_from_json&fq=%7b%21afts%7dtenant_filter_from_json

ส่งผลให้ กิน CPU ที่ตัว Server Alfresco และตัว VMware

มี Process JAVA run CPU สูงผิดปกติ

Process บางตัว Run เป็นเวลานาน กว่า Process อื่น ๆ
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 3703 52.5 18.7 2161208 1533760 ? Sl Mar05 372:14 /DATA/alfresco/java/bin/java -Djava.util.logging.config.file=/DATA/alfresco/tomcat/conf/logging.properties -XX:MaxPermSize=512m -Xms128m -Xmx1024m -XX:-DisableExplicitGC -D

เมื่อ Restart service Alfresco process นี้จะเริ่ม Run ใหม่
ทดลองวันที่ 20240306
แก้ปัญหาโดย
แก้ไฟล์ ctl.sh เพิ่ม MaxPermSize , Xms, Xmx
nano /DATA/alfresco/tomcat/scripts/ctl.sh
เดิม
#export JAVA_OPTS="-XX:MaxPermSize=512m -Xms128m -Xmx1024m -XX:-DisableExplicitGC -Djava.awt.headless=true -Dalfresco.home=/DATA/alfresco -Dcom.sun.management.jmxremote -Dsun.security.ssl.allowUnsafeRenegotiation=true"
แก้ใหม่
export JAVA_OPTS="-XX:MaxPermSize=1024m -Xms512m -Xmx2048m -XX:-DisableExplicitGC -Djava.awt.headless=true -Dalfresco.home=/DATA/alfresco -Dcom.sun.management.jmxremote -Dsun.security.ssl.allowUnsafeRenegotiation=true"
และ
เดิม
#export JAVA_OPTS="-XX:MaxPermSize=512m -Xms128m -Xmx1024m -XX:-DisableExplicitGC -Djava.awt.headless=true -Dalfresco.home=/DATA/alfresco -Dcom.sun.management.jmxremote -Dsun.security.ssl.allowUnsafeRenegotiation=true"
แก้ใหม่
export JAVA_OPTS="-XX:MaxPermSize=1024m -Xms512m -Xmx2048m -XX:-DisableExplicitGC -Djava.awt.headless=true -Dalfresco.home=/DATA/alfresco -Dcom.sun.management.jmxremote -Dsun.security.ssl.allowUnsafeRenegotiation=true"


กลับไปใช้ Crontab restart ทุกเช้า 5.30 น. เหมือนเดิม

https://hub.alfresco.com/t5/alfresco-content-services-forum/java-heap-space-issue-on-solr4/m-p/57364#M3201

2/08/2024

jquery-ui ให้ข้อความแสดงด้านบน Texbox เมื่อพิ่มพ์ autocomplete

 jquery-ui ให้ข้อความแสดงด้านบน Texbox เมื่อพิ่มพ์ autocomplete ถ้าไม่แก้ข้อความจะอยู่ข้างหลัง Box
ต้องแก้ ไฟล์ css ของ jquery-ui เช่น
jquery-ui-1.13.1-Custom.css
เพิ่ม z-index

  1. .ui-autocomplete {
  2.     position: absolute;
  3.     top: 0;
  4.     left: 0;
  5.     cursor: default;
  6.     z-index: 1500
  7. }