Since around 2010 I have been running mail servers for myself and other organisations. In this post my notes on how I generally approach this are described. It shows how to set up a modern mail server capable of handling e-mail for multiple domains on Debian 12 “Bookworm”.
This is still a motherfucking website.
And it's more fucking perfect than the last guy's.
Seriously, it takes minimal fucking effort to improve this shit.
This video will show how to use a #RetroTINK 4K or 5x to convert your analog media such as VHS and LaserDisc to digital. It’ll also show WHY it’s a good choice for many of those scenarios, especially digitizing home movies.
//rgb 8 bits
int r = 255, g = 255, b = 255;
//sRGB (r', g' et b')
double rp = 0.0, gp = 0.0, bp = 0.0;
//L
double luma = 0.0;
convertir ici la couleur de fond, peu importe la méthode et la source, et stocker les composantes RGB (valeurs entières sur 8 bits, donc de 0 à 255 pour chaque composante) dans r, g et b.
//Rec.709
//luma = 0.2126 * r + 0.7152 * g + 0.0722 * b;
//Rec.601
//luma = 0.299 * r + 0.587 * g + 0.114 * b;
//Relative luminance from sRGB
//https://www.w3.org/TR/WCAG20/relative-luminance.xml
rp = r / 255.0;
gp = g / 255.0;
bp = b / 255.0;
if (rp <= 0.03928) rp = rp / 12.92; else rp = Math.Pow((rp + 0.055) / 1.055, 2.4);
if (gp <= 0.03928) gp = gp / 12.92; else gp = Math.Pow((gp + 0.055) / 1.055, 2.4);
if (bp <= 0.03928) bp = bp / 12.92; else bp = Math.Pow((bp + 0.055) / 1.055, 2.4);
luma = (0.2126 * rp) + (0.7152 * gp) + (0.0722 * bp);
//http://www.w3.org/TR/WCAG20/#contrast-ratiodef
return luma > 0.179 ? "#000000" : "#ffffff";
À noter :
Avec Rec.2020 :
luma = 0.2627 * r + 0.678 * g + 0.0593 * b
À noter aussi :
Pour plus d'infos : https://www.itu.int/rec/R-REC-BT.2020-2-201510-I/en
Okay folks, I completely understand the security reasons behind this error message, but sometimes, we do need a workaround... and here's mine. It uses ASP.Net (rather than JavaScript, which this question was based on) but it'll hopefully be useful to someone.
Our in-house app has a webpage where users can create a list of shortcuts to useful files spread throughout our network. When they click on one of these shortcuts, we want to open these files... but of course, Chrome's error prevents this:
Not allowed to load local resource: <URL>
Originally, my webpage was attempting to directly create an <a href..> element pointing at the files, but this produced the "Not allowed to load local resource" error when a user clicked on one of these links.
<div ng-repeat='sc in listOfShortcuts' id="{{sc.ShtCut_ID}}" class="cssOneShortcutRecord" >
<div class="cssShortcutIcon">
<img ng-src="{{ GetIconName(sc.ShtCut_PathFilename); }}">
</div>
<div class="cssShortcutName">
<a ng-href="{{ sc.ShtCut_PathFilename }}" ng-attr-title="{{sc.ShtCut_Tooltip}}" target="_blank" >{{ sc.ShtCut_Name }}</a>
</div>
</div>
The solution was to replace those <a href..> elements with this code, to call a function in my Angular controller...
<div ng-click="OpenAnExternalFile(sc.ShtCut_PathFilename);" >
{{ sc.ShtCut_Name }}
</div>
The function itself is very simple...
$scope.OpenAnExternalFile = function (filename) {
//
// Open an external file (i.e. a file which ISN'T in our IIS folder)
// To do this, we get an ASP.Net Handler to manually load the file,
// then return it's contents in a Response.
//
var URL = '/Handlers/DownloadExternalFile.ashx?filename=' + encodeURIComponent(filename);
window.open(URL);
}
And in my ASP.Net project, I added a Handler file called DownloadExternalFile.aspx which contained this code:
namespace MikesProject.Handlers
{
/// <summary>
/// Summary description for DownloadExternalFile
/// </summary>
public class DownloadExternalFile : IHttpHandler
{
// We can't directly open a network file using Javascript, eg
// window.open("\\SomeNetworkPath\ExcelFile\MikesExcelFile.xls");
//
// Instead, we need to get Javascript to call this groovy helper class which loads such a file, then sends it to the stream.
// window.open("/Handlers/DownloadExternalFile.ashx?filename=//SomeNetworkPath/ExcelFile/MikesExcelFile.xls");
//
public void ProcessRequest(HttpContext context)
{
string pathAndFilename = context.Request["filename"]; // eg "\\SomeNetworkPath\ExcelFile\MikesExcelFile.xls"
string filename = System.IO.Path.GetFileName(pathAndFilename); // eg "MikesExcelFile.xls"
context.Response.ClearContent();
WebClient webClient = new WebClient();
using (Stream stream = webClient.OpenRead(pathAndFilename))
{
// Process image...
byte[] data1 = new byte[stream.Length];
stream.Read(data1, 0, data1.Length);
context.Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", filename));
context.Response.BinaryWrite(data1);
context.Response.Flush();
context.Response.SuppressContent = true;
context.ApplicationInstance.CompleteRequest();
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
And that's it.
Now, when a user clicks on one of my Shortcut links, it calls the OpenAnExternalFile
function, which opens this .ashx file, passing it the path+filename of the file we want to open.
This Handler code loads the file, then passes it's contents back in the HTTP response.
And, job done, the webpage opens the external file.
Phew ! Again - there is a reason why Chrome throws this "Not allowed to load local resources
" exception, so tread carefully with this... but I'm posting this code just to demonstrate that this is a fairly simple way around this limitation.
Just one last comment: the original question wanted to open the file "C:\002.jpg
". You can't do this. Your website will sit on one server (with it's own C: drive) and has no direct access to your user's own C: drive. So the best you can do is use code like mine to access files somewhere on a network drive.
answered Jun 23, 2017 at 8:04
Mike Gledhill
La série Z chez KMC est une série bas de gamme dont la durabilité est très faible moins de 1000kms dans mon cas. Elle ne conviendra que pour des vélos pour enfants ou adultes n'effectuant que peu de kilomètres.
Pour une meilleur durabilité il faudra privilégier la série X qui offre une meilleur durabilité (3/5), et idéalement les séries X-SL et X-EL (4/5) et le top DLC (5/5) toujours chez KMC mais ces 2 dernières n'ont pas la référence 3/8 vitesses...
Préférez donc à minima la X8 plutôt que cette Z8 mais elle n'est pas en rayon chez Decathlon, il serait sage de la rajouter au catalogue car une chaîne usée diminue la durée de vie de toute la transmission, il est donc économiquement beaucoup plus rentable de mettre des chaînes haut de gamme même sur des vélos bas de gamme qui roulent beaucoup (en conjonction avec une huile de qualité et des nettoyages fréquent bien sûr).
Je ne recommande donc pas cette chaîne à la faible durée de vie qui pourrait vous coûter cher à long terme sur vous avalez de la borne...
Yoann
Blue Screen of Death Color Codes: HEX, RGB, and CMYK. Find hex, RGB and CMYK color values of some favorite shades of Blue Screen of Death.
BLUE SCREEN OF DEATH
HEX COLOR: #0827F5;
RGB: (8,39,245)
CMYK: (97,84,0,4)
Shades and Variations of Blue Screen of Death:
Complementary Colors to Blue Screen of Death:
Avec DossierFacile, créez un dossier de location en ligne complet et vérifié par l'Etat pour trouver votre appartement ou votre logement.
Montez un dossier de location en béton pour trouver le logement de vos rêves.
DossierFacile vous aide à constituer un dossier de location numérique de qualité pour mettre toutes les chances de votre côté.
Ajoutez un filigrane à n'importe quel document
L’ajout d’un filigrane sur vos documents est une bonne pratique mais certains organismes peuvent avoir besoin d’un document vierge (banques, services publics, etc.)
https://schemaspy.readthedocs.io/en/latest/installation.html
et enfin
java -jar schemaspy-6.2.4.jar -dp mssql-jdbc-12.6.1.jre11.jar -t mssql17 -host $SQLServer -port $PORT -db $DataBase -u $DBUser -p $DBPwd -hq -o $OutRep -connprops encrypt\\=false
En remplaçant (ou en définissant) :
À noter :
-connprops encrypt\\=false
est utilisé pour ne pas avoir l'erreur de connexion, blablabla tls.
-t mssql17
pour avoir la compatibilité avec SQL Server 2017, 2019 et 2022.
Pour exclure des tables, ajouter : -I "regex".
par exemple,
-I "(aa_|bb_).*"
Pour exclure des colonnes (relations, pk/fk) : ajouter -X "regex"
par exemple,
-X "table.column"
I've been reading up on the GUI situation for C# on linux and while it seems obvious that there is no support for Forms (or Windows Forms I guess) on Linux, there seems to be a lot of confusion for me regarding the GUI development. For context, I have just recently begun to learn C# and was looking to practice some simple commands while also trying to make a functional GUI with buttons that will execute some commands for me. I'm not exactly sure what next steps to take because any forums / wikis regarding this topic usually go like "Is it possible" while someone on the other end replies "Just use C++ lol".
Would really appreciate any help and especially some beginning point or links for me to go to so I can start learning all of this. Loving C# so far!
--
Réponses :
Également proposés :
Ajouter dans une feuille de style la propriété suivante :
body {
transform: rotate3d(0, 1, 0, 180deg);
}
Et admirer le résultat :)
On your local machine publish your project by running the following from the project folder:
$ dotnet publish -c Release -o ../_deploy
Create a website folder on the server:
$ mkdir -p /var/www/YOUR-WEBSITE
And copy the contents of ../_deploy from your machine to /var/www/YOUR-WEBSITE/ on the server.
Change the owner of your website’s directory so it would belong to NGINX’s user (www-data):
$ chown -R www-data:www-data /var/www/
Create a systemd config for Kestrel instance:
$ nano /etc/systemd/system/kestrel-YOUR-WEBSITE.service
Edit it like that:
[Unit]
Description=YOUR-WEBSITE
[Service]
WorkingDirectory=/var/www/YOUR-WEBSITE/
ExecStart=/usr/bin/dotnet /var/www/YOUR-WEBSITE/YOUR-WEBSITE.dll
Restart=always
RestartSec=10
SyslogIdentifier=dotnet-YOUR-WEBSITE
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target
Enable and start it:
$ systemctl enable kestrel-YOUR-WEBSITE.service
$ systemctl start kestrel-YOUR-WEBSITE.service
You can check its status:
$ systemctl status kestrel-YOUR-WEBSITE.service
If everything is okay, then it will show something like that:
● kestrel-YOUR-WEBSITE.service - YOUR-WEBSITE
Loaded: loaded (/etc/systemd/system/kestrel-YOUR-WEBSITE.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2017-08-10 11:30:09 UTC; 1s ago
Main PID: 15628 (dotnet)
Tasks: 14
Memory: 25.4M
CPU: 1.380s
CGroup: /system.slice/kestrel-YOUR-WEBSITE.service
└─15628 /usr/bin/dotnet /var/www/YOUR-WEBSITE/YOUR-WEBSITE.dll
Install NGINX:
$ apt-get install nginx
Now, there are 2 options how NGINX can send requests to Kestrel: via TCP or via Unix socket.
Your Program.cs:
// ...
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseUrls("http://localhost:5000/")
.UseStartup<Startup>();
// ...
NGINX config (/etc/nginx/sites-available/default):
# ...
server {
listen 80;
listen [::]:80;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
# ...
This should be better in terms of performance as there is no TCP overhead. Even if there was no performance impact, on a local machine “talking” through Unix socket simply makes more sense than communicating over TCP.
Your Program.cs:
// ...
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseLibuv()
.ConfigureKestrel(
(context, serverOptions) =>
{
// /var/www/YOUR-WEBSITE
string root = Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().Location
);
// if we are (behind NGINX) and on Linux, then can use sockets
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
// path to socket has to be absolute
string socket = Path.Combine(root, "kestrel.sock");
serverOptions.ListenUnixSocket(socket);
}
else
{
serverOptions.Listen(IPAddress.Loopback, 5000);
}
}
)
.UseStartup<Startup>();
// ...
For that to work you need to add Transport.Libuv
package, so you’ll have the following in your .csproj:
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" Version="2.2.0" />
NGINX config in this case:
# ...
location / {
proxy_pass http://unix:/var/www/YOUR-WEBSITE/kestrel.sock;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# ...
Save it and restart NGINX:
$ systemctl restart nginx.service
Now open your web-browser and go to http://YOUR-SERVER-IP/. It fucking works!
Le forfait mobilités durables (FMD) est un dispositif financier de soutien aux salariés du secteur privé et agents de services publics pour leurs déplacements domicile-travail. En tant que particulier ou qu’employeur, consultez la foire aux questions pour tout savoir sur sa mise en application.
BICLOU, ÉPISODE 91. Au nord de Nantes, un plan vélo ambitieux a permis de créer des infrastructures incroyables que même les Pays-Bas nous envient.
Hiren’s BootCD PE (Preinstallation Environment) is a restored edition of Hiren’s BootCD based on PE x64. Given the absence of official updates after November 2012, the PE version is currently under development by the fans of Hiren’s BootCD. It features a curated selection of the best free tools while being tailored for new-age computers, supporting UEFI booting and requiring a minimum of 4 GB RAM.
🦋 vLitejs is a fast and lightweight Javascript library for customizing video and audio player in Javascript with a minimalist theme (HTML5, Youtube, Vimeo, Dailymotion) - vlitejs/vlite
André Royer, habitant de La Bazouge-du-Désert, dresse des pièges contre ces insectes ravageurs depuis sept ans. Simples, mais diablement efficaces.
Le printemps approche. Avec lui, le réveil des reines frelons asiatiques. Le moment idéal pour commencer à les piéger selon les spécialistes de la lutte contre ce nuisible.
André Royer s’y connait en la matière. Cet habitant de La Bazouge-du-Désert, près de Fougères (Ille-et-Vilaine) a commencé en 2017, « quand la commune nous a offert un premier piège pour nous inciter à nous lancer », se souvient cet ancien agriculteur de 82 ans.
Depuis, il installe ses pièges, tous les ans, de mars à novembre. Trois suspendus aux branches des arbres fruitiers du jardin de sa maison, dans le bourg de la Bazouge, et trois dans l’exploitation reprise par son fils vers Landéan.
Dans les deux cas, la réussite est maximale : les frelons asiatiques, en grande majorité, et leurs cousins européens trépassent. « J’en ai tué 2997 en 2023. Et près de 4000 en 2022 », calcule André qui tient un registre.
Dans un cahier ou sur une feuille cartonnée, il note scrupuleusement ce que ses pièges attrapent au quotidien. « Je vide les pièges tous les jours ». Une nécessité, surtout l’été, quand en juin, juillet et août, les cadavres de ces insectes invasifs s’empilent.
S’il reconnaît que ses pièges ont « parfois » attrapé des guêpes et des mouches « notamment l’an dernier », André assure qu’ils n’ont « jamais capturé d’abeilles ou de bourdons ».
Le Bazougeais utilise trois pièges un peu différents. Avec un point commun : la potion qu’ils renferment. « C’est ça qui attire les frelons ».
La recette : un tiers de sirop de grenadine, un tiers de bière brune et un tiers de vin blanc sec, « pas du haut de gamme », sourit Marie, la femme d’André. « Simple et efficace », renchérit André, persuadé que « tout le monde peut le faire » :
Les frelons asiatiques, c’est un vrai problème. Il faudrait que plus de gens piègent, que l’on soit répartis à une certaine distance pour être encore plus efficaces.
André Royer
En tout cas, conclut Marie, ils ont retrouvé une certaine quiétude dans leur jardin : « A une époque, j’avais même dû arrêter de ramasser les framboises tellement il y avait de frelons ».
the history of the about:jwz easter egg in Netscape browser.
Happy Run Some Old Web Browsers Day! In honor of the ten year anniversary of the Mozilla project, home.mcom.com, the Internet Web Site of the Mosaic Communications Corporation, is now back online. It took some doing. There is comedy. First, the fun stuff: Until now, home.mcom.com and all URLs under it just redirected to netscape.com, then redirected a dozen more times before taking you to ...