ให้เปิด .csproj และ เพิ่ม
<PropertyGroup>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
</PropertyGroup>
ให้เปิด .csproj และ เพิ่ม
<PropertyGroup>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
</PropertyGroup>
ต้อง Set database ทีทำงานให้ support ก่อน
ALTER DATABASE MYDB SET COMPATIBILITY_LEVEL = 130
CREATE TABLE [dbo].[Orders](
[OrderID] [int] NOT NULL,
[CustomerName] [nvarchar](50) NULL,
[OrderDetails] [nvarchar](max) NULL)
INSERT INTO Orders (OrderID, CustomerName, OrderDetails)
VALUES (1, 'John test',
'{"items": [{"name": "Widget", "quantity": 2},
{"name": "Gizmo", "quantity": 4}],
"total": 99.99}')
INSERT INTO Orders (OrderID, CustomerName, OrderDetails)
VALUES (2, 'betty ok',
'{"items": [{"name": "Pen", "quantity": 3},
{"name": "Gizmo", "quantity": 2}],
"total": 88}')
ทดสอบ query
SELECT *
FROM Orders
WHERE EXISTS (
SELECT *
FROM OPENJSON(OrderDetails, '$.items')
WHERE JSON_VALUE(value, '$.name') = 'Widget'
)
Simple ใน Section File
Source: "z:\srcbuild\2024\*"; DestDir: "{app}\2024"; Flags: ignoreversion createallsubdirs recursesubdirs
ระวัง เรื่อง MsgBox จะเป็น text,type,MB_OK .. ถ้าไม่ถูกจะ type mismatch และ ถ้าใช้ {userappdata} จะใส่ Rorming แล้ว
There are two optional parameters that are supported by all sections whose entries are separated into parameters except for [Languages], [Types], [Components] and [Tasks]. These are:
The name of a function that is to be called once just before an entry is installed. The function must either be a custom function in the [Code] section or a support function.
May include a comma separated list of parameters that Setup should pass to the function. Allowed parameter types are String, Integer and Boolean. String parameters may include constants. These constants will not be automatically expanded. If you want to pass an expanded constant, there's one special support function that may be called from within a parameter list for this: ExpandConstant.
[Files] Source: "MYPROG.EXE"; DestDir: "{app}"; BeforeInstall: MyBeforeInstall Source: "A\MYFILE.TXT"; DestDir: "{app}"; BeforeInstall: MyBeforeInstall2('{app}\A\MYFILE.TXT') Source: "B\MYFILE.TXT"; DestDir: "{app}"; BeforeInstall: MyBeforeInstall2('{app}\B\MYFILE.TXT') Source: "MYPROG.CHM"; DestDir: "{app}"; BeforeInstall: Log('Before MYPROG.CHM Install')
The name of a function that is to be called once just after an entry is installed. The function must either be a custom function in the [Code] section or a support function.
May include a comma separated list of parameters that Setup should pass to the function. Allowed parameter types are String, Integer and Boolean. String parameters may include constants. These constants will not be automatically expanded. If you want to pass an expanded constant, there's one special support function that may be called from within a parameter list for this: ExpandConstant.
[Files] Source: "MYPROG.EXE"; DestDir: "{app}"; AfterInstall: MyAfterInstall Source: "A\MYFILE.TXT"; DestDir: "{app}"; AfterInstall: MyAfterInstall2('{app}\A\MYFILE.TXT') Source: "B\MYFILE.TXT"; DestDir: "{app}"; AfterInstall: MyAfterInstall2('{app}\B\MYFILE.TXT') Source: "MYPROG.CHM"; DestDir: "{app}"; AfterInstall: Log('After MYPROG.CHM Install')
All BeforeInstall and AfterInstall functions must not have a return value.
A BeforeInstall or AfterInstall function isn't called if Setup already determined the entry shouldn't be processed.
A BeforeInstall or AfterInstall function for a [Files] section entry using a wildcard but not the external flag is called once per file matching the wildcard, instead of once per entry. Use CurrentFileName to check for which file the function is called.
Here is an example of a [Code] section containing the functions used above. Functions CurrentFileName and Log are support functions and therefore not included in this [Code] section.
[Code] procedure MyBeforeInstall(); begin MsgBox('About to install MyProg.exe as ' + CurrentFileName + '.', mbInformation, MB_OK); end; procedure MyBeforeInstall2(FileName: String); begin MsgBox('About to install ' + FileName + ' as ' + CurrentFileName + '.', mbInformation, MB_OK); end; procedure MyAfterInstall(); begin MsgBox('Just installed MyProg.exe as ' + CurrentFileName + '.', mbInformation, MB_OK); end; procedure MyAfterInstall2(FileName: String); begin MsgBox('Just installed ' + FileName + ' as ' + CurrentFileName + '.', mbInformation, MB_OK); end;
[Files] Source: "source_path\pebim.addin"; DestDir: "{app}"; Flags: ignoreversion [Code] procedure CurStepChanged(CurStep: TSetupStep); var UserAppDataPath: string; RevitPluginPath: string; PebimAddinSource: string; PebimAddinDest: string; begin if CurStep = ssPostInstall then begin // Construct the path to the user's AppData\Roaming folder UserAppDataPath := ExpandConstant('{userappdata}'); // Define the path to the Revit plugins folder RevitPluginPath := UserAppDataPath + '\Autodesk\Revit\Addins\2017'; // Define the source and destination paths for pebim.addin PebimAddinSource := ExpandConstant('{app}\pebim.addin'); PebimAddinDest := RevitPluginPath + '\pebim.addin'; // Check if the Revit plugins folder exists if DirExists(RevitPluginPath) then begin // If the folder exists, copy pebim.addin to it if not FileCopy(PebimAddinSource, PebimAddinDest, False) then begin MsgBox('Failed to copy pebim.addin to the Revit plugins folder.', mbError, MB_OK); end; end; end; end;
ใน Chatgpt pro มี Feature ที่จำกัด ในการ Chat คือ ตัว ปรกติ จะดูรูป และ run python ได้ ในตัว แต่ จะสร้างweb ไม่ได้ กรณีที่มี Graph ต้องการใ้ห้สร้าง ให้เริ่มจาก Chat ที่เป็นธรรมดาก่อน (gpt4) แล้ว ส่งรูปให้ดูและให้เขียน code ด้วย python เมื่อได้สิ่งที่ต้องการ แล้ว ไปสร้าง chat ที่2 เป็น Plugins webdev และ ส่ง code pythonให้สร้าง ใหม่เป็น html(web) ก็จะได้ ง่ายๆ โดยใช้ 2 chat
Hatch แล้วรูปไม่เหมือน กันโดย ความแน่นของเส้นต่างเป็นเท่าๆ
ปัญหาเกิดจาก ตัวแปร โบราณมาก ที่มาจาก Autocad รุ่นเก่าที่ ให้หน่วยนัดเป็น Imperial กับMetric เท่านัน ให้แก้ ตัวแปร MEASUREMENT เป็น 1
แก้ ปัญหา ปิด Process ใน OSX mac ที่ไม่ต้องการ ด้วย Crontab
vi /Applications/Scripts/wallpapperkiller.sh
เพิ่ม
pgrep WallpaperVideoExtension | xargs kill -9
# pgrep WallpaperImageExtension | xargs kill -9
date > /Applications/Scripts/wallpaperkiller.log
Save , exit, run
crontab -e