Tag Archive Install

Byphunsanit

Node.js: cannot be loaded because running scripts is disabled on this system

ถ้า PowerShell run TypeScript, Node.js หรือ run tsc –version แล้วมี error ประมาณ
tsc : File C:\Users\pitt\AppData\Roaming\npm\tsc.ps1 cannot be loaded because running scripts is disabled on this system. For more information,
see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170.

แก้ได้โดยใช้ command โดยสิทธิ์ Administrator

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

โดยสามารดูคำสั่งเพิ่มเติมได้จาก about_Execution_Policies

cr: PowerShell bug “execution of scripts is disabled on this system.”

Byphunsanit

Swagger: การติดตั้ง Swagger Editor

การเขียน OpenAPI เครื่องมือที่สามารถช่วยตรวจสอบและ test ได้คือ swagger-editor โดยสามารถ download มาติดตั้งในเครื่องของตัวเองได้

  1. ดาวน์โหลดตัว zip file จาก https://github.com/swagger-api/swagger-editor มาแตกไว้ในโฟลเดอร์ C:\swagger-api หรือจะใช้คำสั่ง

    git clone https://github.com/swagger-api/swagger-editor.git
  2. เปิด PowerShell แล้วไปที่ C:\swagger-api\swagger-editor
  3. ติดตั้ง http โดยคำสั่ง

    npm install -g http-server
  4. จากนั้นกลับออกมา 1 ระดับโดยคำสั่ง

    cd ../
  5. เปิด server โดยคำสั่ง

    http-server swagger-editor -a 127.0.0.1 -p 8080
  6. จากนั้นเปิด browser โดยใช้ URL: http://127.0.0.1:8081

เท่านี้ก็สามารถใช้ swagger-editor ได้โดยไม่ต้องต่ออินเตอร์เน็ตแล้ว
Cr.

Byphunsanit

PowerBuilder: DBMS not supported in your current installation

เห็น error DBMS not supported in your current installation ในขั้นตอนที่ connect database sql server ตอนแรกเข้าใจว่าตอนที่ติดตั้งไม่ได้ลงพวก adodb, jdbc, odbc driver ลอง install ใหม่ก็เหมือนเดิม กี่ครั้งก็เหมือนเดิม

รุ่นพี่บอกให้ลง sql server 2000 หลังจากนั้นก็ connect ได้ปกติเลย เข้าใจว่าในการติดตั้งมันจะลงไดร์เวอร์ให้เป็นตัวที่ยังใช้โปรโตคอลเดี่ยวกับตัว PB8

Byphunsanit

WSL: ติดตั้ง firefox

ต้องการติดตั้ง firefox ไว้เทสงานโดยเฉพาะ เลยติดตั้งใน wsl (Windows Subsystem for Linux)

sudo snap remove firefox
sudo apt remove firefox
sudo add-apt-repository ppa:mozillateam/ppa

# สร้างไฟล์ใหม่ว่าง ๆ
sudo nano /etc/apt/preferences.d/mozillateamppa

# ใส่เนื้อหา
Package: firefox*
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 501

# save file แล้ว
sudo apt update
sudo apt install firefox #หรือ firefox-esr

เรียกใช้โดยคำสั่ง firefox มันจะเปิดขึ้นมาแบบเป็น gui สวยงามเหมือนที่อยู่ในลินุกซ์แท้ ๆ เลย แต่ถ้าลองเปิดเว็บไทยแล้วอ่านไม่ออกให้ติดตั้งฟอนต์ไทยก่อน ตามวิธี Linux: ติดตั้งฟอนต์ภาษาไทย

Cr. How do I install Firefox in WSL, when it requires snap, but snap doesn’t work?

Byphunsanit

windows: ลงโปรแกรมหลายเครื่อง

ถ้าต้องลงโปรแกรมเหมือน ๆ กันหลาย ๆ เครื่อง หรือตามไปอัพเดตโปรแกรมทุกเครื่องให้เป็นตัวล่าสุด จะดีมั๋ยถ้าจะลดเวลาที่ต้องใช้ลงไป ใช้สคริปท์ง่าย ๆ หมือนฝั่่ง Linux ที่ใช้ไฟล์เดียวก็ลงโปรแกรมที่ต้องใช้ได้ครบ

