วันอังคารที่ 17 พฤศจิกายน พ.ศ. 2558

หลังจากติดตั้ง Visual Studio Professional 2013 แล้วแสดงข้อความ Failed to add current user to Hyper-V administrators group.

ให้เข้า Command และใช้คำสั่ง

net localgroup "Hyper-V administrators" <username> /add

ref : http://stackoverflow.com/questions/26917829/failed-to-add-current-user-to-hyper-v-administrators-group-error-when-installing

วันพฤหัสบดีที่ 5 พฤศจิกายน พ.ศ. 2558

การแสดงนามสกุลของไฟล์ใน Windows Server 2008 R2

1. ไปที่เมนูคำสั่ง Organaize > Folder and search options ใน Explorer

2. เลือกไปที่ Tab View
3. คลิก เอา check ออกจากหัวข้อ Hide extension for known file types

4. จากนั้นเลือก Apply เท่านี้ Explorer ก็จะแสดงนามสกุลไฟล์ ที่ซ่อนเอาไว้ด้วยค่าปกติ แล้ว

วันศุกร์ที่ 30 ตุลาคม พ.ศ. 2558

การตั้งค่า SQL Explorer ให้เชื่อมต่อกับ Oracle ได้

หลังจากโหลดมา ให้ ลง Oracle Instant Client ก่อน

ทำการ Add/Edit Driver ใน หน้า Create New Connection
1.  จากนั้น ทำการ Edit driver ที่ยังไมไ่ด้ลง
2. หลังจาก Edit ให้คงค่าเดิมไว้ แล้วคลิกที่ Tab Extra Class Path
3.จากนั้นให้คลิกเลือก Add JARs... แล้วเลือก ojdbc7.jar ใน Folder ของ Instance Client ของ Oracle
โดย
    3.1 คลิกเลือก Jar
    3.2 จากนั้นคลิก List Drivers จะปรากฎรายชื่อ Driver ให้เลือกในช่อง 3
    3.3 ในที่นี้เลือก oracle.jdbc.OracleDriver
    3.4 หลังจากเสร็จแล้ว คลิก Ok เพื่อจบกระบวนการ
4. ทีนี้ ในหน้าแรก เราก็จะมี Driver ที่เพิ่มเข้าไป ให้เลือกใช้ ก็ใส่ข้อมูลให้ ถูกต้อง ก็จะสามารถ ใช้งานได้

การแก้ไข เพิ่ม คำสั่ง Context menu เอง สำหรับคลิกขวาที่ไฟล์แล้วเลือก Edit with....

ในที่นี้ คือ ต้องการใช้ Notepad++ ในการแก้ไขไฟล์ แต่เจ้ากรรม  ที่ลงไป ไม่ได้สร้าง Context Menu ให้ ต้องเลือก Open with ตลอด ก็ดูจะเสียเวลามิใช่น้อย เลยต้องมาทำเอง ซึ่งทำได้ ดังนี้

1. อย่างแรก ต้องแก้ไขค่า Registry ด้วย คำสั่ง Start> Run > Regedit
2. จากนั้น ไปที่ Root HKEY_CLASSES_ROOT > * > shell
3. คลิกขวาที่ shell เลือก New > Key
4. ตั้งชื่อว่า Edit Wtih Notepadd++ หรือ ชื่ออื่นใด ซึ่งตรงนี้จะเป็นเมนูใน Context ตอนคลิกขวา
5. จากนั้น คลิกขวาที่ชื่อเมนูที่ตั้งไว้ เลือก New > Key
6. ตั้งชื่อว่า command
7.  จากนั้น Double Click ค่า Default แล้วใส่ Value Data เป็น เป้าหมาย exe ของ Notepad++
8. ลองเทสดู ด้วยการ ไปที่โฟลเดอร์ แล้วคลิกขวาที่ไฟล์ที่ต้องการแก้ดู จะพบเมนู

วันพฤหัสบดีที่ 29 ตุลาคม พ.ศ. 2558

การเปิด VT ใน Bios ใน PC, Notebook หรือ Device อื่น ๆ

HP
HP Compaq Pro 6300 Micropower

Press F10 - Before boot to enter Bios configuration

Security > System Security
Virtualization Technology (VTx) - Disabled, Enabled

วันพุธที่ 28 ตุลาคม พ.ศ. 2558

การสร้าง FTP site บน Windows 2012

