Tag Archive windows

WSL: mkdir สร้าง windows folder ใหม่

วิธีสร้าง folder ใหม่โดยปกติจะมีรูปแบบ mkdir { folder path } ใน wsl สามารถสร้าง folder ในวินโดว์ได้โดยใช้รูปแบบ sudo mkdir /mnt/{ drive letter }/{ folder path } เช่น จะสร้าง C:\UsersDatas\var\www\prototypes_laravel จะใช้ จะใช้ command
sudo mkdir /mnt/c/UsersDatas/var/www/prototypes_laravel
แต่ถ้าหากไม่มี folder C:\UsersDatas\var\www มาก่อนจะมี error แสดง
mkdir: cannot create directory ‘/mnt/c/UsersDatas/var/www/prototypes_laravel’: No such file or directory
แก้ได้โดยใช้ parameter -p เช่น

sudo mkdir -p /mnt/c/UsersDatas/var/www/prototypes_laravel

ก็จะสร้าง C:\UsersDatas\var\www\prototypes_laravel ตามที่ต้องการ

อ่านเพิ่มเติม WSL: Creating links shortcut


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

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

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

แก้เข้า linux / windows แล้วเวลาเปลี่ยน

ถ้าเครื่องลง dual boot หลังไปใช้ linux แล้วกลับมาบูทเข้า windows จะพบว่าเวลามันจะเปลี่ยนไปหลายชั่วโมง โดยที่ไม่ได้ตั้งเวลาใหม่แต่อย่างใด ทั้ง ๆ ที่ตอนใช้ลินุกซ์เวลาก็ถูกต้องนะ

ปัญหาแบบนี้สามารถแก้ได้ง่าย ๆ โดยพิมพ์ใน terminal ด้วยสิทธิ์ root

timedatectl set-local-rtc 1

จากนั้นปัญหานี้จะหมดไปละ

สาเหตุ ในคอมพิวเตอร์มีนาฬิกาอยู่ 2 ตัว คือ 1 นาฬิกาบนแมนบอร์ด ( bios / cmos / uefi ) 2 นาฬิกาบนระบบปฏิบัติการ โดยค่าตั้งต้น linux จะคิดว่านาฬิกาบนเมนบอร์จะเป็นเวลาตาม UTC ไม่ใช่เวลาท้องถิ่น แต่วินโดวน์จะคิดว่าเป็นเวลาท้องถิ่น เวลาที่เราใช้ linux หรือ windows ต่างก็ sync เวลาใหม่ลงไปที่นาฬิกาบนแมนบอร์ด แต่เพราะว่าทั้งสองตัวเข้าใจว่าเป็นจึงเห็นเวลาเปลี่ยนไป เปลี่ยนมา

ขอบคุณวิธีและคำอธิบายจาก Wrong Time Displayed in Windows-Linux Dual Boot Setup? Here’s How to Fix it

สร้าง USB Boot ง่ายๆ กับ ventoy

นอกจากลง windows ผ่าน usb ที่ microsoft จะทำตัวติดตั้งให้โหลดจากเว็บตัวเองแล้วลง usb ไม่ต้องใช้ cd dvd เหมือนสมัยก่อนแล้ว แต่ถ้าจะลง windows หลาย version หรือจะลง linux จะลงตัวสแกนไวรัส ปกติมันก็ใช้ flash drive ตัวละอัน รกกว่า dvd หลายอีก

