<style> .first{ color: red} .content{color:blue} </style> <div class="first">Text 1</div> <div>Text 2</div> <p class="first">Text 3</p> <div class="content">Text 4</div>
|
|
|
|
| Selector | نسخه CSS |
Yes | Yes | Yes | Yes | Yes | .class | 1 |
2- #id
<style> #pass { color: red; } </style> <input type="password" id="pass"/>
|
|
|
|
| Selector | نسخه CSS |
Yes | Yes | Yes | Yes | Yes | #id | 1 |
3- E
<style> div { color: red; } </style> <div>Text 1</div> <p>Text 2</p> <div>Text 3</div>
|
|
|
|
| Selector | نسخه CSS |
Yes | Yes | Yes | Yes | Yes | E | 1 |
4- *
<style> * { color: red; } </style> <div>Text 1</div> <input type="text" value="Text 2"/> <select> <option>Option 1</option> <option>Option 2</option> <option>Option 3</option> <option>Option 4</option> </select>
|
|
|
|
| Selector | نسخه CSS |
3.1 | 9.6 | 7.0 | 2.0 | 4.0 | * | 2 |
5- S1 S2
<style> div span { color:red } </style> <div> <h1>Text 1</h1> <span>Text 2</span> <p> <span>Text 3</span> <div>Text 4</div> </p> <span>Text 5</span> </div>
|
|
|
|
| Selector | نسخه CSS |
Yes | Yes | Yes | Yes | Yes | S1 S2 | 1 |
6- S1>S2
<style> div>span { color:red } </style> <div> <h1>Text 1</h1> <span>Text 2</span> <p> <span>Text 3</span> <div>Text 4</div> </p> <span>Text 5</span> </div>
|
|
|
|
| Selector | نسخه CSS |
Yes | Yes | 7.0 | Yes | Yes | S1>S2 | 2 |
7- S1+S2
<style> h1+p { color: red; } </style> <div> <h1>Text 1</h1> <p>Text 2</p> <div>Text 3</div> <p>Text 4</p> <h1> <p>Text 5</p> </h1> <p>Text 6</p> </div>
|
|
|
|
| Selector | نسخه CSS |
Yes | Yes | 7.0 | Yes | Yes | S1+S2 | 2 |
8- S1~S2
<style> div ~ p { color: red; } </style> <div> <h1>Text 1</h1> <p>Text 2</p> <div>Text 3</div> <p>Text 4</p> <h1> <p>Text 5</p> </h1> <p>Text 6</p> </div>
|
|
|
|
| Selector | نسخه CSS |
3.2 | 9.6 | 7.0 | 3.5 | 4.0 | S1~S2 | 3 |
9- S1!>S2
<style> div!>span { border: 1px solid red; } </style> <div> <h1>Text 1</h1> <div> <span>Text 2</span> <h1>Text 3</h1> <p>Text 4</p> </div> <div>Text 5</div> </div>
|
|
|
|
| Selector | نسخه CSS |
No | No | No | No | No | S1!>S2 | 4 |
10- S1 /attribute/ S2
<style> label /for/ input { color: red; } </style> <label for="user">User Name:</label> <input type="text" id="user"/> <label>Password:</label> <input type="password" id="pass"/>
|
|
|
|
| Selector | نسخه CSS |
No | No | No | No | No | S1 /attribute/ S2 | 4 |
Microsoft has announced that the .NET Core 2.0 will be considered "end of life" and thus no longer supported as of October 1, 2018. .NET Core 2.0 is considered a non-LTS release, and as such Microsoft only commits its support for three months after a successor has been released. In this case, with .NET Core 2.1 having been released May 31, .NET Core 2.0’s end has come.
INSERT INTO tableName VALUES ( '{ "name": "User1", "age": 41 }' );
INSERT INTO tableName VALUES ( JSON_ARRAY( JSON_OBJECT( "id", 1, "name", "User1", "age", 31, "skills", JSON_ARRAY("JS", "DB", "Git"), "address", JSON_OBJECT( "country", "Iran", "city", "Tehran") ), JSON_OBJECT( "id", 2, "name", "User2", "age", 31, "skills", JSON_ARRAY("C#"), "address", JSON_OBJECT( "country", "Iran", "city", "Sanandaj" ) ) ) );
UPDATE experiments.tableName SET jsonData = JSON_ARRAY_APPEND(jsonData, '$[1].skills', 'JS', '$[1].skills', 'DB', '$[1].skills', 'Kotlin' ) -- ["C#", "JS", "DB", "Kotlin"]
UPDATE experiments.tableName SET jsonData = JSON_ARRAY_INSERT(jsonData, '$[1].skills[4]', 'TS') -- ["C#", "JS", "DB", "Kotlin", "TS"]
UPDATE experiments.tableName SET jsonData = JSON_INSERT(jsonData, '$[1].address.location', JSON_OBJECT('phone', 8989898))
UPDATE experiments.tableName SET jsonData = JSON_REPLACE(jsonData, '$[1].address.location.phone', 12345656)
UPDATE experiments.tableName SET jsonData = JSON_REMOVE(jsonData, '$[1].address')
UPDATE experiments.tableName SET jsonData = JSON_SET(jsonData, '$[1].address', JSON_OBJECT('country', 'Iran', 'city', '-', 'phone', 12345 )); /* { location: { "city": "-", "phone": 12345, "country": "Iran" } } */ UPDATE experiments.tableName SET jsonData = JSON_SET(jsonData, '$[1].address.city', 'Tehran'); /* { location: { "city": "-", "phone": 12345, "country": "Iran" } } */ UPDATE experiments.tableName SET jsonData = JSON_SET(jsonData, '$[1].address.postcode', '0098'); /* { location: {"city": "Tehran", "phone": 12345, "country": "Iran", "postcode": '0098' } } */
SELECT JSON_EXTRACT(jsonData, '$[1].address.city') FROM experiments.tableName; -- "Tehran" SELECT JSON_UNQUOTE(JSON_EXTRACT(jsonData, '$[1].address.city')) FROM experiments.tableName; -- Tehran
SELECT jsonData -> '$[1].address.city' FROM experiments.tableName; -- "Tehran"
SELECT jsonData ->> '$[1].address.city' FROM experiments.tableName; -- Tehran
SELECT jsonData ->> '$[1].address.city' FROM experiments.tableName WHERE jsonData ->> '$[1].address.city' = 'Tehran';
SELECT JSON_MERGE_PRESERVE('{ "id": "1", "name": "Product One", "price": 12.45, "discount": 10, "rating": 4, "category": ["fashion", "men"], "tags": ["fashion", "men", "jacket", "full sleeve"] }', '{ "id": "2", "name": "Product Two", "price": 30, "discount": 0, "rating": 3, "category": ["fashion", "men"], "tags": ["fashion", "men", "jacket", "full sleeve"] }');
{ "id": ["1", "2"], "name": ["Product One", "Product Two"], "tags": [ "fashion", "men", "jacket", "full sleeve", "fashion", "men", "jacket", "full sleeve" ], "price": [12.45, 30], "rating": [4, 3], "category": ["fashion", "men", "fashion", "men"], "discount": [10, 0] }
SELECT JSON_MERGE_PATCH('{ "id": "1", "name": "Product One", "price": 12.45, "discount": 10, "rating": 4, "category": ["fashion", "men"], "tags": ["fashion", "men", "jacket", "full sleeve"], "sku": "asdf123" }', '{ "id": "2", "name": "Product Two", "price": 30, "discount": 0, "rating": 3, "category": ["fashion", "men"], "tags": ["fashion", "men", "jacket", "full sleeve"] }');
{ "id": "2", "sku": "asdf123", "name": "Product Two", "tags": ["fashion", "men", "jacket", "full sleeve"], "price": 30, "rating": 3, "category": ["fashion", "men"], "discount": 0 }
OpenCVSharp #16
طراحی classifier سفارشی تشخیص خودروها
برای طراحی یک تشخیص دهندهی سفارشی مبتنی بر الگوریتمهای Machine learning، نیاز به تعداد زیادی تصویر داریم. در اینجا از بانک تصاویر خودروهای «UIUC Image Database for Car Detection» استفاده خواهیم کرد. در این بسته، یک سری تصویر positive و negative را میتوان ملاحظه کرد. تصاویر مثبت، تصاویر انواع و اقسام خودروها هستند (550 عدد) و تصاویر منفی، تصاویر غیر خودرویی (500 عدد)؛ یا به عبارتی، هر تصویری، منهای تصاویر خودرو میتواند تصویر منفی باشد.
ایجاد فایل برداری از تصاویر خودروها
در ادامه یک فایل متنی را به نام carImages.txt ایجاد میکنیم. هر سطر این فایل چنین فرمتی را خواهد داشت:
pos/pos-177.pgm 1 0 0 100 40
در ادامه فایل متنی دیگری را به نام negativeImages.txt جهت درج اطلاعات تصاویر منفی، ایجاد میکنیم. اینبار هر سطر این فایل تنها حاوی مسیر تصویر مدنظر است:
neg/neg-274.pgm
private static void createCarImagesFile() { var sb = new StringBuilder(); foreach (var file in new DirectoryInfo(@"..\..\CarData\CarData\TrainImages").GetFiles("*pos-*.pgm")) { sb.AppendFormat("{0} {1} {2} {3} {4} {5}{6}", file.FullName, 1, 0, 0, 100, 40, Environment.NewLine); } File.WriteAllText(@"..\..\CarsInfo\carImages.txt", sb.ToString()); } private static void createNegativeImagesFile() { var sb = new StringBuilder(); foreach (var file in new DirectoryInfo(@"..\..\CarData\CarData\TrainImages").GetFiles("*neg-*.pgm")) { sb.AppendFormat("{0}{1}", file.FullName,Environment.NewLine); } File.WriteAllText(@"..\..\CarsInfo\negativeImages.txt", sb.ToString()); }
opencv_createsamples.exe -info carImages.txt -num 550 -w 48 -h 24 -vec cars.vec
پس از اجرای این دستور، فایل cars.vec تولید خواهد شد؛ با این خروجی:
Info file name: carImages.txt Img file name: (NULL) Vec file name: cars.vec BG file name: (NULL) Num: 550 BG color: 0 BG threshold: 80 Invert: FALSE Max intensity deviation: 40 Max x angle: 1.1 Max y angle: 1.1 Max z angle: 0.5 Show samples: FALSE Original image will be scaled to: Width: $backgroundWidth / 48 Height: $backgroundHeight / 24 Create training samples from images collection... Done. Created 550 samples
"c:\opencv\build\x86\vc12\bin\opencv_createsamples.exe" -vec cars.vec -w 48 -h 24
در این پنجرهی باز شده، تصاویر بعدی و قبلی را میتوان با دکمههای arrow صفحه کلید، مشاهده کرد.
تبدیل فایل برداری تصاویر خودروها به trained data
تا اینجا موفق شدیم بیش از 500 تصویر خودرو را تبدیل به یک فایل برداری سازگار با OpenCV کنیم. اکنون نیاز است، این اطلاعات پردازش شده و trained data مخصوص الگوریتمهای machine learning تولید شود. اینکار را توسط برنامهی opencv_traincascade.exe انجام خواهیم داد. این فایل نیز در پوشهی opencv\build\x86\vc12\bin بستهی اصلی OpenCV موجود است.
دستور ذیل در پوشهی data، بر اساس اطلاعات برداری cars.vec و همچنین تصاویر منفی مشخص شدهی در فایل negativeImages.txt، با تعداد هر کدام 500 عدد (این عدد را توصیه شدهاست که اندکی کمتر از تعداد max موجود مشخص کنیم) و تعداد مراحل 2 (هر چقدر این تعداد مراحل بیشتر باشد، فایل نهایی تولید شده دقت بالاتری خواهد داشت؛ اما تولید آن به زمان بیشتری نیاز دارد) اجرا میشود. در اینجا featureType به LBP یا Local binary Pattern، تنظیم شدهاست. این الگوریتم از Haar cascade سریعتر است.
"E:\opencv\bin\opencv_traincascade.exe" -data data -vec cars.vec -bg negativeImages.txt -numPos 500 -numNeg 500 -numStages 2 -w 48 -h 24 -featureType LBP
کدهای کامل این مثال را از اینجا میتوانید دریافت کنید.
The State of Developer Ecosystem 2023
This report is the culmination of insights gathered from 26,348 developers from all around the globe. The world of developers is vast and diverse, making it an endlessly fascinating realm for exploration and learning. Through yearly research initiatives like this one, our goal is to explore this captivating world, uncover valuable insights about developers and their craft, and then share these facts with the community.
نگارش نهایی SQL Server 2016 منتشر شد
Today we announced the general availability of SQL Server 2016, the world’s fastest and most price-performant database for HTAP (Hybrid Transactional and Analytical Processing) with updateable, in-memory columnstores and advanced analytics through deep integration with R Services. Software applications can now deploy sophisticated analytics and machine learning models in the database resulting in 100x or more speedup in time to insight, compared to deployments of such models outside of the database.
ng build --prod
// environment.ts environment variables export const environment = { production: false, APIEndpoint: 'https://dev.endpoint.com' }; // environment.prod.ts environment variables export const environment = { production: true, APIEndpoint: 'https://prod.endpoint.com' };
import { environment } from './../environments/environment';
const APIEndpoint = environment.APIEndpoint;
// environment.staging.ts environment variables export const environment = { production: true APIEndpoint: "https://staging.endpoint.com" }; // environment.beta.ts environment variables export const environment = { production: true, APIEndpoint: "https://beta.endpoint.com" };
projects -> yourappname -> architect -> build -> configurations
"configurations": { "production": { "fileReplacements": [ { "replace": "src/environments/environment.ts", "with": "src/environments/environment.prod.ts" } ], "optimization": true, "outputHashing": "all", "sourceMap": false, "extractCss": true, "namedChunks": false, "aot": true, "extractLicenses": true, "vendorChunk": false, "buildOptimizer": true, "serviceWorker": true } }
"with":"src/environments/environment.prod.ts"
"with":"src/environments/environment.staging.ts"
"configurations": { "production": { // ... }, "staging": { "fileReplacements": [ { "replace": "src/environments/environment.ts", "with": "src/environments/environment.staging.ts" }], "optimization": true, "outputHashing": "all", "sourceMap": true, "extractCss": false, "namedChunks": false, "aot": false, "extractLicenses": true, "vendorChunk": false, "buildOptimizer": true, "serviceWorker": true } }
//for staging environment ng build --configuration=staging //for beta environment ng build --configuration=beta
//for production environment ng build --prod //for dev environment ng build
using System.ComponentModel.DataAnnotations; namespace Core3xSharedResource.Models.Account { public class RegisterModel { [Required(ErrorMessage = "Please enter an email address")] // -->> from the shared resources [EmailAddress(ErrorMessage = "Please enter a valid email address")] // -->> from the shared resources public string Email { get; set; } [Required(ErrorMessage = "The {0} field is required")] [Display(Name = "User Name")] public string UserName { get; set; } } }
<?xml version="1.0" encoding="utf-8"?> <root> <data name="Please enter an email address" xml:space="preserve"> <value>لطفا ایمیلی را وارد کنید</value> </data> <data name="Please enter a valid email address" xml:space="preserve"> <value>لطفا ایمیل معتبری را وارد کنید</value> </data> <data name="The {0} field is required" xml:space="preserve"> <value>{0} را تکمیل کنید</value> </data> <data name="User Name" xml:space="preserve"> <value>نام کاربری</value> </data> </root>
ضمن اینکه اگر کسی بخواهد کار جدی اعتبارسنجی را در Web API انجام دهد بهتر است از Fluent Validation استفاده کند (که تبدیل به یک استاندارد برای آن شدهاست).