* IIS เครื่องนั้น ต้องลง FTP ก่อนนะครับ

1. ไปที่ Internet Information Services (IIS) Manager
2. คลิกไปที่ Sites เลือก Add FTP Site...
3. ตั้งชื่อ FTP site name และ Directory ปลายทาง และคลิก Next
4. ตั้งค่า IP และ Port การใช้งาน SSL หากไม่ตั้งอะไรก็ Next ไป
5. เสร็จแล้ว เราจะได้ FTP site มา สามารถใช้งานได้ทันที แต่ในที่นี้ อยากจะแบ่ง พื้นที่ ตาม user คือ ไม่มี Root directory แต่ให้ user แต่ละคน login เข้ามา และเข้าไปใน Folder Root ของตนเอง จึงเลือกที่จะตั้งค่า FTP User Isolation เพิ่มเติม

6.  ใน User Isolation ตั้งค่าเป็น
Isolate users. Restrict users to the following directory:
> User name directory (diable global virtual directories)
แล้วคลิก Apply
7. จาก Option ที่ตั้งไว้ จะเป็นการแบ่ง พื้นที่ ตามชื่อ username ที่ login เข้ามา จำเป็นจะต้องสร้าง โฟลเดอร์ให้ด้วย ในกรณีที่ไ่มได้ใช้สคริปใด ๆ ช่วย
ยกตัวอย่าง ดังนี้
สมมุติว่า ตั้ง Ftp root directory ไว้ที่ c:/FTPSites
จำเป็นที่จะต้องสร้างโฟลเดอร์ชื่อ LocalUser และ Subdirectory ที่เป็นชื่อ username นั้น ๆ  เช่น
username a ก็จะได้เป็น
c:/FTPSites/LocalUser/a

การเพิ่ม user ทำได้โดย สร้าง user ตามปกติ  แต่ต้องมีการป้องกัน การรีโมทเข้าเครื่องด้วย user ที่สร้างมาด้วย เพราะโดยค่าปกติ จะมีการ Enable ให้ user ที่สร้างใหม่ สามารถ รีโมทเครื่องได้ด้วย
วิธีการนั้น ดูได้ที ่Post นี้ครับ
http://itclubth.blogspot.com/2015/10/user.html

อ้างอิงจาก
http://www.sherweb.com/blog/using-ftp-user-isolation-to-secure-iis-8-site/
เนื่องจาก ติดปัญหาพอสมควร  ส่วนใหญ่คือ ถ้าใช้ user ภายใน ต้องอย่าลืม สร้าง Folder หรือ Virtual Directories "LocalUser" นะครับ

การตั้งค่า User ที่สร้างขึ้นมา ให้ไม่สามารถรีโมทเข้ามาในเซิฟเวอร์ได้

ส่วนนี้มักจะใช้ในกรณี ที่ใช้ Windows user ในการใช้งาน FTP แล้วเราต้องการกำหนดสิทธิ์ ให้ไม่สามารถ รีโมทเข้ามาแก้ไขเครื่องได้  ทำได้ดังนี้ครับ

1. เปิด Computer Management โดยไปที่ Control Panel > Administrative Tools
2. คลิกไปที่ ตัวเลือก System Tools > Local Users and Groups > Users
3. ดับเบิลคลิกชื่อ username ที่ต้องการกำหนดสิทธิ์
4. คลิกไปที่ Tab Remote Desktop Services Profile และเช็ค Deny this user permissions to log on to Remote Desktop Session Host server ดังภาพ

การแก้ไข Password policy ให้ไม่ต้องพิมพ์ตัวอักษรแปลก ๆ ได้

1. เปิด Local Security Policy ด้วยการคลิกปุ่ม Start และ พิมพ์ secpol.msc ในช่อง run
2. เลือกไปที่ Security Settings > Account Policies> Password Policy
3. แก้ไขแต่ละหัวข้อด้วยการ ดับเบิลคลิก จะได้หน้าต่างแก้ไขค่าต่าง ๆ
4. แก้ไขค่าดังนี้ เพื่อลดความปลอดภัย และยืดหยุ่นต่อการใช้งานที่ง่ายขึ้น
หลัก ๆ จะมีดังนี้
Maximum password age : 0
เพื่อให้รหัสผ่านไม่มีวันหมดอายุ
Password must meet complexity requirements : Disabled
เพื่อไม่ให้รูปแบบต้องยากเกินไป  โดยแบบยากต้องมี อักระพิเศษ และตัวเลข ในรหัสผ่านด้วย

