Ahhh cet article tombe à point nommé car un collègue m'a fait la remarque que j'ai pas mal défendu Elon Musk dans mes derniers postes sauf que non. Je ne défends pas Elon mais une idée qui parfois est matérialisée dans l'actualité par Elon Musk, mais ici n'est pas la question.
Ici, notre hyper-bourgeois Elon Musk prétend qu'il faut arrêter le télétravail parce qu'il serait profondément injuste vis-à-vis de ceux dont la fonction ne permet pas de télé-travailler et donc... Qu'il faut absolument niveler le niveau de vie de tous vers le bas.
Et ici Elon Musk incarne parfaitement la vision de la bourgeoisie qui se répand ad nauseam dans les grands médias. C'est-à-dire que si un groupe social dispose d'un avantage, alors il faut absolument qu'il le perde pour être l'égale des autres.
Mais à aucun moment nous allons tenter de niveler par le haut... Enfin seulement lorsqu'il s'agit de niveler par le haut le niveau de vie des prolos n'est-ce pas...
Elon est un homme qui a tout et qui ne laisse rien aux autres. C'est un homme méprisable.
Ce qu'il faut retenir c'est que le déficit foncier n'est déductible que de l'ensemble des revenus fonciers.
Toutefois, la première année, il est déductible du revenu global (eg. les salaires) dans la limite des 10 700 € puisque les revenus fonciers sont à 0 €.
Il semble aussi que cette limite des 10 700 € soit pour le revenus global du foyer fiscal. Dit autrement si vous êtes deux investisseurs en concubinage c'est 10 700 € de déductible par concubins, soit 21 400 € ; mais pour un couple marié ou pacsé c'est 10 700 € pour le foyer fiscal.
@Sebsauvage je ne partage pas ton avis. Elon Musk doit appliquer les lois en vigueur en Turquie, tout comme toi et tout comme moi si nous travaillions en Turquie. D'ailleurs nos FAI français censurent des sites web parce qu'ils appliquent nos lois et font ce que le pouvoir leur demande, c'est du pareil au même.
Même si nous trouvons tous les deux cette censure bien merdique, respecter les règles d'un pays ne fait pas de quelqu'un un abrutis ou un débile, bien au contraire.
Tu peux dire que Erdogan est "un étron, un bouffon" dans cette affaire mais pas d'Elon Musk qui n'a aucun pouvoir en Turquie. Par contre, dans ce pays, tu peux dire de lui que c'est un soumis, un faible. Mais alors il faut aussi le dire de la quasi totalité des citoyens turques qui se laissent faire. Et que penser des français qui se font tabasser à la moindre manif depuis 15 ans sans marcher sur l'Élysée le lendemain armés de torches de fourches et de couteaux ?
C'est facile de juger Elon Musk derrière nos claviers mais prenons l'exemple de ce qui est arrivé à Jack Ma (aka Ma Yun en Chine). C'est quand même un milliardaire et PDG d'une des plus grosses corporation du monde (Alibaba) que le gouvernement chinois a ramener au pas aussitôt qu'il l'a ouvert sur la géopolitique chinoise...
Les milliardaires ont du pouvoir via leur argent, mais ils ne détiennent pas le pouvoir pur. Les dictateurs eux, détiennent le pouvoir pur et s'opposer à eux n'est pas le même délire.
Je comprends parfaitement ce que tu ressens car ça m'énerve aussi de voir que dans chaque pays du monde l'étau se ressert sur les peuples. Mais accusons les vrais fautifs tant que nous le pouvons. Ne permettons pas aux monstres de se cacher derrière qui que ce soit.
Le vrai problème ici c'est Erdogan qui a fait censurer ses opposants et a peut-être aussi truqué les élections.
@Gégé totalement d'accord avec toi ! Même remarque au sujet du man
sous Linux. Si tu ne sais pas déjà ce dont tu as besoin, alors il ne te sera d'aucune utilité.
C'est un vrai problème d'une manière générale dans le monde du logiciel libre. Les documentations techniques internes au projet sont considérées comme des documentations utilisateurs. Comme s'il y avait un plaisir personnel à apprendre un truc ultra complexe pour une utilisation jetable. À chaque fois ça ce raisonnement me dépasse.
C'est l'un des rares reproches que je fais régulièrement à l'open source.
Je cite l'article :
Pour un associé personne physique
Les dividendes en SCI pour ce type d’associé sont soumis au prélèvement forfaitaire unique (PFU) effectué par l’administration fiscale au terme de la déclaration de revenus. Le taux du PFU est de 30 %, dont :
- 12,8 % au titre de l’impôt sur le revenu ;
- 17,2 % au titre des prélèvements sociaux.
Quant aux dividendes bruts, ils sont soumis au PFU de 12,8 %.
Cependant, un associé personne physique peut choisir le barème progressif de l’impôt sur le revenu qui lui fait bénéficier d’un abattement de 40 % sur les dividendes si cette option lui est plus favorable.
Bon à savoir : dans tous les cas, cet impôt est à mettre dans la catégorie des revenus de capitaux mobiliers.
Pour faire simple, les workspaces de Cargo sont l'équivalent des modules de Maven.
Pour définir une configuration commune à tous les workspaces il faut ajouter ceci dans le Cargo.toml
à la racine du projet :
[package]
name = "sotoestevez_medium"
version = "0.1.0"
[workspace]
members = ["add_trait", "beginning_tips", "generify_with_compiler_errors", "modules", "scoped_threads" ]
[workspace.package]
edition = "2021"
authors = ["Soto Estévez <ricardo@sotoestevez.dev>"]
description = "Demos of the articles at https://medium.com/@sotoestevez"
documentation = "https://medium.com/@sotoestevez"
readme = "./README.md"
homepage = "https://www.sotoestevez.dev"
repository = "https://github.com/kriogenia/medium"
license = "MIT OR Apache-2.0"
Puis activer l'héritage dans chaque Cargo.toml
des workspaces :
[package]
name = "add_trait"
version = "0.1.0"
edition.workspace = true
authors.workspace = true
description = "Dissecting Rust Traits to Learn Their Secrets"
documentation = "https://betterprogramming.pub/dissecting-rust-traits-to-learn-their-secrets-839845d3d71e"
homepage.workspace = true
repository.workspace = true
license.workspace = true
Cela marche aussi avec les versions des dépendances. Dans le parent on déclare ceci :
[workspace.dependencies]
num = { version = "0.4", default-features = false }
vector2d = "2.2"
rand = "0.8.5"
Et dans les enfants ceci :
[dependencies]
num = { workspace = true, default-features = true }
vector2d.workspace = true
[dev-dependencies]
rand = { workspace = true, features = [ "log" ] }
Je dois écrire un µ-service en Rust et j'ai cherché pas mal de serveurs web permettant de le faire. Évidemment, la première chose que les moteurs de recherche nous remontent c'est Hyper. Pour faire simple, Hyper est une serveur HTTP 1/2 qui s'appuie sur le pool de threads asychrone Tokio.
Problème, Hyper reste assez bas niveau. Je recherchais donc quelque chose aux performances équivalentes mais bien plus simple d'utilisation et je suis tombée sur Actix qui à l'air de faire le café. Je regrette uniquement la reprise du annotation-driven-bullshit via les macros déclaratives mais en dehors de cela, tout va bien.
Exemple de hello world en Actix / Rust :
use actix_web::{get, web, App, HttpServer, Responder};
#[get("/")]
async fn index() -> impl Responder {
"Hello, World!"
}
#[get("/{name}")]
async fn hello(name: web::Path<String>) -> impl Responder {
format!("Hello {}!", &name)
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| App::new().service(index).service(hello))
.bind(("127.0.0.1", 8080))?
.run()
.await
}
Je découvre Sarah Schwab (rien à voir avec l'oligarque Klaus Schwab) qui est une chanteuse imitatrice hors pair <3
Je fais beaucoup de Rust ces derniers temps et je cherchais un framework qui puisse m'aider à produire mes requêtes SQL en sachant que je voulais tout sauf une horreur orientée structures comme peut l'être le couple JPA / Hibernate.
Au détour d'un coup de fil, @LapinFeroce me parle de Diesel qui est l'équivalent de Ktorm mais pour Rust. Autant vous dire qu'à la simple lecture de l'exemple de la home page j'étais déjà conquise 😻
Comment calculer la retraite d'un assimilé salarié (en 2021) ?
En un code d'exemple :
// use macro_rules! <name of macro>{<Body>}
macro_rules! add {
// macth like arm for macro
($a:expr,$b:expr) => {
// macro expand to this code
{
// $a and $b will be templated using the value/variable provided to macro
$a+$b
}
}
}
// Usage in code
fn main(){
// call to macro, $a=1 and $b=2
add!(1,2);
}
Attention à ne pas abuser de la méta-programmation car cela peut augmenter significativement les temps de compilation.
Il implémente l'interface log qui est l'équivalent de SLF4J de Java/Kotlin mais pour Rust.
Il a la particularité de pouvoir se configurer directement dans le code en plus de fichier Yaml :
use log::LevelFilter;
use log4rs::append::console::ConsoleAppender;
use log4rs::append::file::FileAppender;
use log4rs::encode::pattern::PatternEncoder;
use log4rs::config::{Appender, Config, Logger, Root};
fn main() {
let stdout = ConsoleAppender::builder().build();
let requests = FileAppender::builder()
.encoder(Box::new(PatternEncoder::new("{d} - {m}{n}")))
.build("log/requests.log")
.unwrap();
let config = Config::builder()
.appender(Appender::builder().build("stdout", Box::new(stdout)))
.appender(Appender::builder().build("requests", Box::new(requests)))
.logger(Logger::builder().build("app::backend::db", LevelFilter::Info))
.logger(Logger::builder()
.appender("requests")
.additive(false)
.build("app::requests", LevelFilter::Info))
.build(Root::builder().appender("stdout").build(LevelFilter::Warn))
.unwrap();
let handle = log4rs::init_config(config).unwrap();
// use handle to change logger configuration at runtime
}
Et sa façade log reprend l'API de SLF4J mais sous forme de macros :
let world = "World";
trace!("Hello {}!", world);
debug!("Hello {}!", world);
info!("Hello {}!", world);
warn!("Hello {}!", world);
error!("Hello {}!", world);
À voir pour les performances, mais l'idée de reprendre l'API d'une façade qui a fait ses preuves pour y coller l'implémentation que l'on veut derrière est la bienvenue !
Vous voulez dire qu'abandonner sa concentration sur la route pendant plusieurs secondes pour toucher de manière précise un écran tactile stresse incroyablement les conducteurs.
En sachant que pour ces écrans, un simple effleurement de surface peut faire entrer dans un mauvais menu, augmentant d'autant le danger et la durée de manipulation, ce qui énerve plus encore.
Et que les conducteurs ont l'inquiétude de protéger leur sécurité et encore plus celle de ceux qu'ils transportent et ne sont pas amusés à faire joujou avec une interface différente pour chaque véhicule.
Et qu'il aura fallu presque 10 ans avant que ces retours ne prennent dans la tête des constructeurs automobiles mais qu'ils n'en parlent à cette heure qu'à demi-mot.
C'est gens-là se droguent ou sont-ils simplement stupides ? D'odieux connards peut-être ? (Oui je suis une conductrice agacée)
Plusieurs outils dédiés à l'amélioration d'images via modèles ML.
J'adore ce genre d'article. Il s'agit d'un "bug" hein, mais pas d'une tentative pour Microsoft de récupérer nos données confidentielles de navigation en dehors de tout cadre RGPD.
D'ailleurs, c'est tellement un "bug" que le code de Edge a été modifié pour envoyer toutes les URL visitées à l'adresse https://bingapis.com/api/v7/followweb/isfollowable*?, malgré les procédures de test et de contrôle qualité misent en œuvre chez Redmond.
Et puis c'est tellement un "bug" qu'à cette adresse a été développé un serveur dédié à la récupération de ces informations confidentielles de navigation pour les y stocker et les analyser.
Enfin, c'est tellement un "bug" que dernière cette adresse a été montée une infrastructure matérielle monstrueuse capable d'encaisser la charge de dingue que l'envoie de toutes ces données confidentielles de navigation implique.
Repense au passif de Microsoft et à la vie privée... Se dit que prétendre à un "bug" peut lui éviter un procès pour violation du RGPD... Doit faire partie des conspis, Microsoft est trop honnête n'est-ce pas ...?
Rappelons-nous qu'aucun citoyen européen n'a élu Ursula Van Der Leyen pour qu'elle siège à la tête de l'UE et qu'en conséquence, nous pouvons nous questionner sur la légitimité de ses décisions, notamment vis-à-vis du fait d'attaquer économiquement et militairement un pays allié comme la Russie.
En tout cas, prendre des décisions qui sabotent notre économie tout en valorisant celle des autres... Que va-t-il advenir de nos enfants lorsque des géants comment l'Inde, la Chine ou la Russie n'auront plus structurellement besoin de nous pour échanger...? #Facepalm
En trois étapes :
- Exécuter la commande
cargo install --color=always --force grcov
pour récupérer l'utilitaire (qui sera automatiquement ajouté à votre PATH user). - Démarrer Intellij IDEA.
- Installer / Activer le plugin Rust depuis la market place.
Enjoy
En résumé, la méthode du trait doit prendre en paramètre un
&Fn(X) -> Y
et non un
Fn(X) -> Y
Sinon, Rust ne peut pas garantir l'exécution de la fonction puisque le trait prendrait possession de la fonction. Or cette closure peut être un pointeur sur fonction, ce qui retirerait la propriété de cette dernière de sa structure.