หลังจากลองมาหลายตัวอย่าง Rufus, YUMI จนได้เจอกับตัวที่ถูกใจ ใช้ง่ายมากๆ คือ ventoy ที่ตอบโจทย์มากๆ คือ ลงได้หลาย os หลาย iso โดยใช้แค่ usb อันเดียว เพิ่มลด iso แค่ลบ วาง ไม่ต้องทำอะไรพิเศษ จะทำใน windows ก็ได้ windows พังก็ใช้ linux ทำก็ได้

  1. โหลดตัวติดตั้งได้จากเว็บ https://www.ventoy.net/en/download.html โดยมีให้เลือก windows / linux / live cd
  2. โหลด windows 10, xp, 7 ตัวที่ชอบ, linux, Hiren’s BootCD PE, ตัวแสกนไวรัส อะไรก็แล้วแต่ไปพลางๆ ขอแค่เป็นไฟล์ iso เป็นอันใช้ได้
  3. หา usb flash drive sd card หรือ harddisk ที่ชะตาขาดเพราะว่ามันจะต้องโดนลบข้อมูลข้างในทั้งหมด เลือกเอาที่มันจุหน่อย ตอนนี้ตัว 32GB ไม่กี่ร้อยละ จะได้ลงได้หลายๆ ตัว เสียบเข้าเครื่องรอเอาไว้
  4. แตก zip ไฟล์ออกมาทั้ง folder
  5. ดับเบิลคลิกตรง Ventoy2Disk จะเห็นโปรแกรมหน้าตาบ้านๆ ไม่มีอะไรเลยจริงๆ เพราะมันใช้ง่ายมาก
  6. เลือก device ( usb ) อันโชคร้ายของเรา ( เลือกให้ถูกนะเพราะมันจะโดนลบเกลี้ยง ) ถ้าไม่เห็นคลิกวงเขียวๆ ด้านหลัง
  7. กด Install แค่นี้ละ
  8. หลายคนคงจะงงแล้วที่โหลด windows เอาไว้ละ เปิดดูใน File Explorer จะเห็น drive ใหม่ชื่อ Ventoy เพิ่มขึ้นมาให้เอา iso ที่โหลดเอาไว้ทั้งหมด วางไว้ในนี้เป็นอันเสร็จ

ทดสอบโดยการตั้งให้เครื่องของเรา boot จาก usb อันที่ทำไว้ จะเห็นชื่อไฟล์ iso ที่เราโหลดมา เลือกตัวที่ต้องการจะใช้ติดตั้งได้เหมือน usb แยกเฉพาะตัวเลย

ความดีงามของ Ventoy คือเวลา windows ออกเวอร์ชั่นใหม่ขึ้นมา ก็แค่โหลด iso ตัวใหม่มาวางใน dirve เดิม ถ้ามันเก่าแล้วหรือพื้นที่ไม่พอแล้วก็แค่ลบอันที่ไม่ใช้ออก ไม่ต้องทำอะไรเป็นพิเศษ ไม่ต้องใช้ Ventoy มาทำอะไรด้วยซ้ำไป

แก้ composer, npm ผ่าน proxy แล้วไม่ทำงาน

เป็นเรื่องปกติที่เน็ตใน office ใหญ่ๆ มันจะอยู่หลัง proxy ที่จะกรองข้อมูลเข้าออก แต่แปลกคือเปิดเว็บใน chrome firefox IE ได้หมด แต่ตัว command line dos ตัวน้อยๆ น่ารัก ที่ติดมากับ windows มีปัญหาไม่สามารถติดตั้ง package ต่างๆ ผ่าน composer หรือ npm ได้

เพราะว่าสำนักงานอาจจะใช้ NTLM หรือ Kerberos มาทำเป็น proxy โดยไม่ได้สนใจว่า dos, command line แม้แต่น้องใหม่ powershell อะไรพวกนี้มันต่อเน็ตไม่ได้ 100% ทั้ง ๆ ที่ ping ออกไปได้ เอา url ไปเปิดดูก็ได้ แต่ทั้ง composer ทั้ง npm มันบอกว่าต่อเน็ตไม่ได้ network เค้าก็บอกไม่ได้บล๊อกนะ ทำไม่เป็นแบบนี้ไม่รู้เหมือนกัน

วิธีแก้คือหาโปรแกรม authentication proxy, forward proxy, reverse Proxy มาช่วย เดิมเคยใช้ Cntlm Authentication Proxy โดนเคยเขียน forward proxy ด้วย cntlm ไว้แต่พี่แกแทบจะไม่พัฒนาต่อแล้ว เลยเปลี่ยนมาใช้ Px แทน

การติดตั้ง

  1. สร้าง folder ไว้เก็บโปรแกรม เช่น C:\px
  2. โหลดมาจากหน้า https://github.com/genotrance/px/releases/tag/vHEAD จะมีตัวที่เป็น .exe ให้โหลดมาเก็บไว้ที่ C:\px
  3. เปิด command line แล้ว
    1. cd c:/
    2. cd c:\px
    3. ถ้า proxy ของ office คือ 192.168.1.33 port 3128 ก็พิมพ์
      px –192.168.1.33:3128 –save
    4. px –install
  4. เปิดไฟล์ C:\px\px.ini ตามคู่มือ Configuration ออกมาแก้ เช่น
[proxy]
allow = *.*.*.*
auth =
gateway = 0
hostonly = 0
listen = 127.0.0.1
noproxy = 192.168.1.*
pac =
port = 3129
server = 192.168.1.33:3128
useragent =
username =