วันจันทร์ที่ 26 ตุลาคม พ.ศ. 2558

การติดตั้ง IIS และ FTP ลงใน Windows Server 2008 R2 เพื่อใช้ .Net และ PHP

1. ไปที่ Server Manager

2. เลือก Add Roles
3. หน้าจอเริ่มต้นขึ้นมาให้กด Next

4. หน้ารายการ Roles เลือก เช็ค Web Server (IIS) แล้วคลิก Next

5. หน้าจอคำแนะนำ ก่อนติดตั้ง IIS คลิก Next

6. เลือก ASP.Net จะมีการเลือกตัวที่เกี่ยวข้องโดยอัตโนมัติ หลักจากคลิก Add Required Role Services



7. สำหรับ PHP ต้องเลือก CGI (จะติดตั้ง PHP แบบ FastCgi โดยใช้ library non thread safe)

8. เช็ค FTP Server เพื่อติดตั้ง บริการ FTP จากนั้น คลิก Next

9. หน้าจอยืนยันการติดตั้ง Component


10. หน้าจอดำเนินการ หลังการคลิก Next

11. หน้าจอ Result ผลลัพธ์การติดตั้ง

12. ทดสอบ IIS โดยการใช้ Browser ประจำเครื่องเข้า URL  http://localhost หากขึ้นตามภาพ เป็นอันติดตั้ง IIS Server เสร็จเรียบร้อยแล้ว

13. ทดสอบ FTP โดยการเปิด IIS Manager เพื่อดูว่า FTP modules ได้ถูกติดตั้ง


วันพฤหัสบดีที่ 15 ตุลาคม พ.ศ. 2558

การตรวจสอบเครือข่าย

เนื่องจากวันนี้ มีเรื่องเข้ามาถึงการโจมตีเซิฟเวอร์บางตัว  ทำให้ต้องมีการเช็คเซิฟเวอร์ตัวเอง  ว่าโดนหรือไม่  ขอรวบรวมคำสั่งไว้ตรงนี้เลยแล้วกันนะ
การจะให้ Command Dos หรือ cmd บันทึกไฟล์เป็นข้อความได้ ต้องรันด้วยสิทธิ์ Administrator

netstat -b 5 >> c:\logs\log_20151015.txt

เป็นการใช้ netstat -b ทุก 5 วินาที (seconds) แล้วบันทึกลงใน textfile ในโฟลเดอร์ log เพื่อตรวจสอบแอพ ที่ติดต่อออกไปข้างนอก คำสั่งนี้ จะทำงานเรื่อย ๆ แล้วบันทึกลงในไฟล์ จนกว่าเราจะยกเลิก command หรือ ctrl+c เพื่อยกเลิกคำสั่ง

netstat -an

ใช้ตรวจสอบว่าเครื่องเราใช้ Port ไหนบ้าง เชื่อมต่อกับใคร สามารถบันทึกเป็น text file ได้เช่นเดียวกัน

netstat -an >> c:\logs\log_20151015.txt

เมื่อเราได้ ip เป้าหมายมาแล้ว ต่อไป เช็ค ip ว่าเป็นเครื่องไหน ที่ไหน ด้วย

nbtstat -a [ip]
สำหรับเช็คชื่อเครื่อง

หากไม่สำเร็จ ใช้
nslookup [ip]

*nslookup จะใช้ DNS ในการตรวจสอบ

หากไม่สำเร็จ ใช้
tracert [ip]

เพื่อเช็คว่า ไปไอพีนี้ ต้องผ่านอะไรไปบ้าง

หากไม่สำเร็จใช้
ping -a [ip]

*ping จะใช้ WINS และ DNS

การนับจำนวน  connection โดยใช้ netstat
netstat -a -n | find "TCP 127.0.0.1:80" | find /C "TIME_WAIT"
netstat -a -n | find "TCP" | find /C "ESTAB"

ดูข้อมูล interface
netstat -e -s

ดูข้อมูลเฉพาะโปรโตคอล
netstat -s -p tcp หรือ netstat -s -p udp

ดูการเชื่อมต่อและ process id ทุก 5 วินาที
netstat -o 5

ดูการเชื่อต่อ tcp แบบตัวเลข
-netstat -n -o





