\

Facebook


วันพฤหัสบดีที่ 15 กุมภาพันธ์ พ.ศ. 2561

เอา cmd ของกูคืนมา (กู้ชีพ cmd ใน WIN10)



เมื่ออัพเดต Win10 สิ่งที่ตามมาคือการอัพเกรดซอฟแวร์ให้เข้ากับความปลอดภัย และปรังปรุง ฟีเจอร์ต่างๆให้ทันสมัยตามยุค ดังนั้นเราจึงควร update windows ให้ใหม่อยู่เสมอ (ป้องกันไวรัสด้วย) นั้นคือ best practice แต่สิ่งที่ตามมาเเละน่ารำคาญใจผมอย่างนึงคือ จะเอา cmd ผมไปไหน เเล้วดันเอามาเเทนที่ Power Shell ซะอย่างงั้น แบบนี้ยอมไม่ได้

ถ้าถามว่าตัวไหนดีกว่า ผมพูดเลยว่า Power shell เพราะหลายๆคำสั่งพัฒนาไปไกลเเล้ว เช่น curl หรืออีกหลายคำสั้งที่คนจับ Terminal Linux มาก่อนรู้สึกใช่แน่นอน แต่สำหรับผม ไม่ได้ต้องการ feature เทพระดับนั้น เพราะลำพังเเค่ command prompt ก็สามารถ รันคำสั่งได้มากมาย จำพวก nodejs / npm ก็ไร้ปัญหา แถวด้วยความเร็วระดับสุดขีด เเล้วมีเหตุผลอะไรที่ต้องไปใช้ของใหม่ที่ช้าเต่า ตอบสนองช้า


เข้าเรื่อง มาเปลี่ยนแปลงกัน งานนนี้ต้องใช้ การแก้ registry เข้ามาช่วย ระเลงเลย

ไปที่ RUN > regedit 

1. มองหา HKEY_CLASSES_ROOT\Directory\shell\cmd แล้วเพิ่ม key "NoWorkingDirectory" เป็น REG_SZ ส่วน value ปล่อยว่าง
2. เพิ่มอีกคีย์ ชื่อ "ShowBasedOnVelocityId" ประเภท REG_DWORD ตั้งค่า เป็น 639bc8
3. ทำข้อ 1 - 2 ซ้ำอีกครั้งแแต่เปลี่ยน directory เป็น HKEY_CLASSES_ROOT\Directory\Background\shell\cmd ให้ครบทุกคีย์

ลอง ปิดเพื่อเซฟ เเล้วกด shift + คลิกขวา บนพื้นที่ว่างบนหน้า explorer สังเกตุจะเห็น command  โผล่ขึ้นมาเเล้ว


ถ้าอยาก ซ่อน Shell หล่ะ ??

ง่ายเเสนง่ายแค่เปลี่ยน คีย์ ต่อไปนี้ที่
HKEY_CLASSES_ROOT\Directory\shell\cmd\PowerShell
และ HKEY_CLASSES_ROOT\Directory\Background\shell\PowerShell
นั้นคือ ShowBasedOnVelocityId เปลี่ยนเป็น HideBasedOnVelocityId เเล้วคงค่า value ไว้เหมือนเดิม

จบ.. ง่ายเเสนง่าย ยินดีต้อนรับการกลับมาของ CMD เทพเจ้า

บางคนแก้ registry ไม่ได้ เพราะไร้ permission 


ก่อนเเก้ก็ไปเพิ่มตัวเองก่อน คือ ในหน้า Registry Editor ไป Edit > Permission > Advance เเล้วแทป  Auditting กด change เพิ่มชื่อตัวเองลงไป เเค่นี้ก็เเก้ได้ละ

บาย see you later!



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

แก้ปัญหา Shutdown ไม่ลง "This App is Preventing Shutdown or Restart"



