Category: Operating System

  • [บันทึกกันลืม] แก้ปัญหา server certificate verification failed บน gitlabs

    ปัญหาคือ: จะ git push จาก Linux/Ubuntu มาเก็บใน gitlabs ขององค์กร

    git push -u origin master

    แต่ติดปัญหาว่า

    fatal: unable to access 'https://gitlab.xxx.xxx.xxxx/userid/repo.git/': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

    วิธีแก้ปัญหา (แบบรีบ ๆ)

    git config --global http.sslVerify false

    ก็จะใช้งานได้แล้ว

    *** เออ “ก็ง่าย ๆ” แต่ไม่มีบอกไว้ให้หาง่าย ๆ นิ ***

  • How to create LVM volume group and logical volume

    LVM ย่อมาจาก Logical Volume Manager ความสามารถของ LVM คือสามารถสร้าง logical partition ขยายไปบนฮาร์ดดิสก์หลายๆ ลูกได้ ขั้นตอนต่อไปนี้เป็นขั้นตอนที่ทำบน CentOS หรือ Oracle Linux หรือ ค่าย Redhat Enterprise Linux ส่วนฝั่ง Debian ก็สามารถใช้คำสั่งเดียวกันทำงานเหมือนกัน แต่อาจจะต้องติดตั้งโปรแกรมเพิ่ม

    โดยขนาดสูงสุดที่ LVM ทำได้ขึ้นกับชนิดของ CPU และ Kernel ที่ใช้งาน

    • สำหรับ Kernel 2.4 บน CPU 32-Bit มีขนาดได้ไม่เกิน 2TB
    • สำหรับ Kernel 2.6 บน CPU 32-Bit มีขนาดได้ไม่เกิน 16TB
    • สำหรับ Kernel 2.6 บน CPU 64-Bit มีขนาดได้ไม่เกิน 8EB
    • ป้จจุบัน Kernel รุ่น ? CPU 64-Bit ยังไม่มีคำตอบ

    แต่เมื่อ format ให้มีระบบไฟล์แบบ ext4 จะสร้างพาทิชั่นได้ไม่เกิน 1EB เท่านั้น

    ขึ้นกับ file system ใช้งานด้วย
    • เริ่มได้
    • เข้าระบบด้วยบัญชีผู้ใช้ที่มีสิทธิ์ของ root ซึ่งอาจจะเป็น root เอง หรือ user ที่อยู่ในกลุ่ม wheel หากเข้าด้วยบัญชีผู้ใช้อื่นๆ ที่ไม่ใช่ root ให้สั่งคำสั่ง
    su -
    ตามด้วยรหัสผ่านของ root

    หรือ

    sudo -i
    ตามด้วยรหัสผ่านของผู้ใช้ที่เรียกคำสั่งนี้

    จึงจะสามารถทำคำสั่งต่อไปได้

    • ตรวจสอบว่ามีฮาร์ดดิสก์ลูกไหนถูกใช้งานอยู่บ้างด้วยคำสั่ง
    df -h
    • ได้ผลลัพธ์ประมาณดังรูป
    df
    df
    • จากภาพข้างต้น /dev/sda ถูกใช้งานอยู่แล้วคือ /dev/sda1 และ /dev/sda2 ให้ตรวจสอบว่ามีดิสก์ลูกอื่นอีกหรือไม่ด้วยคำสั่ง
    fdisk -l|grep /dev
    fdsik
    fdisk
    • จะเห็นว่ามี /dev/sdb, /dev/sdc และ /dev/sdd ที่ว่างอยู่
    • จะใช้ /dev/sdb
    • เริ่มจากสร้างพื้นที่สำหรับทำ LVM ก่อนด้วยคำสั่ง
    fdisk /dev/sdb

    กด n ตามด้วย p ตามด้วย 1 แล้ว enter 2 ครั้ง

    กด t แล้วพิมพ์ 8e แล้วกด w ดังภาพ

    fdisk
    fdisk
    • สร้าง LVM physical volume โดยใช้คำสั่ง pvcreate
    pvcreate /dev/sdb1
    • สร้าง LVM volume group ชื่อ vg_u01
    vgcreate vg_u01 /dev/sdb1
    • สร้าง LVM logical volume group ชื่อ lv_u01 ใน volume group ที่ชื่อ vg_u01 โดยให้มีขนาดทั้งหมดที่มีอยู่ใน vg_u01
    lvcreate -n lv_u01 -l 100%FREE vg_u01

    ดังภาพ

    pvcreate, vgcreate, lvcreate
    pvcreate, vgcreate, lvcreate
    • ดูสถานะว่า LVM สร้างเสร็จแล้วด้วยคำสั่ง
     pvscan
    pvscan
    • ดูสถานะว่ามี Physical Volume เท่าไหร่ ด้วยคำสั่ง
    pvdisplay
    pvdisplay
    • ก่อนใช้งานอย่าลืม format โดย device ที่จะต้อง format จะกลายเป็น /dev/vg_u01/lv_u01 ให้มีชื่อว่า u01
    mkfs.ext4 -L u01 /dev/vg_u01/lv_u01
    mkfs.ext4
    • สร้าง mount point ให้กับ lv_u01
    mkdir /u01
    • mount lv_u01 เข้ากับ /u01
    mount LABEL=u01 /u01
    • ตรวจสอบว่า /u01 ถูกเรียกใช้งานแล้ว ใส่ -h เพื่อให้ระบุขนาดเป็น GMK
    df -h
    mkdir, mount, df
    • สั่งให้ mount อัตโนมัติทุกครั้งที่บูตเครื่องเพิ่มข้อความต่อไปนี้ในแฟ้ม /etc/fstab
    LABEL=u01       /u01    ext4    defaults 0 0
    fstab
    • จบขอให้สนุก
    • อาจจะยังไม่เห็นภาพว่าแล้วมันกระจายไปดิสก์หลายๆ ลูกได้อย่างไร อธิบายง่ายๆ /u01 สามารถอยู่ได้บนฮาร์ดดิสก์มากกว่าหนึ่งลูก โดยเห็นเป็นพื้นที่เดียวกันคือ /u01 ซึ่งอาจจะประกอบไปด้วย /dev/sdb1, /dev/sdc1 ใน vg_u01
    • ยังมีเรื่องการเพิ่มขนาดภายหลังให้ดูที่ http://portal.psu.ac.th/blog/howto/6281 ไปพลางก่อน
  • วิธีการติดตั้ง OpenSSH Server บน Windows

    อยาก ssh เข้า Windows Server เพื่อเข้าไปรัน PowerShell หรือรัน script cmd ต้องทำอย่างไร
    (โดยปกติ Windows ปัจจุบันมี OpenSSH Client ติดตั้งมาโดย Default ถ้าใครต้องการแค่จะใช้ ssh/scp command ข้ามบนความนี้ได้เลยครับ)

    Reference :
    https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse Installation of OpenSSH For Windows Server 2019 and Windows 10

    Environment :

    – Windows Server 2019 หรือ Windows 10 1809 ขึ้นไป

    • วิธีการติดตั้ง OpenSSH Server ผ่าน GUI
      เปิด Settings > Apps > Apps and Features > Manage Optional Feature
      s (Windows 10 ใช้คำว่า Optional Features)
    • วิธีการติดตั้ง OpenSSH Server ผ่าน PowerShell (Run as Administrator)

    – ตรวจสอบ Version ของ OpenSSH ที่จะลงก่อน

    Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

    – ทำการติดตั้งตาม Version ล่าสุด

    Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
    • วิธีการสร้าง Service ให้ Start OpenSSH Server โดยอัตโนมัติเมื่อเปิดเครื่องผ่าน PowerShell Run as Administrator และทำการเปิด Firewall ให้เข้าถึงได้
    Start-Service sshd
    # OPTIONAL but recommended:
    Set-Service -Name sshd -StartupType 'Automatic'
    # Confirm the Firewall rule is configured. It should be created automatically by setup. 
    Get-NetFirewallRule -Name *ssh*
    # There should be a firewall rule named "OpenSSH-Server-In-TCP", which should be enabled
    # If the firewall does not exist, create one
    New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
    
    • ทดสอบเข้าใช้งาน (สำหรับเครื่องที่ join office365 แนะนำให้เข้าผ่าน local account ครับ)
    ssh [username]@[Windows Server IP]
    • การใช้งานต้องใช้คำสั่งของ powershell นะครับ ไม่ใช่ shell script ของ linux ดังนั้นการกดออกต้องใช้คำสั่ง exit

    ในแง่เดียวกันสามารถทำ ssh tunnel ไปมาระหว่าง Windows และ Linux ได้นะครับ แต่คงจะไม่ได้เขียน Blog ในส่วนนี้ครับ แต่จะไม่มี command ssh-copy-id ใน windows ให้ใช้คงต้อง ssh-keygen แล้ว copy key ไปสร้างในเครื่อง linux เองครับ

  • การเชื่อมต่อ Dell EMC SC Series (SAN Storage) กับ Windows 2019 ด้วย iSCSI Microsoft MPIO

    ทำไมต้องเชื่อมต่อ SAN Storage ด้วย MPIO มีข้อดีอย่างไร ต้องตั้งค่าอย่างไรให้ถูกต้อง

    Reference :
    https://www.youtube.com/watch?v=hsXtfab-xNM Dell EMC SC Series Storage : Microsoft Multipath I/0 (MPIO) Best Practice
    https://downloads.dell.com/manuals/all-products/esuprt_software/esuprt_it_ops_datcentr_mgmt/general-solution-resources_white-papers3_en-us.pdf Dell EMC SC Series Storage and Microsoft Multipath I/O
    https://www.youtube.com/watch?v=Z2ICF8yzFkU How-to: Configure iSCSI MPIO on Windows Server 2012 R2
    https://www.starwindsoftware.com/blog/lacp-vs-mpio-on-windows-platform-which-one-is-better-in-terms-of-redundancy-and-speed-in-this-case-2 ISCSI: LACP vs. MPIO

    Environment :

    – Dell EMC SC5020

    – Windows Server 2019 Standard Edition

    • MPIO ย่อมาจาก Multipath Input/Output เป็น Feature ของการเชื่อมต่อไม่ว่าจะเป็น iSCSI หรือ Fiber Channel ที่ต้องการให้ Server ไม่สับสนเมื่อมีการคุยกับ Storage หลายเส้นทาง (Storage ต่อเน็ตหลายเส้น และ Server ก็ต่อเน็ตหลายเส้น รวมถึงมีหลาย IP ไม่ได้ทำแบบหลายเส้นรวมเป็น Link เดียว) ซึ่งถ้าไม่ใช้ความสามารถนี้ จะทำให้ Server เห็น Volume หรือ LUN บน Storage เป็นหลาย ๆ อันทั้งที่เป็นอันเดียวกัน
    • นอกจากนี้ MPIO ยังสามารถทำ Load Balance โดยการกระจายการเชื่อมต่อโดยมีหลายวิธีให้เลือกใช้งานเช่น Round Robin (ไล่ลำดับไปเรื่อย ๆ แล้วกลับมาเริ่มที่ connection ที่ 1 เช่น 12341234)
    • ยกตัวอย่างในกรณีไม่ได้ทำ MPIO ได้ดังรูป
    • หลังจากทำ MPIO จะได้ดังรูป
    • MPIO ไม่ได้ติดตั้งโดย Default บน Windows Server โดยสามารถติดตั้งได้จาก Server Manager GUI โดยการ Add Feature ดังรูป
    • หรือติดตั้งผ่าน PowerShell ดังนี้
    Enable-WindowsOptionFeature -Online -FeatureName MultipathIO
    • หลังจากติดตั้งเสร็จให้ Restart Server
    • สำหรับ Dell EMC SC Series ต้องทำการแก้ไข Registry ของ Windows ด้วย PowerShell Script ดังนี้
    # MPIO Registry Settings script
    # This script will apply recommended Dell Storage registry settings
    # on Windows Server 2008 R2 or newer
    #
    # THIS CODE IS MADE AVAILABLE AS IS, WITHOUT WARRANTY OF ANY KIND.
    # THE ENTIRE RISK OF THE USE OR THE RESULTS FROM THE USE OF THIS CODE
    # REMAINS WITH THE USER.
    # Assign variables
    $MpioRegPath = "HKLM:\SYSTEM\CurrentControlSet\Services\mpio\Parameters"
    $IscsiRegPath = "HKLM:\SYSTEM\CurrentControlSet\Control\Class\"
    $IscsiRegPath += "{4d36e97b-e325-11ce-bfc1-08002be10318}\000*"
    # General settings
    Set-ItemProperty -Path $MpioRegPath -Name "PDORemovePeriod" `
    -Value 120
    Set-ItemProperty -Path $MpioRegPath -Name "PathRecoveryInterval" `
    -Value 25
    Set-ItemProperty -Path $MpioRegPath -Name "UseCustomPathRecoveryInterval" `
    -Value 1
    Set-ItemProperty -Path $MpioRegPath -Name "PathVerifyEnabled" `
    -Value 1
    # Apply OS-specific general settings
    $OsVersion = ( Get-WmiObject -Class Win32_OperatingSystem ).Caption
    If ( $OsVersion -match "Windows Server 2008 R2" )
    {
     New-ItemProperty –Path $MpioRegPath –Name "DiskPathCheckEnabled" –Value 1 `
     –PropertyType DWORD `
     –Force
     New-ItemProperty –Path $MpioRegPath –Name "DiskPathCheckInterval" –Value 25`
     –PropertyType DWORD `
     –Force
    }
    Else
    {
     Set-ItemProperty –Path $MpioRegPath –Name "DiskPathCheckInterval" –Value 25
    }
    # iSCSI settings
    If ( ( Get-Service -Name "MSiSCSI" ).Status -eq "Running" )
    {
     # Get the registry path for the Microsoft iSCSI initiator parameters
     $IscsiParam = Get-Item -Path $IscsiRegPath `
     | Where-Object { ( Get-ItemProperty $_.PSPath ).DriverDesc `
     -eq `
     "Microsoft iSCSI Initiator" } `
     | Get-ChildItem `
     | Where-Object { $_.PSChildName -eq "Parameters" }
     # Set the Microsoft iSCSI initiator parameters
     Set-ItemProperty -Path $IscsiParam.PSPath -Name "MaxRequestHoldTime" `
    -Value 90
     Set-ItemProperty -Path $IscsiParam.PSPath -Name "LinkDownTime" `
    -Value 35
     Set-ItemProperty -Path $IscsiParam.PSPath -Name "EnableNOPOut" `
    -Value 1
    }
    Else
    {
     Write-Host "iSCSI Service is not running."
     Write-Host "iSCSI registry settings have NOT been configured."
    }
    Write-Host "MPIO registry settings have been configured successfully."
    Write-Host "The system must be restarted for the changes to take effect."
    • หลังจากรัน Script PowerShell ให้ Restart Server อีกรอบ
    • เพื่อให้เข้าใจง่ายขึ้นสามารถยกตัวอย่างการใช้งาน Multipath ได้ดัง Diagramในรูป
    • ตัวอย่างการตั้งค่าใน SAN Storage (Dell SC5020) โดยจะมีทั้งหมด 2 Controller ซึ่งแต่ละ Controller จะมี 4 Port
    • ซึ่งเมื่อตรวจสอบในฝั่ง Windows จะเห็นว่ามี Connection ที่เกิดจากการ Discovery โดยใส่ IP ของ ISCSI ปลายทาง จำนวน 8 Connection ซึ่งต้องเข้าไปตั้งค่าใน Target ให้มีการใช้งานแบบ multi-path ด้วยทุก Connection
    • ซึ่งเราสามารถเลือกใน Advance ได้อีกว่าจะให้เชื่อมต่อไปยัง IP หลัก IP ใด โดยแนะนำให้เลือกสลับไปตาม IP ที่มี
    • เมื่อตั้งค่าถูกต้องแล้วจะสามารถตรวจสอบได้ที่หน้า Properties จะเห็นว่ามี 2 Session
    • ซึ่งเราสามารถเลือกได้ว่าการเลือก Session ให้วิธีเลือกแบบไหน ในรูปจะเป็นแบบ Round Robin ซึ่งในกรณีมี Storage ซึ่ง Target Portal จะเป็น IP ที่เลือกในขั้นตอนก่อนหน้า
    • โดยสรุปแล้วสามารถมาดูได้ที่ Disk Management ใน Tab MPIO ว่ามี Path ในการ Active กี่ Path ถ้ามีมากกว่า 1 แสดงว่ามีการตั้งค่า Multi-Path เรียบร้อยแล้ว
    • สุดท้ายถ้าอยากรู้ว่าการตั้งค่า Work ไหมอาจจะต้องทำการตรวจสอบ Traffic ที่ Switch ว่ากระจายทุก Port ไหม หรือลองปิด Switch หรือถอดสายทิ้งสักข้าง หรือ ถอดสายที่ Server ออกทิ้งสัก Port ดูว่ายังสามารถทำงานได้หรือไม่ (ซึ่งผมไม่ได้ทดสอบ Capture มาให้ดู เพราะมีเวลาไม่มากพอให้ทดสอบ)

    สุดท้ายอาจจะงงว่าทำไปทำไมหลัก ๆ ข้อแรกคือเพื่อ Load Balance การใช้งานให้กระจายทุก Port ที่ SAN Storage ทำให้ได้ประสิทธิภาพสูงสุด (ซึ่งต้องมี Server มาต่อหลายตัว โดยการเชื่อมต่อต้องไม่ทำ link aggregation ต้อง FIX IP ต่อ Port) ข้อสองคือในกรณีที่ Port ใดมีปัญหาก็ยังสามารถใช้งานต่อได้ ซึ่งการทำ MPIO ดีกว่าการทำ Link Aggregation ในด้าน Performance ที่ทำได้ดีกว่า เพราะสามารถกระจายได้ลึกในระดับ Session (การทำ Multi Session per Connection ผ่าน Link Aggregation ทำไม่ได้เฉพาะ Windows นะครับ อาจจะทำได้ใน OS อื่น ๆ ) สามารถอ่านเพิ่มเติมผลการทดสอบได้ที่ https://www.starwindsoftware.com/blog/lacp-vs-mpio-on-windows-platform-which-one-is-better-in-terms-of-redundancy-and-speed-in-this-case-2

  • Byeๆ TLS1.0 TLS1.1

    ใช้ Firefox beta อยู่เลยจะได้รับ Feature อะไรใหม่ๆ อยู่เรื่อยๆ จนเมื่อ beta 73 กว่าๆ เริ่มเข้าเว็บบางเว็บในมหาวิทยาลัยไม่ได้ จะปรากฏหน้าดังนี้

    เว็บสามัญประจำบ้านแห่งหนึ่ง

    อ่านดูถึงได้รู้ว่าออ เค้าจะเลิก TLS1.0 และ TLS1.1 แล้วจริงประกาศไว้นานละว่าจะเลิกปีนี้!! สำหรับ Firefox จะเลิกในรุ่น 74 และ Chrome น่าจะรุ่น 81 ส่วน Microsoft และ Safari ก็จะปิดในครึ่งปีแรก ในปีนี้เช่นกัน

    https://www.techtalkthai.com/old-tls-protocol-has-been-dropped-by-all-major-browsers-in-2020/

    เอ้าเลยเช็คเว็บตัวเองสักหน่อยเริ่มจาก ทดสอบกับเว็บที่เคยได้ A+ ผลเป็นดังรูป

    ม่ายยย

    อัยย่ะละก๊ะ…. เหลือ B เพราะเปิด TLS1.0 และ TLS1.1 เอาไว้ ปิดให้ไว

    วิธีการคือ (สำหรับ Apache2)

    แก้ไขแฟ้ม /etc/apache/mod-enabled/ssl.conf หาข้อความว่า

     SSLProtocol All -SSLv3

    (บางคนอาจจะมี -SSLv2 ด้วยแต่ apache2 ไม่สนับสนุน SSLv2 โดยปริยาย (default) แล้ว) เปลี่ยนข้อความข้างต้นเป็น

    SSLProtocol All -SSLv3 -TLSv1 -TLSv1.1

    บันทึกแล้ว restart apache ให้เรียบร้อย เมื่อไปตรวจใหม่ได้ผลตามภาพ

    เย่ กลับมา A+ แล้ว จบขอให้สนุก

    เกี่ยวข้อง

    https://sysadmin.psu.ac.th/hardening-your-http-response-headers/

    https://sysadmin.psu.ac.th/เปลี่ยน-certificate/

  • การ Connect Navicat ผ่าน xampp-linux 7.3.12 บน Ubuntu 18.04

    1. Download ไฟล์ ntunnel_mysqli.php
      https://qrgo.page.link/6G6uX
    2. โยน File ชื่อว่า ntunnel_mysqli.php เข้าไปใน Server ที่ wwwroot
    3. ทดสอบโดยการเข้าเว็บบราว์เซอร์ ด้วย : 192.168.xxx.xxx/ntunnel_mysqli.php แล้วลอง login ดูว่าผ่านไหม ?
    4. เข้าไปที่โปรแกรม Navicat
    5. ไปที่เมนู Connection เลือกเอาเลยว่าต้องการ Connection แบบไหน

    6. ไปที่ General
    – Connection Name = ตั้งชื่ออะไรก็ได้
    – Host Name / IP Address = localhost
    – Port = 3306
    – User Name = root หรือ User ที่เรา Add ใน phpmyadmin
    – Password = Password ที่เรา Add ใน phpmyadmin

    7. ไปที่ HTTP
    – ติ๊กเลือก Use HTTP Tunnel
    – Tunnel URL : https://192.168.xxx.xxx/ntunnel_mysqli.php หรือ https://xxxx.com/ntunnel_mysqli.php

    8. Test Connection

    หาก Connect ไม่ผ่าน ให้เข้าไปแก้ไฟล์ my.cnf บรรทัดที่เขียนว่า skip-networking ให้ไป # ปิดใว้ แล้ว Restart Service ใหม่อีกครั้ง

    หมายเหตุ : ผมได้ทดสอบกับ xampp-linux 7.3.12 บน Ubuntu 18.04
    php 5.4 up มันจะใช้ mysqli เป็นส่วนใหญ่ เลยต้องใช้ ntunnel_mysqli

  • Open Google Calendar

    หลังจากครั้งก่อนได้แนะนำ extension สำหรับสร้างตารางนัดหมายบน Google Calendar ผ่านโปรแกรมเมล์ยอดนิยมตลอดกาล นั่นคือ Thunderbird นั่นเอง!!! อ่านได้ที่ Thunderbird Return วันนี้ก็จะมาเล่าถึง Extension อีกตัวทำงานอย่างเดียวกันแต่รอบนี้ไม่ต้องทำอะไรให้วุ่นวาย extension ชื่อเหมือนบทความคือ Open Google Calendar ขอข้ามวิธีติดตั้งเลยละกัน ติดตั้งเหมือน extension ตัวเก่ากลับไปอ่านบทความก่อนหน้าได้นะครับ

    เมื่อติดตั้งเสร็จแล้วจะมีปุ่มเพิ่มขึ้นมาที่มุมบนขวาดังรูป

    คลิกที่ Open Google Calendar แล้ว Sign In เข้าระบบให้เรียบร้อย จะได้ดังภาพ.

    Google Calendar

    สามารถเพิ่มอีเว้นท์อีไม่เว้นท์ได้เหมือนเปิดเว็บ กรั่กๆ ง่ายกว่าวิธีเก่า พอสมควรแก่การใช้งานบนเครื่องที่เราใช้คนเดียว!! ย้ำคนเดียว เพราะยังหาวิธี sign out ไม่เจอ 555

    วันนี้สั้นๆ แค่นี้ครับ จบขอให้สนุก…

  • การประยุกต์ใช้ Windows Command และ Batch File ในการจัดการไฟล์

    สืบเนื่องจากผู้เขียนได้รับโจทย์มาจากเพื่อนร่วมงาน แต่ยังไม่ได้เริ่ม งานนั้นก็ถูกยกเลิกไปอย่างรวดเร็ว แต่ในใจก็มีโซลูชันอยู่แล้วว่าจะจัดการอย่างไร จึงอยากมาบันทึกเก็บไว้ เผื่อผู้อ่านท่านอื่นๆ อาจจะนำไปใช้ประโยชน์ได้ไม่มากก็น้อย

    โจทย์ที่ว่าก็คือ ผู้ใช้มีไฟล์รูปภาพจำนวนหนึ่ง ประมาณหลายพันไฟล์

    ต้องการแยกเฉพาะรูปที่ต้องการออกมาจำนวนหนึ่ง โดยรูปที่ต้องการมีเป็นรายการอยู่ในไฟล์ excel

    วิธีการที่ง่ายที่สุดคือ เปิดไฟล์ excel นั้นขึ้นมา แล้วก็ไล่หาไฟล์รูปที่ต้องการทีละไฟล์แล้วย้ายไปไว้โฟลเดอร์อื่นจนครบ ถ้าไฟล์ที่ต้องการมีจำนวนไม่มากนัก วิธีการนี้ก็สะดวกและไม่ได้ใช้เวลานานมากจนเกินไป แต่ถ้าไฟล์ที่ต้องการมีเป็นหลักร้อยหรือพัน วิธีนี้คงไม่สะดวกแน่ๆ ผู้เขียนจึงขอแนะนำการใช้ Command และ Batch File เพื่อแก้ปัญหานี้

    ก่อนอื่นเราไปซ้อมมือกันก่อน สมมติว่าไฟล์ต้นฉบับอยู่ใน d:\sources และต้องการย้ายไฟล์ที่ต้องการไปไว้ที่ d:\destinations

    ให้เราเปิด cmd ขึ้นมา จากนั้นพิมพ์คำสั่ง

    copy d:\sources\wp_ss_20130130_0001.png d:\destinations

    คำสั่งนี้จะเป็นการ copy ไฟล์ wp_ss_20130130_0001.png ที่อยู่ใน d:\sources ไปยัง d:\destinations ซึ่งเราสามารถใช้คำสั่งนี้จากที่ไหนของเครื่องก็ได้ แต่ถ้าเราอยู่ในโฟลเดอร์ sources อยู่แล้ว เราสามารถระบุเฉพาะชื่อไฟล์เพียงอย่างเดียวก็ได้ เช่น copy wp_ss_20130130_0001.png d:\destinations

    จากความรู้ด้านบนจะเป็นการ copy ไฟล์ทีละไฟล์ ถ้าต้องการ copy หลายๆ ไฟล์ เราจะใช้สิ่งที่เรียกว่า batch file เข้ามาช่วย โดยทำตามขั้นตอนดังต่อไปนี้

    1. เปิด notepad ขึ้นมา และพิมพ์คำสั่ง

    copy wp_ss_20130130_0001.png d:\destinations
    copy wp_ss_20130130_0001.png d:\destinations

    จากนั้นเซฟเป็นไฟล์ชื่อ copy.bat ไว้ใน d:\sources นามสกุลไฟล์จะต้องเป็น .bat เท่านั้น ไม่ใช่ .txt

    2. กลับไปที่ command และพิมพ์คำสั่ง copy.bat

    จะเห็นว่า copy.bat เป็นการทำคำสั่งที่อยู่ภายใน batch file ถึงตรงนี้แล้วท่านผู้อ่านน่าจะพอเห็นแนวทางแล้วว่าเราจะ copy เฉพาะไฟล์ที่อยู่ใน excel ได้อย่างไร นั่นคือเราจะไปสร้างชุดคำสั่งการ copy จากไฟล์ excel นั่นเอง

    3. กลับไปที่ไฟล์ excel จะเห็นว่าชื่อไฟล์อยู่ในคอลัมน์ A ไปที่คอลัมน์ B และพิมพ์

    ="copy " & A1 & " d:\destinations"

    4. copy คำสั่งลงมาจนครบทุกไฟล์

    5. copy คำสั่งในคอลัมน์ B ทั้งหมดไปวางไว้ในไฟล์ copy.bat และเซฟ

    6. ไปที่ command และพิมพ์คำสั่ง copy.bat อีกครั้ง

    เป็นอันเสร็จสิ้น หวังว่าบทความประเดิมบล็อกของผู้เขียน น่าจะมีประโยชน์กับผู้อ่านทุกท่านที่หลงเข้ามาไม่มากก็น้อย

    จนกว่าจะอยากเขียนเรื่องใหม่

    สวัสดีครับ

  • การติดตั้ง Android Emulator : MuMu เพื่อใช้งานร่วมกับ Expo CLI

    กำลังพัฒนา Mobile Apps อยากได้ Android EMU สักตัวที่กินแรมน้อย ๆ เปิดโปรแกรมได้เป็น Tab เปิด ๆ ปิด ๆ โปรแกรมบ่อยไม่ต้องกดเมนูเข้าออกให้เหนื่อยต้องลอง MuMu (สาวกเกมส์ Ragnarok M ข้ามการติดตั้งได้เลยครับ คงชำนาญกันอยู่แล้ว)

    • Installation Version
      • MuMu App Player V1.1.0.2
    • ติดตั้ง MuMu App Player (เมื่อก่อนตัวติดตั้งเป็นภาษาจีนล้วนเดี๋ยวนี้มีแบบภาษาอังกฤษแล้ว)
      https://mumu.163.com/global/download/en/index.html
    • การติดตั้งจะใช้ VirtualBox ช่วยเพิ่มประสิทธิภาพด้วย
    • เปิด Play Store จากนั้น Login เหมือนมือถือ Android ปกติ (จะเห็นว่าเห็นเป็น Tab สามารถปิดโปรแกรมโดยกดกากบาทด้านบนได้เลย หรือจะสลับ App ไปมาได้อย่างง่ายดาย โดย App ไม่หยุดทำงาน)
    • ติดตั้งโปรแกรม Expo
    • เปิดโปรแกรม
    • ไปที่ Tab Profile เพื่อ Login ใครยังไม่มี Account ให้สร้างได้ที่นี่
    • ทำการ Login บน expo cli start console ด้วย
    • ปิดโปรแกรม บน MuMu เปิดใหม่อีกครั้งจะเห็น Recenly in development ขึ้น Project ที่เราพัฒนาอยู่ (Emulator อื่นอาจจะเปิด USB Debug ได้ แต่ MuMu ยังไม่รองรับ จากการทดสอบเปิดแล้วไม่ขึ้น จึงใช้วิธี Login ให้เห็น Project แทน)
    • อย่าลืมว่าต้องอยู่ Network วงเดียวกัน

    หวังว่าจะเป็นประโยชน์กับ Mobile Apps อื่นที่ต้องการนำไปใช้ทดสอบด้วยนะครับ