การแก้ไข Usb drive ที่ถูกซ่อนไฟล์

เนื่องจากคลิกขวา แล้วสั่งแสดงไม่ได้ ก็ให้ใช้คำสั่ง Dos ดังนี้ครับ

attrib -h -r -s /s /d [drive]:\*.*

ยกตัวอย่างเช่น usb อยู่ drive G นะครับ เราก็จะพิมพ์ว่า

attrib -h -r -s /s /d g:\*.*

แล้วกด Enter

วันพฤหัสบดีที่ 13 สิงหาคม พ.ศ. 2558

อัพเกรด Asus Zenfone 6

1. Get firmware from http://www.asus.com/Phone/ZenFone_6_A600CG/HelpDesk_Download/ 2. will got file name UL-ASUS_T00G-WW-3.23.40.60-user.zip for Model z002 rename file to UL-ASUS_T00F-WW-3.23.40.60-user.zip 3. copy zip file to root foolder in Android internalstorage 4. wait for notification to update and make sure your battery is full for 1 - hours. ref http://www.asus.com/zentalk/forum.php?mod=viewthread&tid=24328&ModPagespeed=noscript http://www.asus.com/zentalk/forum.php?mod=viewthread&tid=25868&extra=page%3D1&page=1 How to enter Asus Zenfone lollipop recovery http://www.asus-zenfone.com/2015/04/how-to-enter-asus-zenfone-lollipop-recovery.html

วันพุธที่ 22 กรกฎาคม พ.ศ. 2558

การดู Windows Product Key ในเครื่องตัวเอง โดยใช้ VBscript

อย่างแรก ตรวจสอบด้วย Script
slmgr.vbs /dli
หรือ
slmgr.vbs /dlv

เพื่อเช็ครหัส 4 ตัวท้ายของคุณเป็นรหัสอะไร ตรงหัวข้อ Partial Product Key

แต่ทั้งนี้ คำสั่งนี้ เราจะไม่ได้ รหัสทั้งหมด
เราต้องสร้าง VBscript ขึ้นมาเอง ซึ่งจากที่ค้นพบ และเทสกับ Windows 7 และ 8.1 จะมีอยู่สอบแบบ ซึ่งอาจจะต้องลองว่าแบบไหน รหัส 4 ตัวท้าย ตรงกับที่เราเช็คกับ slmgr ครับ

วิธีการคือ Copy code ไปใส่ใน Text file แล้ว save as เป็นนามสกุล .vbs ก็สามารถดับเบิลคลิกเพื่อดูได้เลยครับ

อันแรก อันนี้ ผมเทสกับ Windows 8.1 Retail ตรงคับ แต่กับ Windows 7 ไม่ตรง
   
Option Explicit



Dim objshell,path,DigitalID, Result

Set objshell = CreateObject("WScript.Shell")

'Set registry key path

Path = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\"

'Registry key value

DigitalID = objshell.RegRead(Path & "DigitalProductId")

Dim ProductName,ProductID,ProductKey,ProductData

'Get ProductName, ProductID, ProductKey

ProductName = "Product Name: " & objshell.RegRead(Path & "ProductName")

ProductID = "Product ID: " & objshell.RegRead(Path & "ProductID")

ProductKey = "Installed Key: " & ConvertToKey(DigitalID)

ProductData = ProductName  & vbNewLine & ProductID  & vbNewLine & ProductKey

'Show messbox if save to a file

If vbYes = MsgBox(ProductData  & vblf & vblf & "Save to a file?", vbYesNo + vbQuestion, "BackUp Windows Key Information") then

   Save ProductData

End If







'Convert binary to chars