[settings]
foreground = 0
idle = 30
log = 0
proxyreload = 60
socktimeout = 20.0
threads = 5
workers = 8

แก้ windows environment สมมุติว่า 3128 คือ port ที่ตั้งไว้ใน [proxy] จะได้

VariableValue
HTTP_PORXYlocalhost:3129
HTTP_PROXY_REQUEST_FULLURI0
HTTPS_PROXYlocalhost:3129
HTTPS_PROXY_REQUEST_FULLURI0

ถ้าไม่เคยตั้งค่า Windows Environment Variables อ่านได้จาก

เปิดไฟล์ C:\Windows\System32\drivers\etc\hosts
แก้จาก

# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost

เป็น

# localhost name resolution is handled within DNS itself.
	127.0.0.1       localhost
	::1             localhost

restart แล้วลง composer และ npm ใหม่ ตัวติดตั้งเห็นเห็น Windows Environment Variables แล้วตั้งค่า proxy ให้เอง

set Environment โดย command line

เราสามารถเซ็ต Environment Variables ได้โดยใช้ command line ง่ายๆ แค่พิมพ์ set หรือ setx เท่านั้นเอง

ก่อนอื่นก็ดูก่อนว่า Environment Variable ตัวนี้เซ็ตเอาไว้รึยัง รูปแบบคือ echo %{variable name}% ตัวอย่าง echo %path% ถ้ามีค่าจะได้ค่าออกมา ถ้าไม่เคยมีมาก่อนจะ retuen %{variable name}% กลับมา

ใน windows จะไม่สนใจตัวเล็กตัวใหญ่ (case insensitive) ดังนั้นตัวแปรที่เซ็ตชื่อ PATH หรือ path ก็คือตัวเดียวกัน

ถ้าใช้ windows 10 build ใหม่ๆ สามารถใช้ คำสั่ง setx รูปแบบคือ setx {variable name} {variable name} เช่น setx http_proxy 127.0.0.1:3128 หรือ setx https_proxy 127.0.0.1:3128

ถ้า windows ที่เก่ากว่านั้นก็ใช้ set เช่น set http_proxy=”127.0.0.1:3128″ หรือ set https_proxy=”127.0.0.1:3128″ ต่างกันที่ มี x กับ ไม่มี x แค่นั้นเหรอ จริงๆแล้ว set ใช้ง่ายกว่ามากโดย

  • จริงๆ ไม่ต้องมี ” ก็ได้นะ จะใช้ set http_proxy=127.0.0.1:3128 หรือ set https_proxy=127.0.0.1:3128 ก็ได้ ถ้าไม่มีพวกสเปส อักษรพิเศษอยู่ข้างใน
  • เพิ่มค่าเข้าไปได้ง่ายๆ อย่างตัวแปร PATH ที่ใครๆ โปรแกรมไหนๆก็อย่างเข้าไปอยู่ข้างใน แค่ใช้ SET PATH=%PATH%;c:\whatever\else แค่นี้ก็เพิ่มเข้าไปต่อจากตัวเดิมแล้ว
  • เอา Environment Variables ออกไปได้ง่ายๆ แค่ไม่ใส่ค่าลงไป set https_proxy แค่นี้ก็ลบออกไปได้แล้ว

อ่านเพิ่มเติม

ตั้งให้เข้า windows แทน linux

หลังจากลง linux แล้วมันจะจัดการให้เข้ามาใช้ linux เป็นค่าเริ่มต้น แต่ถ้าเราใช้ windows เป็นหลักมันจะสดวกกว่าถ้า grub มันจะ boot เข้า windows ไปเองถ้าเราไม่ได้เลือก

สาย gui อาจจะใช้ Grub Customizer แต่จริงๆแล้วไม่จำเป็นต้องลงโปรแกรมตัวนี้เลย แค่เข้าไปแก้ตัวเลขตัวเดียวเท่านั้นเอง ( แถม linux อย่าง kali ยังไม่ยอมให้ลงอีกตะหาก )

  1. จำว่าเมนู windows มันอยู่ลำดับที่เท่าไหร่ แต่เริ่มนับจาก 0 นะ
  2. สำรอง config ไว้ก่อนโดยใช้ sudo cp /etc/default/grub /etc/default/grub.bak
  3. เปิด grub มาแก้โดยsudo vim /etc/default/grub หาบรรทัด GRUB_DEFAULT=0 เปลี่ยนตัวเลขเป็นลำดับเมนูของ windows ย้ำอีกทีว่านับจาก 0 ( ถ้าเป็น linux บางตระกูลให้ใช้ nano แทน vim )
  4. แก้เวลารอโดยเปลี่ยน GRUB_TIMEOUT=5 เป็น 3 ก็พอ
  5. บันทึกโดยกด
    1. Esc
    2. :qw
  6. ทำการ update grub โดย sudo update-grub