การ Shutdown หลังใช้งาน PC/ Notebook ระบบ Windows เสร็จทำให้เครื่องใช้งานอยู่กับเราได้นานกว่าการ sleep หรือ Hibernate เพราะจะมีการเขียนข้อมูลที่เก็บไว้จากแรมเข้าสู่ Harddisk หลายๆโปรแกรมในปัจจุบันมีการทำงานที่เบื้องหลัง run in background เพื่อตอบสนองการใช้งานได้ทันที Snagit ก็เป็นหนึ่งในนั้น ที่เวลาผมจะ shutdown เมื่อไหร่ ตัง Win10 จะต้องฟ้องหน้าจอประมาณนี้ "มีแอฟเปิดค้างไว้นะ จะกลับไปดูก่อนหรือชัทดาว์นมันทีหล่ะ" ซึ่งถ้าเรามั่นใจว่าปิดโปรแกรมทุกอย่างเเล้ว มันก็น่ารำคาญนิดๆนะ ทำไม Windows ไม่ auto close ให้เลย

วันนี้จะมาสอนวิธีการปิดไอ้คำสั่งแสนฉลาดนี้แหละ เพราะมันน่ารำคาญซะมากกว่า 

ก่อนอื่นไปที่ Regedit ปล. ถ้าเป็นสมัยก่อนจำได้ว่า guru จะแนะนำให้ backup registry ก่อนทำการแก้ไข เพราะถ้าเกิดปัญหาก็จะสามารถ rollback กลับไปใช้การตั้งค่าเเบบเดิมก่อนแก้ อารมณ์เหมือน restore นั้นแหละเเต่เท่าที่ผมแก้ regitry มานักต่านัก ไม่เคยเจอเลยแหะที่แก้เเล้วเครื่องรวนจนเกิดปัญหา

ปล. สอง ขอบ่นหน่อย Win10 ขอแท้ อัพเดตบ่อยมาก ปล่อยตัวอัพเดตออกมาเดือนละครั้งเลยแหละ ผมโดน minor change มาแต่รู้สึกเลยว่าคอมถูกล้าง registry ใหม่ อย่าเช่น power shell ที่ติดมาพร้อมกับ context menu แทนที่ CMD ในตำนานเรียบร้อย แถมเเก้รีจีสทรีแล้วไม่หายด้วยนะ อันนี้งงเเต่ฝากไว้ก่อน >> เเค่จะบอกว่าอะไรที่เคยแก้มันอาจโดนคืนค่าหลังจากอัพเดตวินโดว์นะจ้ะ

เข้าเรื่อง 

1. Run > regedit เพื่อเปิด Registry Editor
2. ไปที่ folder นี้  HKEY_CURRENT_USER\Control Panel\Desktop
3. ทางด้านขวามือ เพิ่มคีย์ประเภท string ชื่อ AutoEndTasks แก้ไขช่อง Data ให้เป็น 1



ลอง Shutdown / Restart เพื่อดูผล

จบจร้า



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

3 Plugins ฟรีสำหรับ Visual Studio 2017 ที่ DEV ทุกคนควรมีไว้ในครอบครองแบบ must have


เขียนโปรแกรมสาย .NET จำเป็นต้องใช้  Visual Studio อย่างแน่นอนซึ่งการทำงานบน tool ตัวนี้นับว่ายอดเยี่ยมอยู่แล้วเพราะเค้าโดดเด่นด้าน snippet c# ที่ครบครันทันใจ หรือโหมด DEBUG ที่มาพร้อมกับการทำ break point ให้เราสามารถเช็คค่าตัวแปรได้อย่างง่ายดาย ตอนนี้ Microsoft ออกเวอร์ชั่น 2017 มาได้สักพักแล้ว ผมเลยอยากอัพเดตปลักอินที่ดีต่อใจ ให้งานเราไว้ขึ้น


อันดับแรกให้เข้าไปที่เว็บไซด์ https://marketplace.visualstudio.com/ ซึ่งจะเป็นสถานที่รวบรวม plugin แนวๆไว้มากมาก เพียงเเค่ค้นหาจากคีย์เวิร์ดที่เกี่ยวข้อง ก็อาจจะเจอของดีได้ ถ้าเข้าไป search

แล้วแนะนำให้เพิ่ม search filter คือ version : vs2017 และ price : free เพื่อเอาเฉพาะปลั้กอินฟรีมาใช้งานกัน vs ตัวใหม่นี้เท่านั้น