Function ConvertToKey(Key)

    Const KeyOffset = 52

    Dim isWin8, Maps, i, j, Current, KeyOutput, Last, keypart1, insert

    'Check if OS is Windows 8

    isWin8 = (Key(66) \ 6) And 1

    Key(66) = (Key(66) And &HF7) Or ((isWin8 And 2) * 4)

    i = 24

    Maps = "BCDFGHJKMPQRTVWXY2346789"

    Do

        Current= 0

        j = 14

        Do

           Current = Current* 256

           Current = Key(j + KeyOffset) + Current

           Key(j + KeyOffset) = (Current \ 24)

           Current=Current Mod 24

            j = j -1

        Loop While j >= 0

        i = i -1

        KeyOutput = Mid(Maps,Current+ 1, 1) & KeyOutput

        Last = Current

    Loop While i >= 0

    keypart1 = Mid(KeyOutput, 2, Last)

    insert = "N"

    KeyOutput = Replace(KeyOutput, keypart1, keypart1 & insert, 2, 1, 0)

    If Last = 0 Then KeyOutput = insert & KeyOutput

    ConvertToKey = Mid(KeyOutput, 1, 5) & "-" & Mid(KeyOutput, 6, 5) & "-" & Mid(KeyOutput, 11, 5) & "-" & Mid(KeyOutput, 16, 5) & "-" & Mid(KeyOutput, 21, 5)

  

  

End Function

'Save data to a file

Function Save(Data)

    Dim fso, fName, txt,objshell,UserName

    Set objshell = CreateObject("wscript.shell")

    'Get current user name

    UserName = objshell.ExpandEnvironmentStrings("%UserName%")

    'Create a text file on desktop

    fName = "C:\Users\" & UserName & "\Desktop\WindowsKeyInfo.txt"

    Set fso = CreateObject("Scripting.FileSystemObject")

    Set txt = fso.CreateTextFile(fName)

    txt.Writeline Data

    txt.Close

End Function


ของ Windows 7 ผมใช้อันนี้ ตรงคับ แต่จะใช้กับ Windows 8.1 ไม่ตรง
Set WshShell = CreateObject("WScript.Shell")
MsgBox ConvertToKey(WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId"))
Function ConvertToKey(Key)
Const KeyOffset = 52
i = 28
Chars = "BCDFGHJKMPQRTVWXY2346789"
Do
Cur = 0
x = 14
Do
Cur = Cur * 256
Cur = Key(x + KeyOffset) + Cur
Key(x + KeyOffset) = (Cur \ 24) And 255
Cur = Cur Mod 24
x = x -1
Loop While x >= 0
i = i -1
KeyOutput = Mid(Chars, Cur + 1, 1) & KeyOutput
If (((29 - i) Mod 6) = 0) And (i <> -1) Then
i = i -1
KeyOutput = "-" & KeyOutput
End If
Loop While i >= 0
ConvertToKey = KeyOutput
End Function

ลองดูครับ

วันพฤหัสบดีที่ 2 กรกฎาคม พ.ศ. 2558

การ Export Import Oracle Database 10g ด้วย Data Pump

ในกรณีนี้ เป็นการ Export Data ออกจาก User หนึ่ง ไปยังอีก User หนึ่ง ซึ่งปัญหาที่พบคือ มีการ Export Import ก่อนหน้าแล้ว ด้วย Exp และ Imp แต่ คำสั่ง Imp นั้น จะไม่สามารถ Overwrite ตารางเก่าได้ หากมีการสร้างไว้แล้ว  ซึ่ง Data Pump สามารถ ทำได้ ซึ่งเป็นคำสั่งใหม่ใน Oracle Version 10g ขึ้นไป

ตัวอย่างการ Export ด้วย Datapump

set NLS_LANG=English
expdp userid=[username]/[password]@[servicename] SCHEMAS=[schema name] dumpfile=[dumpfile name].dmp logfile=[log file name].log

เช่น username และ พาส คือ u กับ p  มี service name ชื่อ mydatabase schemas เดิมชื่อ old1 จะได้ดังนี้

expdp userid=u/p@mydatabase SCHEMAS=old1 dumpfile=dumpdata.dmp logfile=dumpdata.log

จะ Export ไปชื่อไฟล์ dumpdata.dmp และมี log file dumpdata.log

this command for Export to dmp file and store in default folder.

ตัวอย่างการ Import ด้วย Datapump
set NLS_LANG=English
impdp [username]/[password]@[instance] dumpfile=[dumpfile name].dmp logfile=[log file name].log REMAP_SCHEMA=[old schema name]:[new schema name]  table_exists_action=[options for table exists]

ตัวอย่าง
impdp u/p@mydatabase dumpfile=dumpdata.dmp logfile=importdumpdata.log REMAP_SCHEMA=old1:new1  table_exists_action=replace

ในที่นี้คือ นำเข้าไฟล์ โดยบันทึก log การนำเข้าในชื่อ importdumpdata.log และเปลี่ยน schema จาก old1 เป็น new1 ถ้า มี ตารางอยู่แล้ว ให้ทำการ drop และ นำเข้าไปใหม่

สำหรับ option ของ table_exists_action มีดังนี้
TABLE_EXISTS_ACTION={SKIP | APPEND | TRUNCATE | REPLACE}


รายละเอียดต่าง ๆ สามารถดูเพิ่มเติมได้ที่ 
ref:http://docs.oracle.com/cd/B13789_01/server.101/b10825/dp_import.htm
ref:https://oracle-base.com/articles/10g/oracle-data-pump-10g

วันพุธที่ 22 เมษายน พ.ศ. 2558

ปัญหา MVC 5 ไม่สามารถ Log Off ออกได้ในบางครั้ง

สาเหตุน่าจะมาจากการเปลี่ยนชื่อ Cookie ของโปรแกรมเพื่อกัน ลอกอินข้ามแอพ แต่เป็นผลให้ ไม่สามรถ Log Off ออกได้ในบางครั้ง

แก้ได้ด้วยการ เปลี่ยน คำสั่ง ใน LogOff จาก

AuthenticationManager.SignOut();

เป็น

AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);