จะเห็นว่าจริงๆก็ไม่ยากเลย อ่านเพิ่มเติม How do I change the GRUB boot order?

ติดตั้ง imagick ImageMagick ใน windows (xampp)

การติดตั้ง imagick (ImageMagick) มันจะมีขั้นตอนพิเศษคือ copy .dll นอกจาก php_imagick.dll ใส่ไว้ใน apache\bin และต้องเซ็ต ENVIRONMENT PATH ด้วย

ขั้นตอนการติดตั้งแบบละเอียด

  1. เปิด phpinfo ดู PHP Version ของ server ที่ต้องการจะติดตั้ง
  2. เปิด PECL: imagick download สังเกต สัญลักษณ์ windows คลิกไปจะบอกว่า version นี้สามารถใช้กับ php version ไหนได้บ้าง ลองไล่จาก version ใหม่ล่าสุดลงมาของใหม่ยังไงก็ดีกว่าของเก่าๆ จากนั้นเลือกไฟล์จากข้อมูลใน phpinfo
    Thread Safety
    disabled
    แทนด้วย NTS
    enabled
    แทนด้วย TS
    Architecture
    เป็น x64 หรือ x86

    เช่น 7.1 Thread Safe (TS) x64 คือ php version = 7.1 Thread Safety = enable Architecture = x64 คลิกโหลดมาจะได้ไฟล์ php_imagick-3.4.3-7.1-ts-vc14-x86.zip

  3. แตกไฟล์ที่โหลดมาให้ php_imagick.dll ไปที่ folder extension_dir ใน phpinfo (เช่น C:\xampp\php\ext)
  4. แตกไฟล์นามสกุล .dll ที่เหลือไปที่ apache/bin (เช่น C:/xampp/apache/bin)
  5. เปิดไฟล์ php.ini ขึ้นมา โดยดูจาก Loaded Configuration File ใน phpinfo (เช่น C:\xampp\php\php.ini) เพิ่ม
    ...
    extension=php_imagick.dll
    ...
  6. โหลดตัวโปรแกรม ImageMagick มาจาก Windows Binary Release เลือก version ที่ต้องการโดย
    Q
    คือ bits-per-pixel มีให้เลือก 8 กับ 16 ยิ่งเยอะภาพจะยิ่งชัดแต่ตัวไฟล์จะใหญ่กว่า
    x86 / x64
    คือ Architecture ของ windows ที่ใช้อยู่ เลือกให้ตรงกับเครื่อง server ถ้าไม่ได้ใช้ Windows 32-bit ใช้ x64 จะดีกว่า

    โหลดแล้วติดตั้งตามปกติ อย่าลืมติ๊ก Add application directory to your system path

  7. restart apache จากนั้น ค้นหา imagick ถ้าขึ้นแสดงว่าติดตั้งสำเร็จ และดู PATH จะมี folder ที่ติดตั้ง Magick เช่น C:\Program Files\ImageMagick-7.0.5-Q16; Image ไว้ (ถ้าไม่มีลอง restart windows ดู)

หาเครื่องที่เปิดอยู่ในบ้าน / ที่ทำงาน

แทนที่จะไล่หาว่าเครื่องไหนมันเปิดอยู่บ้างที่ละเครื่องสามารถใช้ command ping เครือข่ายทั้งยวงได้โดยใช้คำสั่ง

FOR /L %i IN (1,1,254) DO ping -n 1 192.168.1.%i | FIND /i "Reply">>c:\ipaddresses.txt

ผลที่ได้จะถูกเขียนลงในไฟล์ c:\ipaddresses.txt

...
Reply from 192.168.1.1: Destination host unreachable.
Reply from 192.168.1.1: Destination host unreachable.
Reply from 192.168.1.1: Destination host unreachable.
...
Reply from 192.168.1.61: bytes=32 time=2ms TTL=64
Reply from 192.168.1.62: bytes=32 time=5ms TTL=64
Reply from 192.168.1.63: bytes=32 time<1ms TTL=128
Reply from 192.168.1.64: bytes=32 time<1ms TTL=128
...
Reply from 192.168.1.1: Destination host unreachable.
...