ตัวแรกที่อยากแนะนำเป็น plugin ที่ดังมาเเล้วใน version ก่อนๆจนถึงปัจจุบันก็ยังมีการพัฒนาต่อให้ใช้


1 Highlight all occurrences of selected word การใช้งานก็ง่ายดาย หลังจากติดตั้งและ restart vs เรียบร้อยเเล้ว เพียง "ดับเบิ้ลคลิกที่" ตัวแปร หรือ ชื่อเมทธอด ก็จะแสดงไฮไลท์สีเขียวขึ้นทันทีทุกจุดที่มีอักษรในไฮไลท์เหมือนกันทั้งหน้า document จัดว่าง่ายเเละสะดวกมาก เเต่จริงๆเเล้วใน vs2017 ก็สามารถทำได้เช่นกันโดยไม่ต้องพึ่งปลั้กอิน โดยการ ดับเบิ้ลคลิกตัวแปรที่ต้องการแล้วต่อด้วย ctrl + F เพื่อค้นหา ก็จะแสดงไฮไลท์สีส้มขึ้นมาเช่นเดียวกัน


2. Ctrl+Click Go To Definition ตัวนี้จัดว่าเด็ดแนะนำและบอกต่อ ลองคิดสภาวะการทำงานปกติที่เราสงสัยค่าตัวแปร หรือสงสัยว่าาฟังชั่นนั้นทำงานยังไง เเล้วต้องกด F12 เพื่อ go to definition เพื่อเปิด

อีก tab ไปเช็คโค๊ดอีกทีหนึ่ง พอได้ความก็กด back กลับหรือกดแท็ปที่ต้องการกลับ ซึ่งจัดว่าช้ามาก ถ้าลงปลักอินตัวนี้จะสามารถกด ctrl + click ที่เมทธอด/ฟังชั่นที่เราสนใจ เเล้วมันจะแสดง pop up เล็กๆมาเพื่อแสดงโค๊ดใน

ฟังชั้นนั้นอีกทีนึง แต่ตัวนี้ผมแอบเจอปัญหาว่าตอนที่ใช้งานร่วมกับ Highlight all occurrences ตัวนี้จะมีช่วงเอ๋อๆ ไปบ้างคือคลิกได้บ้างไม่เข้าบ้าง ทำให้อารมณ์เสียพอควร ต้องลบ Highlight all
occurrences ออกก่อนถึงจะทำงานสมบูรณ์


3 Solution Error Visualizer ตัวนี้ไม่ต้องอธิบายมากดูจากรูปแล้วเข้าใจเลย กล่าวคือมันจะขีดเส้นใต้สีแดงที่ไฟล์ที่มีปัญหา รวมถึง folder หรือชื่อโปรเจกที่ภายใต้มันเกิด error ขึ้น และสามารถ filter เพื่อ

เลือกเอาเฉพาะไฟล์เจ้าปัญหาออกมาอีกด้วย แต่ error จะหมายถึง complier ไม่ผ่านเท่านั้นนะครับ พวกไฟล์ js หมดสิทธิ์

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

วันอังคารที่ 22 สิงหาคม พ.ศ. 2560

วิธีปลด Table Lock ใน SQL SERVER 2008R2


เคยเจอไหม เวลา SELECT ข้อมูลจาก database เเล้วมันหมุนไม่หยุด ไม่ใช้เพราะ query ทำงานนานเเต่อาจเป็นเพราะ table กำลังโดน lock กล่าวคือ process ก่อนหน้านั้นยังทำงานไม่เสร็จ ผู้ใช้คนอื่นจึงยังแตะต้อง ตารางนัน้ไม่ได้ แล้ววิธีปลด lock ต้องทำยังไงหล่ะ

กันก่อนแก้ 

ป้องกันการล็อกตารางในโดยใช้คำสั่ง WITH (NOLOCK) ถ้าใช้  SQL Server 2008R2 ก็ใช้คำสั่งสั้นๆ (NOLOCK) ตามหลังการ SELECT ยกตัวอย่างเช่น


SELECT TOP 100 * FROM dbo.product WITH (NOLOCK)