ลองดูแล้วก็ Work ดี จดไว้ก่อน

ref1 : http://stackoverflow.com/questions/29290120/cant-logoff-identity-mvc-5-sometimes
ref2 : http://stackoverflow.com/questions/28642284/asp-net-mvc-5-w-identity-2-2-0-log-off-not-working

วันพฤหัสบดีที่ 16 เมษายน พ.ศ. 2558

How to open MVC 2 or MVC 1 in Visual Studio 2013

Step 1: Right click on the project and click “Edit projectname.csproj”.
Step 2: In the opened file find the tag and from there delete the following GUID:
ASP.NET MVC 2: {F85E285D-A4E0-4152-9332-AB1D724D3325}
This actually works also for ASP.NET MVC 1 projects
ASP.NET MVC 1: {603c0e0b-db56-11dc-be95-000d561079b0}

Step 3: Save the file and reopen the solution in Visual Studio.


ref: http://dotnetdaily.net/tutorials/open-mvc-2-project-visual-studio-2012/

วันพุธที่ 11 มีนาคม พ.ศ. 2558

การเข้า Config EPC3825 หลังจากตั้งเป็น Bridge Mode

เจ้า Router รุ่น นี้ พอตั้งเป็น Bridge Mode แล้ว ก็เหมือนคอมเราต่อเน็ตโดยตรงเลยครับ ปัญหาคือ  ip 192.168.1.1 ที่เราใช้ Config ประจำไม่สามารถเข้าได้ละ  ก็ให้ไปใช้ IP 192.168.100.1 แทนนะครับ

วันพุธที่ 25 กุมภาพันธ์ พ.ศ. 2558

การติดตามเส้นทาง การเดินทางด้วย GPS และ Android

หากเราใช้ Android เราสามารถใช้ Location history ของ Google ได้ที่นี่ครับ แต่ต้องเปิด GPS ด้วยนะ ดูย้อนหลังได้ด้วย

https://maps.google.com/locationhistory/b/0

การแก้ไข 'java' is not recognized as an internal or external command

เนื่องจากการสั่งรันโปรแกรม ที่ต้องใช้ Java แต่ว่าไม่ได้ลง Java ไว้ในเครื่อง  ก็เลยไปหาโหลดมา  แต่ก็นั่นแหละ  เจอ Error นี้ขึ้นมาอีก  หลังจากลงแล้ว  เข้าใจว่า ต้องแก้เรื่อง Path แต่เลยมาบันทึกไว้ที่นี่ด้วยครับ

1.  อันดับแรก ไปที่ Control Panel > System and Security > System
2. จากนั้นไปที่ Advanced system settings ที่อยู่ทางด้านซ้าย
3. คลิปปุ่ม Environment Variables ใน Tab Advanced

หรือให้ง่ายกว่านั้นใช้
https://patheditor2.codeplex.com/

ให้เพิ่ม Folder bin ของจาวา เข้าไป  แล้วแต่เวอร์ชั่นที่ต้องการ ซึ่งหากเพิ่มแบบ Manual เองให้ระวังเครื่องหมายคั่นด้วยครับ หากใช้ Tool ก็ต้องให้สิทธิ์ Admin ถึงจะแก้ไขได้นะ  แต่ง่ายกว่าเยอะเลย