อธิบายคือไล่ ping เครื่องตั้งแต่ ip 192.168.1.1 ถึง 192.168.1.254 ถ้าเครื่องไหนตอบกลับมา (เปิดอยู่) แล้วเขียนไว้ในไฟล์ c:\ipaddresses.txt ถ้าเปิดดูก็จะเห็นตัวหนังสือประมาณ bytes=32 time=2ms TTL=64 ส่วนที่หาไม่เจอ ไม่ตอบกลับมา ก็จะได้ข้อความซ้ำๆ มาจาก router อย่าง Reply from 192.168.1.1: Destination host unreachable.

ดีกว่าไล่ดูทีละเครื่องเยอะเลย
Cr: Ping all addresses in network, windows

ลง ubuntu ใน windows แบบ subsystem

หนึ่งในความประหลาดของ windows 10 คือ มันสามารถลง linux ไว้ในตัวของมันได้แบบไม่ใช้ virtual server หรือ duel boot แต่ Microsoft เรียกมันว่า subsystem โดยเป็น linux ที่ได้มาจากพันธมิตร Ubuntu (ไม่เคยคิดเลยว่า 2 เจ้านี้จะทำงานร่วมกันได้)

สาเหตุที่ควรเพิ่ม linux เข้ามาในเครื่อง เพราะว่า php จริงๆแล้วมันเหมาะกับ linux มากกว่า แต่เพราะในการทำงานใน office เรายังจำเป็นจะต้องติดต่อกับ user อื่นๆ ที่เค้าใช้ windows และโปรแกรมที่ใช้ติดต่อกันมักจะเป็นโปรแกรมที่ทำงานได้แต่บน windows ซะส่วนใหญ่ การที่จะต้อง boot กลับไปกลับมาเพิ่ออ่านเอกสารซักตัวมันคงไม่สดวกจะลง visuals machine อย่าง oracle virtualbox , vmware ก็หนักเครื่อง และไม่สดวกที่จะใช้ docker

การติดตั้ง

  1. เครื่องต้องเป็น windows 10 64 bit Version 1607 ขึ้นไป (ถ้าไม่ได้ปิด update และเครื่องต่ออินเตอร์เน็ตมี version มากกว่าตัวนี้อยู่แล้ว)
  2. เปิด settings app (รูปเฟืองที่เมนูบนปุ่ม shutdown) > Update & Security > For Developers เลือก Developer Mode.
  3. ไปที่ control panel > Programs > Turn Windows Features On or Off ติ๊ก Windows Subsystem for Linux (Beta) คลิก ok แล้ว restart
  4. Search bash แล้ว enter
  5. จะเห็นข้อความ
    -- Beta feature --
    This will install Ubuntu on Windows, distributed by Canonical
    and licensed under its terms available here:
    https://aka.ms/uowterms
    Type "y" to continue:
    

    พิมย์ y แล้ว เอ็นเตอร์

  6. รอให้มันติดตั้ง จะเห็นข้อความ

    Downloading from the Windows Store... 100%
    Extracting filesystem, this will take a few minutes...
    Please create a default UNIX user account. The username does not need to match your Windows username.
    For more information visit: https://aka.ms/wslusers
    Enter new UNIX username:

    ใส่ user และใส่ password หลัง Enter new UNIX password: และ Retype new UNIX password: ไม่ต้องเหมือนที่ใช้ใน windows เอาตัวเลขง่ายๆก็ได้ รอข้อความ

    passwd: password updated successfully
    Installation successful!
    The environment will start momentarily...
    Documentation is available at:  https://aka.ms/wsldocs
    pitt@xxx:/mnt/c/Windows/System32$

    เสร็จแล้วไฟล์จะถูกเขียนไว้ที่ ไฟล์จะถูกเขียนไว้ที่ %USERPROFILE%\AppData\Local\lxss

  7. ทดสอบโดยคำสั่ง sudo apt-get update
  8. Linux ใน windows พร้อมรับใช้แล้วครับ ไม่ยากเลย แล้วไปต่อกันที่ด่านต่อไป ลง Nginx, MariaDB, PHP And phpMyAdmin ใน linux subsystem

    อ่านเพิ่มเติม