ถ้าล็อคไปแล้วแก้ไขโดย ค้นหาก่อนว่ามี PROCESS ไหนจองอยู่จากตาราง sys.dm_tran_locks เช่น


SELECT * FROM sys.dm_tran_locks

  WHERE resource_database_id = DB_ID()

  AND resource_associated_entity_id = OBJECT_ID(N'dbo.product');


ถ้ามี record เเสดงว่า process จอง Table อยู่ จัดการมันซะ มองหา process ID แล้วรันคำสั่ง


KILL {PROCESS_ID}

ลองซีเล็กอีกที พบว่าไม่เหลือเร็คคอดละ
จบงาน

[VS 2017] ReportViewer เทพออกรายงานตลอดกาลของ .Net


เวลาทำเว็บไปได้สักพักจนเริ่มมีคนใช้งานเยอะชึ้น user จะเริ่มถามหารายงาน สรุปยอด ผลงานเเต่ละวัน ซึ่งโจทย์ที่ได้มาจะเป็นแบบนี้ "ช่วยทำโมดูลรายงาน สรุปยอดให้หน่อย เอาที่สามารถค้นหาได้แล้วพิมพ์ออกมาเป็น Excel หรือไฟล์ PDF ได้ด้วยนะ" ครบเลย.. ถ้าเป็นเมื่อก่อนผมจะเขียนหน้า แสดงรายงานตามผลการค้นหา แล้วใช้ lib อีกตัวมาปั้นไฟล์ Excel อีกทีหนึ่ง

มันก็โอเคแต่เสียเวลาสัสๆ ทั้งเวลาเขียนโปรแกรม และเวลาตอนออกเอกสาร ดังนั้นเพื่อแก้ปัญหาเรื่องเวลา ถ้าใช้ .Net ผมอยากแนะนำให้รู้จัก ReportViewer แล้วชีวิตจะง่ายขึ้น

มันเป็นโมดูลหนึ่งของ Reporting Service ที่อยู่ใน .Net ตั้งเเต่ยุค Web Form จนมาถึงยุค MVC แล้วโมดูลนี้ก็ยังไม่ตาย มีคนเอามาประยุกใช้โดยเอา MVC ครอบ WebForm อีกทีหนึ่งเพื่อใช้งาน module ReportViwer ซึ่ง version ปัจจุบันที่ผมคือ 14.0 ซึ่งหน้าตามันจะดูขาวๆโมเดิลขึ้นมาหน่อย

ชอบตรงไหน 

ตรงที่โยน List, DataTable เข้าไปใน datasource ตารางก็โพล่แล้ว จัดว่าง่าย
ตรงที่มีปุ่ม download Excel หรือ PDF มาให้เลยไม่ต้องเขียนเพิ่ม

เกลียดมันที่ 

ต้องใช้ไฟล์ rdlc เป็น template เอกสาร แล้วไอ้ไฟล์นี้ต้องแก้ใน Visual Sutio ผ่าน Report Designer
ต้องมี Model มารองรับทุก DataSet ที่แสดงในรายงาน

เริ่มเลยขี้เกียจพิมพ์!! 

1 ไปที่โปรเจค์ MVC สร้าง Controller มาใหม่ สร้าง Action มาใหม่แล้วสร้าง View ว่างๆมา บลาๆๆ
2. สร้างโฟลเดอร์ใหม่ใต้โปรเจคชื่อ Report ข้างในนั้น Add New Item.. เลือก WebForm C# ตั้งชื่อว่า ViewReport.aspx
3. ไปที่ package management พิมพ์

Install-Package Microsoft.ReportingServices.ReportViewerControl.WebForms

หรือ NuGet :
"ReportViewerControl.WebForms"

4. ไปที่ไฟล์ ViewReport.aspx ใส่โค๊ดที่หัว


<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>


5.ใส่ ScriptManagerControl
6. เพิ่มโมดูล ReportViewer


<rsweb:ReportViewer ID="ReportViewer1" runat="server" ProcessingMode="Remote">

<ServerReport ReportPath="" ReportServerUrl="" />

</rsweb:ReportViewer>