หลังจากแก้เสร็จแล้ว เราต้อง Restart เครื่องครับ

สามารถ ทดสอบได้ด้วย การรันคำสั่ง java  -version ดูครับ หลังจากที่ รีสตาร์ทเครื่องแล้ว

วันจันทร์ที่ 23 กุมภาพันธ์ พ.ศ. 2558

การติดตั้ง Geny Motion และการใช้งาน

เนื่องจากเคยใช้ Emulator Bluestack มาก่อน ซึ่งไม่เคยลงอะไรอย่างอื่นผ่านเลย และ Bluestack ก็ลงง่ายมาก เพียงแต่ว่า หลังๆ จะออกแนวสแปมซะเยอะ เช่นต้องลงแอพสปอนเซอร์ หรือทำงานบางอย่างไม่ได้อีก เลยลองหาตัวอื่นดู สุดท้าย มาตกอยู่ที่ตัวนี้ Geny Motion สืบเนื่องจากว่า เล่นเกม Dragon Ace แล้วไปพบในบอร์ด พูดถึงการลง Bluestack Andy และ Geny ซึ่งโดยส่วนตัว Andy เคยลงแล้วแต่ไม่ชอบ ส่วน Geny ไม่เคยลงผ่านเลย ติดตลอด จนกระทั่งด้วยความอยากเล่นเกมนี้ เลยทำได้จนได้ มาดูกันว่าทำอย่างไร
1. ไปที่เว็บ https://www.genymotion.com แล้วโหลด ตัวเวอร์ชั่นฟรี และเลือกโหลดแบบเต็ม (จะมีอีกแบบคือ ถ้ามี Virtual Box อยู่แล้ว ก็เลือกโหลดเฉพาะ Geny ได้)
2. หลังจากติดตั้งแล้ว ก็ให้เปิด Virtual Box ค้างไว้ และเปิด Geny Motion ขึ้นมา สำหรับวินโดส์ 8.1 ต้องให้แน่ใจว่า ไม่ได้ลง Hyper-V เอาไว้นะครับ เช็คได้จาก Turn Windows features on or off ใน Program and Features ของ Windows (เนื่องจากเป็น Developer ถ้าตัว Mobile SDK ของ Windows จะลงตัวนี้ให้มาอยู่แล้ว ถ้าจำเป็นต้องใช้ทำงาน ที่ทำกัน คือ ตั้ง Dual Boot คือ Boot นึงลง Hyper-V ไว้ อีก Boot จะไม่ได้ลง Hyper-V ครับ)
3. หลังจากนั้น ต้องทำการ Setting ค่า ของ Virtual Box และ Geny Motion กันก่อน เนื่องจากผมรัน ครั้งแรก (หลังจากแก้ปัญหา Virtual Box Start ไม่ได้เพราะติด Hyper-V) ก็ไม่สามารถ Start ได้ เพราะ มี Error แจ้งว่า Unable to create virtual device: Failed to attach disk. งงเลยทีนี้ หลังจากงมอยู่นาน ซึ่งบางคนบอกว่า ถ้ารันด้วย สิทธ์ของ แอดมิน จะแก้ปัญหาได้ แต่ลองแล้วก็ไม่เวิร์ค เลยคิดว่าน่าจะเป็นเพราะ Directoy ที่ใช้สร้างตัวเครื่อง ไม่น่าจะใช้ได้ เลยต้องไปตั้งค่า Directory ใหม่ ดังนี้

3.1 ในส่วนของ Geny Motion ตั้งค่าที่ Setting > VirtualBox > Virtual device settings เป็น Directory ที่เราสามารถเขียนได้ โดยไม่ต้องใช้สิทธ์แอดมิน สำหรับผมคือสร้างโฟลเดอร์ใหม่ใน Drice C แล้วสร้าง Sub folder แล้วเลือกเอาโฟลเดอร์นั้นครับ
3.2 ในส่วนของ VirtualBox นั้น ให้ไปที่ File > Preferences > General > Default Machine Folder อันนี้ ผมก็ตั้งไว้ที่เดียวกับ Geny Motion เมื่อกี้เลย แต่สร้าง Folder แยกกันสักหน่อย

