瀏覽代碼

Deal with related anchors in feed

master
David Larlet 4 年之前
父節點
當前提交
1035b7e373
沒有發現已知的金鑰在資料庫的簽署中
共有 2 個檔案被更改,包括 23 行新增23 行删除
  1. 20
    20
      david/log/index.xml
  2. 3
    3
      site.py

+ 20
- 20
david/log/index.xml 查看文件

@@ -372,127 +372,127 @@ De la même manière, si un groupe a une gestion efficace de son projet, l’imp
<summary type="html">&lt;p&gt;&lt;em&gt;Une liste d’articles qui ne prennent pas trop de rides. J’aime beaucoup ce qu’a fait &lt;a href=&quot;https://wdrl.info/evergreen/&quot;&gt;Anselm Hannemann&lt;/a&gt; alors voici un espace que je vais mettre à jour au gré de mes lectures. Ça me permettra aussi de lier des références mises en cache dans le futur. L’ordre n’est pas significatif.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Bonne lecture !&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a name=&quot;humans&quot; href=&quot;#humans&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;humans&quot; href=&quot;https://larlet.fr/david/stream/2019/12/27/#humans&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;User experience design has led us to use a certain vocabulary: Instead of seeing human beings with goals and attitudes, we see users. We use words like subscribers, subs, visitors, spenders, whales or even just “traffic” or “installs” to refer to them. We assign a role to them. UX design dehumanizes people.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;&lt;em&gt;&lt;a href=&quot;https://johannesippen.com/2019/humans-not-users/&quot;&gt;Humans, not Users&lt;/a&gt;&lt;/em&gt; (&lt;a href=&quot;https://larlet.fr/david/cache/85dd627b08fa417c198d95acfc8e6aa0/&quot;&gt;cache&lt;/a&gt;)&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a name=&quot;empathy&quot; href=&quot;#empathy&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;empathy&quot; href=&quot;https://larlet.fr/david/stream/2019/12/27/#empathy&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In UX, empathy enables us to understand not only our users’ immediate frustrations, but also their hopes, fears, abilities, limitations, reasoning, and goals. It allows us to dig deep into our understanding of the user and create solutions that will not only solve a need, but effectively improve our users’ lives by removing unnecessary pain or friction. Instead of just designing an accessible website, practicing empathy is using a screen reader, blindfolded, in order to complete a task on your own website.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;&lt;em&gt;&lt;a href=&quot;https://www.nngroup.com/articles/sympathy-vs-empathy-ux/&quot;&gt;Sympathy vs. Empathy in UX&lt;/a&gt;&lt;/em&gt; (&lt;a href=&quot;https://larlet.fr/david/cache/eae184de757f4384212d32a1273772cd/&quot;&gt;cache&lt;/a&gt;)&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a name=&quot;noreply&quot; href=&quot;#noreply&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;noreply&quot; href=&quot;https://larlet.fr/david/stream/2019/12/27/#noreply&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You want your customers to be talking to you. You want them sharing ideas and experiences with you. Instead of a no-reply, set it to your support email address. Make sure someone will see any replies that a customer sends. Sure, you’re going to get lots of auto-responders. That’s why your email app has filter and rules you can set up.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;&lt;em&gt;&lt;a href=&quot;https://m.signalvnoise.com/no-reply-addresses/&quot;&gt;No Reply Addresses&lt;/a&gt;&lt;/em&gt; (&lt;a href=&quot;https://larlet.fr/david/cache/0b96c949ec0089286a634baa9684318c/&quot;&gt;cache&lt;/a&gt;)&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a name=&quot;ethics&quot; href=&quot;#ethics&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;ethics&quot; href=&quot;https://larlet.fr/david/stream/2019/12/27/#ethics&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In everyday language, the word “ethics” is used as a synonym for morals. And in everyday discussions that is just fine. Morals sounds old fashioned, conservative, unscientific. We say “ethics” even though, strictly speaking, we mean morals. When it comes to discussing the “ethics” or the morality of our industry, we need to understand our basic moral beliefs.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;&lt;em&gt;&lt;a href=&quot;https://ia.net/topics/ethics-and-ethics&quot;&gt;“Ethics” and Ethics&lt;/a&gt;&lt;/em&gt; (&lt;a href=&quot;https://larlet.fr/david/cache/c7620deb7c5227e16a8e5c5207f8e28b/&quot;&gt;cache&lt;/a&gt;)&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a name=&quot;privacy&quot; href=&quot;#privacy&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;privacy&quot; href=&quot;https://larlet.fr/david/stream/2019/12/27/#privacy&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This is, by the way, the dirty secret of the machine learning movement: almost everything produced by ML could have been produced, more cheaply, using a very dumb heuristic you coded up by hand, because mostly the ML is trained by feeding it examples of what humans did while following a very dumb heuristic. There’s no magic here.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;&lt;em&gt;&lt;a href=&quot;https://apenwarr.ca/log/20190201&quot;&gt;Forget privacy: you’re terrible at targeting anyway&lt;/a&gt;&lt;/em&gt; (&lt;a href=&quot;https://larlet.fr/david/cache/abe583967cb53a01298d4b073cb406ad/&quot;&gt;cache&lt;/a&gt;)&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a name=&quot;noms&quot; href=&quot;#noms&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;noms&quot; href=&quot;https://larlet.fr/david/stream/2019/12/27/#noms&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Les personnes chargées de créer des formulaires, des bases de données ou des ontologies ignorent souvent la façon dont les noms changent d’un pays à l’autre. Elles conçoivent leurs formulaires et leurs bases de données sans se rendre compte de l’effort demandé pour un utilisateur étranger. Cet article vous présentera d’abord les différents styles utilisés pour un nom de personne, puis détaillera quelques incidences possibles pour les gérer au mieux sur le Web.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;&lt;em&gt;&lt;a href=&quot;https://www.w3.org/International/questions/qa-personal-names&quot;&gt;Noms de personnes à travers le monde&lt;/a&gt;&lt;/em&gt; (&lt;a href=&quot;https://larlet.fr/david/cache/c893cbc0aedae4e797a69270c50b5c25/&quot;&gt;cache&lt;/a&gt;)&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/&quot;&gt;Voir aussi&lt;/a&gt; (&lt;a href=&quot;https://larlet.fr/david/cache/61fb6db44e7173cd9318753c955f7dda/&quot;&gt;cache&lt;/a&gt;).&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a name=&quot;opensource&quot; href=&quot;#opensource&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;opensource&quot; href=&quot;https://larlet.fr/david/stream/2019/12/27/#opensource&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Communities prior to the advent of coinage didn’t seek to settle their trades on the spot, at least not within those communities. They relied on much more egalitarian long-running concepts of reciprocity. Forms much closer to the communist slogans of “from each according to his ability, to each according to his needs” than the quid pro quo paradigm we all take for granted in today’s market-based societies.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;&lt;em&gt;&lt;a href=&quot;https://m.signalvnoise.com/open-source-beyond-the-market/&quot;&gt;Open source beyond the market&lt;/a&gt;&lt;/em&gt; (&lt;a href=&quot;https://larlet.fr/david/cache/b97a637aaaabbf5b82b172fe781dc7f6/&quot;&gt;cache&lt;/a&gt;)&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a name=&quot;search&quot; href=&quot;#search&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;search&quot; href=&quot;https://larlet.fr/david/stream/2019/12/27/#search&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Search is a deceptively complex field, where competence is hard-won through training, practice, and experience. The list stands at a total of 105 falsehoods. I couldn’t mash up the ole 99-problems meme with this to cull 6 unworthy items, because they are all worthy.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;&lt;em&gt;&lt;a href=&quot;https://opensourceconnections.com/blog/2019/05/29/falsehoods-programmers-believe-about-search/&quot;&gt;Falsehoods Programmers Believe About Search&lt;/a&gt;&lt;/em&gt; (&lt;a href=&quot;https://larlet.fr/david/cache/626468d153ec2e83731dbbd7133af224/&quot;&gt;cache&lt;/a&gt;)&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a name=&quot;assets&quot; href=&quot;#assets&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;assets&quot; href=&quot;https://larlet.fr/david/stream/2019/12/27/#assets&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;There really is very little reason to leave your static assets on anyone else’s infrastructure. The perceived benefits are often a myth, and even if they weren’t, the trade-offs simply aren’t worth it. Loading assets from multiple origins is demonstrably slower. Take ten minutes over the next few days to audit your projects, and fetch any off-site static assets under your own control.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;&lt;em&gt;&lt;a href=&quot;https://csswizardry.com/2019/05/self-host-your-static-assets/&quot;&gt;Self-Host Your Static Assets&lt;/a&gt;&lt;/em&gt; (&lt;a href=&quot;https://larlet.fr/david/cache/6f8793385f7b1ea2511bf614b5287397/&quot;&gt;cache&lt;/a&gt;)&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a name=&quot;projector&quot; href=&quot;#projector&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;projector&quot; href=&quot;https://larlet.fr/david/stream/2019/12/27/#projector&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The Projector Test is my favorite “gut check” manual UI test, and I encourage you to use it early, often, and especially when ironing out final visual specs. It doesn’t substitute for testing out a functional version of your site in a variety of environments — browsers, form factors, screen resolutions, operating systems, screen orientations, screen readers, etc. — but it’s a good place to start. Embrace your conference room’s projector and challenge yourself to make your designs look stellar on even the fuzziest, most washed-out of screens.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;&lt;em&gt;&lt;a href=&quot;https://medium.com/salesforce-ux/projectors-dont-lie-b85ef628b04&quot;&gt;Projectors don’t lie.&lt;/a&gt;&lt;/em&gt; (&lt;a href=&quot;https://larlet.fr/david/cache/ffe10a872d4fd33d7fc24b4cb38528db/&quot;&gt;cache&lt;/a&gt;)&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a name=&quot;performance&quot; href=&quot;#performance&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;performance&quot; href=&quot;https://larlet.fr/david/stream/2019/12/27/#performance&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You know what’s better than perceived performance? Actual performance. Avoid techniques that merely provide a mirage of speed.&lt;/p&gt;
&lt;p&gt;Instead, declutter and optimise the foundations of your design system which will result in less weight, less complexity, less distraction, less hassle and ultimately, less bull shit.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;&lt;em&gt;&lt;a href=&quot;https://adamsilver.io/articles/designing-for-actual-performance/&quot;&gt;Designing for actual performance&lt;/a&gt;&lt;/em&gt; (&lt;a href=&quot;https://larlet.fr/david/cache/4f3420365156f407064711f8cc0f45d6/&quot;&gt;cache&lt;/a&gt;)&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a name=&quot;plaintext&quot; href=&quot;#plaintext&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;plaintext&quot; href=&quot;https://larlet.fr/david/stream/2019/12/27/#plaintext&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ultimately, in email, less is more.&lt;/p&gt;
&lt;p&gt;This can be a tough pill for marketers to swallow (myself included) because we’re naturally driven to be creative. But data repeatedly shows plain-text email wins, so it’s up to us to decide whether or not we want to make the switch. &lt;/p&gt;
&lt;p&gt;&lt;cite&gt;&lt;em&gt;&lt;a href=&quot;https://blog.hubspot.com/marketing/plain-text-vs-html-emails-data&quot;&gt;Plain Text vs. HTML Emails: Which Is Better?&lt;/a&gt;&lt;/em&gt; (&lt;a href=&quot;https://larlet.fr/david/cache/f46d27e60634cd0c0769fd59c28250d6/&quot;&gt;cache&lt;/a&gt;)&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a name=&quot;feature-flags&quot; href=&quot;#feature-flags&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;feature-flags&quot; href=&quot;https://larlet.fr/david/stream/2019/12/27/#feature-flags&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You want to avoid branching for this work if at all possible, based on previous painful experiences of merging long-lived branches in the past. Instead, you decide that the entire team will continue to work on trunk, but the developers working on the Spline Reticulation improvements will use a Feature Toggle to prevent their work from impacting the rest of the team or destabilizing the codebase.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;&lt;em&gt;&lt;a href=&quot;https://martinfowler.com/articles/feature-toggles.html&quot;&gt;Feature Toggles (aka Feature Flags)&lt;/a&gt;&lt;/em&gt; (&lt;a href=&quot;https://larlet.fr/david/cache/7c569b2880bd3ed844e039a322b9731d/&quot;&gt;cache&lt;/a&gt;)&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a name=&quot;timezones&quot; href=&quot;#timezones&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;timezones&quot; href=&quot;https://larlet.fr/david/stream/2019/12/27/#timezones&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Always measure and store time in UTC. If you need to record where the time was taken, store that separately. Do not store the local time + timezone information!&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;&lt;em&gt;&lt;a href=&quot;http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/&quot;&gt;“Eppur si muove!” – Dealing with Timezones in Python&lt;/a&gt;&lt;/em&gt; (&lt;a href=&quot;https://larlet.fr/david/cache/3caf29e374bca01d6b9cab9a618ee830/&quot;&gt;cache&lt;/a&gt;)&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a name=&quot;do-nothing&quot; href=&quot;#do-nothing&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;do-nothing&quot; href=&quot;https://larlet.fr/david/stream/2019/12/27/#do-nothing&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This script doesn’t actually do any of the steps of the procedure. That’s why it’s called a do-nothing script. It feeds the user a step at a time and waits for them to complete each step manually.&lt;/p&gt;
&lt;p&gt;At first glance, it might not be obvious that this script provides value. Maybe it looks like all we’ve done is make the instructions harder to read. But the value of a do-nothing script is immense&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;&lt;em&gt;&lt;a href=&quot;https://blog.danslimmon.com/2019/07/15/do-nothing-scripting-the-key-to-gradual-automation/&quot;&gt;Do-nothing scripting: the key to gradual automation&lt;/a&gt;&lt;/em&gt; (&lt;a href=&quot;https://larlet.fr/david/cache/00a288de97e8a854d5fdfe03ba2bcf72/&quot;&gt;cache&lt;/a&gt;)&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a name=&quot;intuitive-ux&quot; href=&quot;#intuitive-ux&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;intuitive-ux&quot; href=&quot;https://larlet.fr/david/stream/2019/12/27/#intuitive-ux&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When I started as a professional UX designer, I was shocked how many times my clients would hand me the initial wireframes (or the living, breathing, in-browser MVP) and there’d be completely obvious UX mistakes all over them. I’m not talking about things you need hours of research and A/B testing to discover. I’m talking, like, dead simple mistakes.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;&lt;em&gt;&lt;a href=&quot;https://learnui.design/blog/4-rules-intuitive-ux.html&quot;&gt;4 Rules for Intuitive UX&lt;/a&gt;&lt;/em&gt; (&lt;a href=&quot;https://larlet.fr/david/cache/f599501674792192b83b5bbc2d7e5324/&quot;&gt;cache&lt;/a&gt;)&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a name=&quot;form-design&quot; href=&quot;#form-design&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;form-design&quot; href=&quot;https://larlet.fr/david/stream/2019/12/27/#form-design&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;So, if I was designing a new form, I’d want to know how to avoid the common issues. And to use my time to solve newer and perhaps more difficult problems.&lt;/p&gt;
&lt;p&gt;Seriously, who wants to spend time solving something that’s already been solved?&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;&lt;em&gt;&lt;a href=&quot;https://adamsilver.io/articles/form-design-from-zero-to-hero-all-in-one-blog-post/&quot;&gt;Form design: from zero to hero all in one blog post&lt;/a&gt;&lt;/em&gt; (&lt;a href=&quot;https://larlet.fr/david/cache/ea6f3644381c108795010c0ae6aee332/&quot;&gt;cache&lt;/a&gt;)&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a name=&quot;passwords&quot; href=&quot;#passwords&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;passwords&quot; href=&quot;https://larlet.fr/david/stream/2019/12/27/#passwords&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Vous voulez que votre mot de passe résiste à un voisin malveillant prêt à mettre plus de 10 € sur la table ? Prévoyez au moins 10 carac­tères.&lt;/p&gt;
&lt;p&gt;Et là, seconde magie : Si vous mettez 10 carac­tères on se moque de savoir si vous y avez mis des chiffres ou symboles. La longueur a bien plus d’im­por­tance que l’éven­tail de carac­tères utilisé.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;&lt;em&gt;&lt;a href=&quot;https://n.survol.fr/n/developpeurs-vous-devriez-avoir-honte-regles-de-mots-de-passe&quot;&gt;Développeurs, vous devriez avoir honte&lt;/a&gt;&lt;/em&gt; (&lt;a href=&quot;https://larlet.fr/david/cache/f77e84e4666177057f83bf901b4c5b68/&quot;&gt;cache&lt;/a&gt;)&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a name=&quot;burnt-pizza&quot; href=&quot;#burnt-pizza&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;burnt-pizza&quot; href=&quot;https://larlet.fr/david/stream/2019/12/27/#burnt-pizza&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Say you’re trying to test whether people like pizza. If you serve them burnt pizza, you’re not getting feedback on whether they like pizza. You only know that they don’t like burnt pizza. Similarly, when you’re only relying on the MVP, the fastest and cheapest functional prototype, you risk not actually testing your product, but rather a poor or flawed version of it.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;&lt;em&gt;&lt;a href=&quot;https://firstround.com/review/dont-serve-burnt-pizza-and-other-lessons-in-building-minimum-lovable-products/&quot;&gt;Don’t Serve Burnt Pizza (And Other Lessons in Building Minimum Lovable Products)&lt;/a&gt;&lt;/em&gt; (&lt;a href=&quot;https://larlet.fr/david/cache/2ba49645e8cd27503661e03a73bbac37/&quot;&gt;cache&lt;/a&gt;)&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a name=&quot;advertising&quot; href=&quot;#advertising&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;advertising&quot; href=&quot;https://larlet.fr/david/stream/2019/12/27/#advertising&quot;&gt;⚓︎&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In 2018 $273bn was spent on digital ads globally. We delve into the world of clicks, banners and keywords to find out if any of it is real. What do we really know about the effectiveness of digital advertising?&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;&lt;em&gt;&lt;a href=&quot;https://thecorrespondent.com/100/the-new-dot-com-bubble-is-here-its-called-online-advertising/13228924500-22d5fd24&quot;&gt;The new dot com bubble is here: it’s called online advertising&lt;/a&gt;&lt;/em&gt; (&lt;a href=&quot;https://larlet.fr/david/cache/9ecfef782dcd4d2a31f763e7b98c4c13/&quot;&gt;cache&lt;/a&gt;)&lt;/cite&gt;&lt;/p&gt;

+ 3
- 3
site.py 查看文件

@@ -77,9 +77,9 @@ class Item:
self.normalized_date = self.date.strftime(NORMALIZED_STRFTIME)
self.escaped_title = escape(self.title)
self.escaped_content = escape(
self.content.replace('href="/', f'href="{DOMAIN}/').replace(
'src="/', f'src="{DOMAIN}/'
)
self.content.replace('href="/', f'href="{DOMAIN}/')
.replace('src="/', f'src="{DOMAIN}/')
.replace('href="#', f'href="{self.full_url}#')
)

@property

Loading…
取消
儲存