คราวนี้เราจะ design ไฟล์ template แล้วถ้าใช้  VS 2017 เหมือนผมให้ถามกูเกิ้ลว่า "Microsoft Rdlc Report Designer for Visual Studio" แล้ว download มา install

สร้าง RDLC กัน

1. Add new Item.. > ค้นหา Report เเล้วเลือก Report ตั้งชื่อไฟลล์ว่า reportTemplate.rdlc 
2. เพิ่ม Add New Item.. > Visual C# > Data > DataSet ตั้งชื่อ dsMapper.xsd แล้วสร้าง column ใหม่สองอันชื่อ firstname (string) , surname (string)
2. ดับเบิ้ลคลิกไฟล์ rdlc ใต้ folder DataSet กดสร้างไหม เลือก dsMapper มาเป็น DataSource
3. เเล้วเพิ่มตารางลงในเอกสร้าง insert > table ลากคอลัมจาก folder DataSet มาวาง จัดทรงให้สวย



แสดงรายงาน ก้อปโค๊ดข้างล่าง ไปไว้ใน ViewReport.aspx.cs


DataTable table = new DataTable();

            table.Columns.Add("FirstName", typeof(string));

            table.Columns.Add("SurName", typeof(string));



            // Here we add five DataRows.

            table.Rows.Add("ชิน", "ชยุต");

            table.Rows.Add("Chayut", "Chin");

            table.Rows.Add("Hydralazine", "Christoff");

            table.Rows.Add("Combivent", "Janet");

            table.Rows.Add("Dilantin", "Melanie");



            if (!IsPostBack)

            {

                string ReportFile = HttpContext.Current.Request.PhysicalApplicationPath

                + "Report\\reportTemplate.rdlc";

                ReportViewer1.LocalReport.ReportPath = ReportFile;

              



                var rp = new ReportParameter("rp_name", "หัวเรื่อง".ToString());

                ReportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp });

              

                /// add more sheet

                ReportDataSource rds = new ReportDataSource("DataSet1", table);

                ReportViewer1.LocalReport.DataSources.Add(rds);

                ReportViewer1.LocalReport.Refresh();

            }


พอกด รันโปรเจค หน้ารายงานจะขึ้นละ


อยากให้ดู web.config ส่วนที่เพิ่มมาคือ


ทีนี้ถ้าอยากใช้ใน MVC ก็ครอบ ViewReport.aspx ด้วย iFrame ซะ จำไอ้ View ว่างๆข้อแรกได้ไหม ใส่โค๊ดข้างล่างนี้ลงไป เช่น


<iframe src="~/Report/ViewReport.aspx?@ViewBag.queryStr" width="100%" height="410px"></iframe>


จบงาน..

วันอังคารที่ 15 สิงหาคม พ.ศ. 2560

[ASP.NET] วิธีเข้ารหัส connectionStrings ในไฟล์ web.config ให้อ่านไม่ออก


ปกติหลังจากเราสร้างเว็บแอปเสร็จเรียบร้อยแล้ว เมื่อจะส่ง deploy สิ่งหนึ่งที่ควรระมัดระวังคือ username และ password ของ DB Account ใน connection string ที่อยู่ภายในไฟล์ web.config ที่โชว์ทั้งตัวเลขตัวอักษรอย่างไม่เกรงใจใคร เรียกได้ว่าเมื่อมีใครเข้ามาแอบเปิดไฟล์นี้ดูก็สามารถขโมยข้อมูลเหล่านี้ออกไปได้อย่างง่ายดาย วิธีป้องกันคือการเข้ารหัสมันซะ

สคลิปที่เราใช้มีชื่อว่า aspnet_regiis ซึ่งซ่อนตัวอยู่ภายในโฟล์เดอร์ของเฟรมเวิร์ค 4.0 ตามพาทนี้ C:\Windows\Microsoft.NET\Framework\v4.0.30319 ถ้าไม่เจอก็ให้ install .NET framwork 4 ก่อนครับ

ไปเพิ่ม path ใน environment ก่อน จะได้เรียกสคิปได้