4. การให้โปรแกรมทำงานได้นั้น อย่างแรก VirtualBox ต้องถูกเปิดก่อนเสมอ แล้วจึงค่อยเปิด Geny Motion นะครับ
5. หลังจากเปิดมาครั้งแรก เราจะยังไม่มี VM ใด ๆ Geny Motion จะให้สร้างเครื่องแรกนะครับ ส่วนตัว ผมเลือก Android 4.3 (ก่อนหน้านี้เลือกตัวอื่นแล้วไม่เวิร์คแฮะ เนื่องจากต้องการลง Google Play ด้วย) รุ่น Google Nexus 7 - 4.3 API 18 - 800x1280

ติดตั้งเสร็จแล้ว ให้ไปที่ รูปประแจทางขวามือ ตั้งค่าแรม เป็น 2048 MB ครับ จริง ๆแล้ว เพียงแค่นี้ ก็จะได้ Android Emulator ไว้เล่นแล้วล่ะนะ เวลาลงโปรแกรม ก็ลาก apk มาลงได้เลย

แต่ผมต้องการใช้ Google play เพื่อจะให้โปรแกรมอัพเดทตัวเองได้ด้วย เลยต้องทำต่อดังนี้
1. โหลดตัวโปรแกรม ARM Translation Installer v1.1 มาติดตั้ง ติดตั้งง่ายมาก คือโหลดมาแล้วลากมาวางใน Emu ได้เลย ARM Translation Installer v1.1 (Mirror
2. หลังจาก Flash เสร็จแล้ว ให้ปิดและเปิดใหม่ และโหลด Google play มาลง โหลดได้จากที่นี่ http://wiki.cyanogenmod.org/w/Google_Apps#Downloads สำหรับ Android 4.3 นั้นจะใช้ตัว 20130813 นะครับ ส่วน 4.2 นั้นจะใช้ 20130812 ครับ ส่วนเวอร์ชั่น 4.5 ผมลองแล้วไม่เวิร์ค เลยต้องมา 4.3 ครับ (ตอนนั้นนะ) 
3. เหมือนเดิม ก็ลาก Google app มาลงใน VM ก็จะทำการ Flash เหมือน Arm Translation จากนั้นรอจนเสร็จ ก็ปิดและเปิดใหม่อีกรอบครับ 4. จากนั้น จะมี App Google Play มาอยู่ในรายการ ก็คลิกเข้าไปตั้งค่า และก็จะใช้ Google Play ได้ตามปกติครับ

ref
http://forum.xda-developers.com/showthread.php?t=2528952

 ส่วนอันนี้เป็นวิธีแก้ปัญหา หากเจอ VMBox ฟ้องว่าไม่สามารถตั้งค่า DHCP ได้ ให้เอาออกแล้วตั้งค่าใหม่ ตามนี้ครับ

http://stackoverflow.com/questions/26552902/genymotion-virtual-box-cant-obtain-ip-correct-dhcp

http://stackoverflow.com/questions/18641423/not-able-to-start-genymotion-device

วันศุกร์ที่ 20 กุมภาพันธ์ พ.ศ. 2558

การเขียน MVC Codefirst Migration กับ Database ที่มีอยู่แล้ว ไม่ว่า Database นั้น จะสร้างด้วยวิธีไหน

สืบเนื่องจากย้ายโค้ดมาเขียนในโปรเจคใหม่ ทำให้ชื่อเปลี่ยน หลายอย่างเลยต้องเปลี่ยนด้วย ทีนี้ มีปัญหาต้องปรับปรุง Database เพิ่มเติม แต่ติดเมื่อใช้คำสั่ง Add-Migration จะเป็นการสร้าง Database ใหม่ทั้งหมดเลย ซึ่งไม่ใช่ ไม่สามารถไปรันได้ เพราะมี Database อยู่แล้ว เลยต้องทำดังนี้ 1. ใช้คำสั่ง Add-Migration InitialCreate -IgnoreChanges 2. Update-database เพื่อ Snapshort Database สถานะนี้ก่อน 3. จากนั้น ค่อยเพิ่ม Model หรือ Properties ที่ต้องการแล้วทำตามขั้นตอนปกติ ด้วยคำสั่ง Add-Migration ธรรมดา มีอีกวิธีหนึ่งก็คือ ใช้ วิธี add-migration แบบเดิม เพียงแต่ต้องไป Comment out Code ที่สร้างขึ้นมาเอง สำหรับตารางและความสัมพันธ์ที่สร้างไปแล้ว