ก่อนอื่นโปรแกรมตัวนี้ชื่อ Chocolatey ไม่ต้องไปดาวน์โหลดมาก่อน วิธีติดตั้งมีทั้งแบบใช้คนเดียวและแบบองค์กรขนาดใหญ่ เพื่ออธิบายง่าย ๆ และที่ใช้ตอนนี้ไม่ได้มีเครื่องที่ต้องลงโปรแกรมมาก ขอใช้แบบลงส่วนตัวละกัน

  1. เปิด PowerShell ขึ้นมาโดนสิทธิ administrator copy
    Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString(‘https://community.chocolatey.org/install.ps1’))
    ไปวางแล้ว enter ก็ลงโปรแกรมติดตั้งเสร็จแล้ว
  2. ต่อไปคือสร้างลิสต์โปรแกรมที่จะติดตั้งลงเครื่องอื่น ๆ ขึ้นมาเพื่อความสดวกจะติดตัว Chocolatey Gui ( ทำแค่เครื่องของเราเครื่องเดียวก็พอ ) พิมพ์ choco install chocolateygui ใน PowerShell แลัว enter
    1. เปิดโปรแกรม Chocolatey GUI จากเมนูของ windows โดยสิทธิ administrator จะเห็นว่าซ้ายมือจะมีอยู่ 2 เมนูคือ
      • This PC คือรายชื่อโปรแกรมที่ติดตั้งในเครื่องเรา
      • chocolatey จะเป็นหน้าที่ไว้ค้นหาโปรแกรมที่จะติดตั้ง ต้องการจะติดตั้งโปรแกรมอะไรก็ค้นหาเอาจากหน้านี้ คลิกขวา install มันจะดาวน์โหลดโปรแกรมและติดตั้งให้เอง
    2. เมื่อลง program ที่ต้องการครบแล้วไปที่ This PC มุมขวาบนจะมีปุ่ม Export ให้เซฟไฟล์ไว้ใน flash drive จะเป็นไฟล์ Chocolatey.config
  3. ไปที่เครื่องที่จะติดตั้งโปรแกรมเพิ่มเปิด PowerShell ขึ้นมาโดนสิทธิ administrator และลง Chocolatey เหมือนขั้นตอนที่ 1
  4. ติดตั้งโปรแกรมในลิสต์โดยใช้ choco install <path-to-exported-file> เช่น choco install “E:\Chocolatey.config” โปรแกรมจะถูกติดตั้งเพิ่มตามที่มีอยู่ในลิสต์ที่ได้ทำไว้
  5. เวลาผ่านไปโปรแกรมที่ลงไว้เริ่มเก่าแล้วก็สั่งอัพเดตโดยใช้ choco upgrade all -y ถ้าจะ upgrade บางโปรแกรมหรือจะยกเว้นบางโปรแกรมก็ทำตามคู่มือ https://docs.chocolatey.org/en-us/choco/commands/upgrade

ถ้าไม่เข้าใจลองดูวิธีได้จากคู่มือ https://docs.chocolatey.org/en-us/chocolatey-gui/user-interface/main-window/actions/export ตัวสคริปต์ที่มันใช้เป็นไฟล์ง่าย ๆ อย่างที่ผมใช้คือ

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="avastfreeantivirus" version="21.6.6446.0" />
  <package id="chocolatey-core.extension" version="1.3.5.1" />
  <package id="chocolatey-dotnetfx.extension" version="1.0.1" />
  <package id="chocolatey-visualstudio.extension" version="1.9.0" />
  <package id="chocolatey-windowsupdate.extension" version="1.0.4" />
  <package id="chocolatey" version="0.10.15" />
  <package id="chocolateygui" version="0.18.1" />
  <package id="dotnetfx" version="4.8.0.20190930" />
  <package id="filezilla" version="3.55.1" />
  <package id="Firefox" version="91.0" />
  <package id="gimp" version="2.10.24.3" />
  <package id="GoogleChrome" version="92.0.4515.131" />
  <package id="googledrive" version="2.34.5075.1619" />
  <package id="greenshot" version="1.2.10.6" />
  <package id="keepass.install" version="2.48.1" />
  <package id="microsoft-teams" version="1.4.00.19572" />
  <package id="microsoft-windows-terminal" version="1.9.1942.0" />
  <package id="notepadplusplus.install" version="8.1.2" />
  <package id="postman" version="8.9.1" />
  <package id="sourcetree" version="3.4.1" />
  <package id="visualstudio-installer" version="2.0.1" />
  <package id="vlc" version="3.0.16" />
  <package id="winmerge" version="2.16.12" />
</packages>

จะลองแก้เองเพื่อที่จะใช้กับ user หลาย ๆ กลุ่มก็ได้ครับ กลุ่มนี้เพิ่มบรรทัดนี้ อีกกลุ่มลงอีกโปรแกรมก็แค่ copy ไปอีกไฟล์ แล้วเพิ่มลดรายชื่อโปรแกรมเอา

Byphunsanit

ติดตั้ง Poor Man’s T-SQL Formatter ใน SSMS รุ่นใหม่ ๆ

Poor Man’s T-SQL Formatter จะติดตั้งได้ใน SQL Server Management Studio ( SSMS ) เวอร์ชั่นเก่า ๆ ได้ แต่ตัวติดตั้งรุ่นใหม่ ๆ เมื่อติดตั้งแล้ว จะไม่สามารถคลิกเมนูของตัว extension ได้ แก้ได้ง่าย ๆ โดย

  1. ปิด SQL Server Management Studio
  2. ถ้ายังไม่ได้ติดตั้ง .Net 2.0 ให้ติดตั้ง .NET Framework 2.0 ก่อนโดยวิธี How-To How to Enable .NET Framework 2.0 and 3.5 in Windows 11
  3. ถ้าต้องการใช้กับ SSMS 19 ต้องติดตั้ง SSMS 18 ในเครื่องก่อน จากนั้นติดตั้ง plugin ตามปกติ แล้ว copy C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Extensions ไปเป็น C:\Program Files (x86)\Microsoft SQL Server Management Studio 19\Extensions
  4. เปิดไฟล์ C:\Program Files (x86)\Microsoft SQL Server Management Studio {version}\Common7\IDE\Ssms.exe.config เช่น
    • C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe.config
    • C:\Program Files (x86)\Microsoft SQL Server Management Studio 19\Common7\IDE\Ssms.exe.config
  5. ค้นหาบรรทัด <assemblyBinding
  6. เพิ่มข้อความใต้<probing privatePat
    <dependentAssembly><assemblyIdentity name="Microsoft.VisualStudio.Shell.12.0" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/> <bindingRedirect oldVersion="2.0.0.0-15.0.0.0" newVersion="15.0.0.0"/></dependentAssembly>
  7. เปิด SQL Server Management Studio ใหม่

เท่านี้ก็สามารถใช้ Poor Man’s T-SQL Formatter จัดรูปแบบ sql ได้แล้ว

Byphunsanit

Windows: install error 0x800f0954

ถ้าลงโปรแกรมเก่า ๆ บางครั้งจะเจอ error 0x800f0954 ซึ่งสาเหตุคือ เราไปลงโปรแกรมที่เก่ากว่า version ปัจจุบัน อย่าง Poor Man’s T-SQL Formatter จะใช้ .net2 ที่เก่ามากหลายปีแล้ว ทำให้เจอ error code 0x800f0954

ก่อนอื่นโหลดตัวติดตั้ง .net 2 มาก่อน แต่เพราะว่ามันเก่ามากจนไม่สามารถหาตัวติดตั้งจาก microsoft ได้ ดังนั้นจะโหลดตัวติดตั้ง .Net 3.5 จาก Microsoft .NET Framework 3.5 ที่จะมี .NET Framework 2.0 และ .NET Framework 3.0 service pack ในตัวแทน

การเตรียมการติดตั้ง

  1. เปิดโปรแกรม regedit โดยไปที่เมนูของ windows พิมพ์ regedit.exe ในช่อง run หรือ search แล้ว enter
  2. เปิดคีย์ตามลำดับ HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU
  3. ดูที่ด้านขวาจะมี value ชื่อ UseWUServer เซ็ตค่าเป็น 0
  4. ปิด regedit
  5. restart windows หรือ restart service Windows Update

Cr. Error Code 0x800F0954 on Windows 10

Byphunsanit

windows: เอาพยากรณ์อากาศออกไป

หลัง update windows มันมีอะไรแปลกๆ เพิ่มขึ้นมาอย่างหนึ่ง คือพยากรณ์อากาศตรง task bar คิดว่าคนที่ต้องการจะดูมันตลอดทั้งวันนี้คงมีน้อยมากๆ เอาออกไปเหอะ

  1. คลิก task bar
  2. ไปที่ News and interests
  3. คลิก turn off
Byphunsanit

PowerBuilder 8: ติดตั้ง

จริงๆ แล้ว PowerBuilder 8 ออกมาในปี 2001 มาติดตั้งปีนี้ 2021 ก็ 20 ปีพอดี ถ้าจะนับเป็นคนก็เป็นหนุ่มสาวกันแล้วละ แน่นอนว่ามันไม่ทันกับ windows 10 แน่นอน การลงมันเลยต้องมีการติดตั้งที่พิเศษจากโปรแกรมอื่นๆ

  1. หาตัวติดตั้งมาก่อน หาโหลดไม่ได้แล้วจัดเป็นโปรแกรม classic ที่ใช้ตอนนี้ได้เป็นมรดกมาจากรุ่นพี่ ถ้ามีแล้วจงรักษาเอาไว้ให้ดี
  2. ไปคลิกที่ตัวติดตั้ง C:\PowerBuilder v.8\pb 8.01\Setup.exe
    1. ในหน้า Select Components ให้เอา PowerBuilder, PowerDynamo และ Adaptive Server Anyware ออกไปก่อนเพราะถ้าติดตั้งตอนนี้มันจะค้างที่ 70% ถ้าเจอค้างกด end task ตัวติดตั้งตัวแรกทิ้งไปเลย
    2. ติดตั้งโปรแกรมโดยเลี่ยงทั้ง 3 โปรแกรมให้มากที่สุด restart
    3. ติดตั้งโปรแกรม C:\PowerBuilder v.8\pb 8.01\Setup.exe ใหม่อีกครั้ง คราวนี้เลือกติดตั้งทุกตัว
  3. update โดยติดตั้ง C:\PowerBuilder v.8\PB 8.02\PB802.zip\PB802.exe
  4. update โดยติดตั้ง C:\PowerBuilder v.8\PB 8.03\PB803.zip\PB803.exe
  5. โปรแกรมจะถูกติดตั้งเรียบร้อยแล้วแต่ว่าคู่มือจะไม่สามารถกด F1 จากตัวโปรแกรมได้ ให้ไปล้วง short cut ออกมาจาก C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Sybase\PowerBuilder 8.0\

อ่านเพิ่มเติม https://pitt.plusmagi.com/powerbuilder-8-ภาษาไทย

Byphunsanit

laravel: install in subdirectory / subfolder / shre

laravel ออกแบบมาไม่เหมาะกับ server ที่เป็น share host หรือจำเป็นต้องวางไว้ใน subdirectory / subfolder ร่วมกับโปรเจคอื่นๆ เท่าไหร่เพราะว่าตัวที่ทำงานจะอยู่ที่ /public/index.php แต่ไฟล์ config จะอยู่ที่ /.env นี่ไม่รวมที่เก็บไฟล์ ที่อยู่ใน /storage แต่มันก็เหมือน php framework อื่น ๆ ทุกเจ้านั่นละ

สาเหตุที่มันไม่เหมาะเพราะว่า ใส่ไปใน document root ทั้ง project ( / ) แบบนี้เวลาเรียกใช้จะเป็นแบบ http://localhost/blog/public ก็ดูไม่มีปัญหาอะไร แต่ถ้าคนที่เป็น hacker มาเห็น มาดูว่าเว็บนี้เขียนมากับ laravel นี่หวามหมูเลยเพราะถ้าเรียก http://localhost/blog/public/.env นี่จะสามารถโหลด config file ออกไปได้เลย ซึ่งเป็นอะไรที่พลาดมาก

ถ้าแก้ไม่ได้ ก็ทำได้โดยการแก้ apache ให้เห็น folder นี้เป็น Alias Directive หรือที่ iis ใช้คำว่า Virtual Directory ( เป็นวิธีที่ตั้งให้เรียก folder ใน url ได้เหมือนกับว่ามี folder นั้นตาม path นั้น ๆ แต่จริงๆ แล้ว folder นั้นไม่มีอยู่จริงๆ อาจจะชื่ออื่น หรือ link ไป folder อื่น )

  1. ถ้าใช้ xampp (เรารู้ว่าคนเขียน PHP ชอบ) config ของ apache จะอยู่ที่ C:\apache\conf\extra\httpd-vhosts.conf ถ้าใช้ตัวอื่นก็หาไฟล์ .conf ใน apache\conf ดูครับ
  2. เพิ่มบรรทัด Alias “/blog” “C:\xampp\htdocs\blog\public”
    1. “/blog” คือ folder ปลอม ๆ ที่จะให้เห็นใน url
    2. “C:\xampp\htdocs\blog\public” คือ path ของ folder ที่เก็บไฟล์จริงๆ
    3. restart apache

ถ้ายังใช้ไม่ได้อาจจะเพราะว่า config จากส่วนมีผลทำให้ใช้ไม่ได้อาจจะเพิ่ม

<Directory C:\xampp\htdocs\blog\public>
    AllowOverride All
    Require all granted
</Directory>

จากนั้น restart อีกครั้ง ในส่วนนี้จะยังไม่สามารถส่ง query string ได้จะต้องแก้ /public/.htaccess โดยเพิ่ม RewriteBase /laravel-site เช่น RewriteBase /blog จากตัวอย่าง

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

แก้เป็น

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    RewriteBase /blog

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

ทดสอบดูโดย

  • เปิดเว็บ http://localhost/blog จะต้องเข้าเว็บได้ปกติ
  • เปิดเว็บ http://localhost/blog/robots.txt จะต้องเห็นไฟล์ robots.txt ที่อยู่ใน C:\xampp\htdocs\blog\public
  • เปิดเว็บ http://localhost/blog/.env ต้องไม่เห็น เนื้อหาของไฟล์เด็ดขาดจะเป็น error 404 หรืออะไรก็ว่าไป

ข้อมูลเพิ่มเติม

  1. Alias Directive