เข้าไปที่ Control Panel > System and Security > System เลือก Advanced System settings แล้วเลือก Environment Variables มองหาพาแนล System variables แล้วแก้ไขค่า Path เพิ่ม C:\Windows\Microsoft.NET\Framework\v4.0.30319\ เข้าไป


หลังจากนั้นเปิด command line ขึ้นมาด้วย Administrator แล้วใส่คอมมานนี้ลงไปเพื่อเข้ารหัส section "connectionStrings" ที่อยู่ในไฟล์ web.config


aspnet_regiis -pef "connectionStrings" "D:\PathTo\File"


อย่าลืมเปลี่ยนพาท "D:\PathTo\File" ให้เป็นพาทจริงที่บรรจุไฟล์ .config


หลังจากนั้นถ้าขึ้นข้อความว่า Succeeded! แปลว่าเข้ารหัสสำเร็จ ทดลองเปิดไฟล์ดูจะพบว่าถูกเพิ่มส่วน EncryptedData เพื่อใส่ CipherData ขึ้นมาเป็นอันเสร็จสิ้น

ถ้าต้องการถอดรหัสคืน ทำไง?

อย่างง่าย แค่พิมพ์ command นี้ลงไป


aspnet_regiis -pef "connectionStrings" "D:\PathTo\File"


จบ

วันศุกร์ที่ 4 สิงหาคม พ.ศ. 2560

แก้ไข PDF ออนไลน์ไม่ต้องพึ่งโปรแกรมเสียเงิน



เป็นความอารมณ์เสียอย่างหนึ่งเมื่อต้องแก้งาน PDF แล้วเครื่องเราไม่มี software สำหรับแก้ ซึ่งตัวเสียเงินดีๆเห็นจะเป็น Acrobat Reader Pro แต่ตามสเตปโปรแกรมเมอร์ไส้แห้ง ใช้ของฟรีที่ดีต่อไป วันนี้จะมาแนะนำเว็บแก้ไขไฟล์พีดีเอฟออนไลน์แบบดีงามพระรามเก้า

Online PDF Editor ( BETA )

สามารถเข้าใช้งานได้ที่หน้าเว็บ https://www.sejda.com/pdf-editor


ถึงแม้จะเป็นเวอร์ชั่น ทดลอง แต่ฟีเจอร์สามารถใช้ได้เต็มๆ ไม่มีโฆษณากวนใจ และเครื่องมือหยิบจับใช้งานง่าย ด้วยรูปลักษณ์เว็บที่ดูสะอาดสะอ้านทำให้ หา tool ต่างๆได้ภายในไม่กี่วิ

ลงรายละเอียดเครื่องมือเเต่ละตัว

1. Text : ใส่อักษร
2. Link : ใส่ลิ้งสู่เว็บไซด์ เป็นกรอบเหลี่ยม คลุมส่วนที่จะคลิก อันนี้ผมบั๊ค มันไม่เป็นสี่เหลี่ยมปกติ
3. Forms : เพิ่มเครื่องหมาย ถูก ผิด จุด
4. Image : เพิ่มรูป
5. Sign : เพิ่มลายเซ็น ก็รูปอีกนั้นแหละ
6. Whiteout : ระบายขาวส่วนที่เลือก
7. Annotate : เพิ่มลักษณะอักษร เช่น ขีดกลาง
8. Shapes : เพิ่มรูปวงกลมหรือสี่เหลี่ยม แก้สีได้ด้วย เเต่มีสีให้เลือกจำกัด

ข้อดี 
1. ไม่ต้องลงโปรแกรมให้หนังเครื่อง
2. เครื่องมือเเก้เอกสาร 
3. คุณภาพไฟล์ไม่ถูกลดทอน

ข้อเสีย
1. ต้องต่ออินเตอร์เน็ตทุกครั้งเวลาใช้งาน
2. ใส่ annotation ไม่ได้
3. Object ที่ใส่จะกลายเป็นรูปลอยบนเอกสาร


เครื่องมือนี้ มีไว้ก็จบงานได้ ผมมักใช้ whiteout เพื่อระบายเก็บบางส่วนที่ไม่ต้องการแสดง จบเเล้วกด save เพื่อดาว์นโหลดไฟล์เอกสารได้เลย 

May be like this posts