- Windows 7 और Windows Server 2008 R2 में एकरंगी desktop background इस्तेमाल करने पर logon के दौरान Welcome screen अधिकतम 30 सेकंड तक बनी रह सकती थी, और वजह ready signal का छूट जाना था
- Logon system taskbar, system service components, desktop window, wallpaper display आदि सभी के ready रिपोर्ट करने या 30 सेकंड बीतने तक Welcome screen को switch करता है
- Wallpaper code केवल bitmap background होने पर ही
Report(WallpaperReady)को call करता था, इसलिए bitmap न होने वाले एकरंगी background में waiting condition आखिर तक पूरी होती रही - “Hide desktop icons” group policy में भी यही pattern था: अगर
Report(DesktopIconsReady)call condition के अंदर बंध जाए, तो icons ready होने की report छूट सकती है - वास्तविक logon हमेशा 30 सेकंड लंबा नहीं हुआ था; असल में 5 सेकंड या 25 सेकंड में पूरी हो जाने वाली तैयारी से अलग, Welcome screen 30 सेकंड timeout तक बनी रहती थी
एकरंगी background में Welcome screen लंबे समय तक क्यों रही
- Logon authentication खत्म होने पर Windows user का desktop environment configure करता है
- Taskbar बनाना
- कई system services के जिम्मेदार components को load और initialize करना
- Desktop window बनाना और icons दिखाना
- Desktop background window में wallpaper load करके screen पर draw करना
- Logon system हर component के ready होने की report आने तक इंतजार करता है
- सभी components ready report कर दें, तो Welcome screen से आगे switch करता है
- या 30 सेकंड बीत जाएं, तो Welcome screen से आगे switch करता है
- एकरंगी background की समस्या इसलिए हुई क्योंकि wallpaper ready report bitmap loading code के अंदर थी
- अगर bitmap background defined हो, तो file खोजकर memory में load की जाती है, screen पर draw की जाती है, और फिर
Report(WallpaperReady)call होता है - एकरंगी background की तरह bitmap न हो, तो वह code path execute नहीं होता और
WallpaperReadyreport नहीं जाती - Logon system उस report का इंतजार करता रहा जो आने वाली नहीं थी, और 30 सेकंड की limit पर पहुंच गया
- अगर bitmap background defined हो, तो file खोजकर memory में load की जाती है, screen पर draw की जाती है, और फिर
Group policy में भी ready signal छूटने की वही गलती दोहराई गई
- संबंधित support document में बताया गया था कि “Hide desktop icons” group policy on करने पर भी 30 सेकंड की देरी हो सकती है
- Group policy अक्सर मौजूदा code के ऊपर बाद में जोड़ी जाती है, इसलिए उसे “policy अनुमति दे तो execute करें” जैसी condition में wrap कर देना आसान होता है
- मूल desktop icon initialization code desktop folder से bind करता था, icons enumerate करता था, उन्हें screen पर add करता था, और फिर
Report(DesktopIconsReady)call करता था - Group policy support जोड़ते समय अगर यह पूरा block policy condition के अंदर चला जाए, तो icons hide करने वाली policy active होने पर ready report भी execute नहीं होती
- मूल desktop icon initialization code desktop folder से bind करता था, icons enumerate करता था, उन्हें screen पर add करता था, और फिर
- इस behavior का मतलब यह नहीं था कि logon task खुद 30 सेकंड extra ले रहा था
- System performance के हिसाब से सभी ready reports खत्म होने का मूल समय 5 सेकंड भी हो सकता था और 25 सेकंड भी
- समस्या होने पर Welcome screen वास्तविक तैयारी के समय से अलग 30 सेकंड timeout तक बनी रहती थी
- Document timestamp के आधार पर यह issue Windows 7 के जुलाई 2009 में release होने के कुछ महीनों बाद, नवंबर 2009 में fix किया गया
- Bitmap background से बचने की एक वजह यह भी थी कि पुराने 4MB या 8MB memory environment में सिर्फ wallpaper ही लगभग 0.75MB इस्तेमाल करता था, जो भारी पड़ता था
1 टिप्पणियां
Hacker News की रायें
एकरंगी background पसंद करने वाले के तौर पर, यह हमेशा हैरान करता है कि इतनी साधारण पसंद अक्सर कैसे अजीब rabbit holes में ले जाती है
नए macOS में अगर custom solid-color background सेट करने की कोशिश करें, तो बस चकाचौंध सफेद screen दिखती है: https://discussions.apple.com/thread/256029958?sortBy=rank
GNOME ने solid-color background सेटिंग UI पूरी तरह हटा दिया है, लेकिन कई setting keys को manually बदलें तो technically अब भी संभव है, और वे keys भी version दर version बेतरतीब ढंग से बदलती लगती हैं: https://www.tc3.dev/posts/2021-09-04-gnome-3-solid-color-bac...
आखिरकार यह कुछ users के लिए आधा-अधूरा छोड़ा गया feature जैसा दिखता है, और इसे ठीक से support करना या साफ-साफ हटा देना बेहतर होगा। मैं बस RGB values डालना चाहता हूं, लेकिन मौजूदा हालत में अस्थिर background-color logic से बेहतर मुझे एक अच्छी तरह maintain किया गया wallpaper system लगता है
wallpaper type: plain colorचुनें तो color picker से रंग तय कर सकते हैंकिस screen पर apply करना है यह भी दिखाता है, और सभी screens पर एक साथ apply करने के लिए boolean option भी है
आधुनिक phone displays पर power के लिहाज से भी यह समझदारी है और देखने में भी ठीक है, लेकिन जो चीज default option या settings में one-tap switch होनी चाहिए थी, वह अविश्वास, खोज और हार मानने से गुजरने वाला छोटा-सा काम बन गई
पुराने OS X में यह feature 20 साल से ज्यादा समय तक ठीक चलता था, इसलिए लगता है कि इसका संबंध System Preferences rewrite से है
desktop shortcuts का पीढ़ियों से जरूरत से ज्यादा इस्तेमाल होने के कारण desktop दिखाना screen space की बर्बादी बन गया है, और सावधानी बरतने पर भी अंत में यह बिखरा हुआ मैदान बन जाता है। Windows में खासकर ऐसा है, और मुझे बस desktop को किसी काम में न लाने और कई monitors पर windows हमेशा खुले रखने की आदत हो गई है
पिछले 25 साल Windows की दुनिया से बचने के बाद, हाल के वर्षों में corporate environment में लौटकर देखा तो Microsoft tools में यह pattern लगातार दिखता है
security issue की वजह से Teams load नहीं होता, लेकिन notifications में message का पूरा content दिख जाता है; या Word cloud version में कुछ words type करने या पूरा document paste करने के बाद ही security check पीछे से आता है और sensitivity label सेट करने को कहता है
यह Microsoft के web app software architecture के बहुत खराब होने का संकेत लगता है, और desktop apps भी अपवाद नहीं दिखते
बाद में permission request आई, और उसे deny करने पर preview गायब हो गया
obvious use cases में वे बहुत अच्छी तरह काम करते हैं, लेकिन जैसे ही कोई uncovered edge case आता है, तुरंत अजीब समस्या सामने आती है। developers कमजोर हैं ऐसी reputation तो नहीं है, इसलिए यह corporate culture या काम करने के तरीके की वजह हो सकता है, और विशाल user base में 80% business के लिहाज से optimum भी हो सकता है। फिर भी बाहरी developer के तौर पर संभव हो तो Microsoft products से बचने का मन करता है
5 साल पहले जो laptops बिल्कुल ठीक से sleep हो जाते थे, अब वे 24-hour zombies बन गए हैं जिनमें CPU, fan और hard disk लगातार चलते रहते हैं
मुझे यकीन है कि article में बताई गई वैसी ही किसी बेवकूफी भरी change ने ठीक-ठाक काम करने वाला feature खराब किया, और कोई इसे इसलिए नहीं ठीक कर रहा कि कहीं यह उस नए बकवास विचार में बाधा न डाल दे जिसमें 10 साल पुराना laptop sleep के दौरान भी AI चलाकर सुनी हुई बातों के आधार पर ads suggest करे
यह उस दौर में शुरू हुई लगने वाली practice से जुड़ता है: splash screen को सिर्फ एक तय समय तक दिखाना, फिर software पूरी तरह start होने से पहले ही user environment दिखा देना
शक था कि operating systems और apps दोनों ऐसा इसलिए करते थे ताकि “app बहुत समय ले रहा है” वाली धारणा से बच सकें। अब software सच में load हुआ है या नहीं, यह इस्तेमाल करने से पहले अनुमान लगाना पड़ता है
उसके बाद ही नीचे का software पूरा load होने का खाली इंतजार करता हुआ unresponsive UI thread दिखाई देता है
loading screen में हमेशा के लिए फंसकर किसी दूसरे OS में boot करके fix करने की स्थिति से बेहतर है कि desktop आधा टूटा हो, फिर भी किसी तरह इस्तेमाल करने लायक हो
कुछ करें तो UI loading/progress wheel दिखाता है, लेकिन असल में अंतहीन चलता रहता है; और webpage शुरू होते समय blank screen पर placeholder bars या धुंधली color images दिखती हैं। इसे ही कथित तौर पर responsive design कहते हैं
कभी-कभी system को सच में load हो चुका है ऐसा optimistically handle करना user के लिए बेहतर होता है
मैंने लगभग हर जगह default settings इस्तेमाल करना सीख लिया है
customizations को maintain करना इतना झंझट भरा है कि बस उन पर ध्यान न देना सबसे आसान है। अपवाद VS Code settings की करीब 50 lines हैं, जो कहीं किसी रहस्यमय file में sync होती हैं—शायद GitHub servers पर, लेकिन ऐसी किसी जगह नहीं जहाँ मैं देख सकूँ
अपने personal computer पर stow इस्तेमाल करता हूँ, और remote machines पर copy-paste करता हूँ। अच्छा यह है कि ये tools इतने stable हैं कि Debian stable पर जाने पर भी ठीक रहते हैं
कई साल पुराना Sublime Text backup सीधे restore करूँ, तब भी मेरी user settings अभी भी काम करती हैं
नियमित reminder की तरह कहें तो, nix सचमुच अच्छा है
आप कह सकते हैं: “एक bug है, और
nixos-rebuild build-vm --flake "github:user/repo#test-vm" && ./result/bin/run-*-vmसे reproduce करने वाली VM मिल सकती है।” उस VM को बनाने वाला code भी कोई security nightmare जैसा binary blob नहीं, बल्कि साधारण nix expression है जिसे कोई भी पढ़ सकता है, और नई machine पर लागू करना भी एक ही command में हो जाता हैअगर आप समझते हैं कि defaults क्या करते हैं, तो दुनिया के सारे options छेड़ना अक्सर ज़्यादा झंझट भरा होता है
“comfort food” वाली अभिव्यक्ति मजेदार है। AIX से Linux पर आने के बाद भी मैं अब भी motif window manager के साथ steelblue4 desktop और wheat xterm background इस्तेमाल करता हूँ
1989 में university के दिनों में पहली बार जिन defaults से सामना हुआ था, वही थे, और उसके बाद कुछ बेहतर हुआ है ऐसा महसूस नहीं होता। GNOME, KDE जैसी चीज़ें तो उल्टी जैसा एहसास कराती हैं
scope थोड़ा ज़्यादा चौड़ा हो गया patched
if()wrapper इसका classic उदाहरण हैnostalgia एक ताकतवर दवा है
तंज नहीं कर रहा, सच में जानना चाहता हूँ कि motif में HiDPI सचमुच काम करता है या नहीं
बहुत पहले, जब मैं hobby के तौर पर Windows इस्तेमाल करता था, मैंने एक खास Windows registry key की value edit करके
explorer.exeकोcmd.exeसे बदल दिया थातब Windows
explorer.exeचलाकर wallpaper और icons वाला desktop नहीं दिखाता था, और UNIX window manager की तरह solid-color background पर हर window Microsoftcmd.exeshell के रूप में खुलती थी। classic Windows वाली काली box, नीली title bar और पतले grey border के साथ, और command prompt सेC:\windows\system32केtaskmgr.exeजैसे apps चला सकते थेमुझे यह
explorer.exeइस्तेमाल करने की तुलना में कहीं तेज और मजबूत लगा, और निश्चित रूप से हल्का था। बाद में Arthur Whitney के एक लेख की तस्वीर में Windows desktop पर सिर्फcmd.exeकी एक window खुली देखी थी; मैं कोई इशारा नहीं करना चाहता, लेकिन वह हमेशा याद रह गईहाल में Microsoft docs में भी यह देखा: https://learn.microsoft.com/en-us/windows/configuration/shel...
याद है कि IoT या embedded के लिए सस्ते/free Windows में भी कोई version था जो
explorerके बिना cmd-only mode में चलता थाऐसी चीज़ें उस category में आती हैं जिसे मैं systemic bug या “type bug” कहता हूँ
अगर login component को token pass किया जाता, और token का destructor अपने-आप process completion mark कर देता, तो यह bug लिखना लगभग असंभव होता
इसके बजाय runtime ने इसे “components को यह याद रखना होगा” जैसा बना दिया, इसलिए code structure खुद bug की गुंजाइश देता है
कुछ साल पहले Facebook में भी ऐसा ही bug था: notification count दिखाता था कि notifications हैं, लेकिन click करने पर कुछ नहीं होता था। count update path और list insertion path अलग थे, इसलिए वे mismatch हो गए; जब दोनों को system के एक ही हिस्से से manage करवाया गया, तो वह bug हमेशा के लिए गायब हो गया
मैं हमेशा सोचता रहा हूँ कि वजह खराब caching है
थोड़ा meta है, लेकिन Raymond Chen के लेखों के लिए “Why did happen with” जैसे title की उम्मीद होने लगी है
हमेशा दिलचस्प होते हैं
बचपन से Windows computing को लेकर जो अंधविश्वास थे, उन्हें सच में समझाने वाला यह अकेला blog रहा है
वह code मुझे मेरे पसंदीदा Kubernetes bugs में से कई की याद दिलाता है
if (request.authenticationData) { ok := validate(etc); if (!ok) { return authenticationFailure; } }वही meme दशकों को पार करते हुए चलता आ रहा है
जिन functions को कोई permission चाहिए, उन्हें वही permission argument के रूप में लेने दें; उदाहरण के लिए
void doFoo(PermissionToDoFoo permission, ...){...}जैसा लिखें, और call सिर्फ उस path से संभव हो जो authentication data से permission हासिल करता हैतब permission के बिना Foo perform करने वाली invalid state को represent करना ही असंभव हो जाता है
क्या
authenticationDataन होने पर default रूप से authenticated मान लिया जाता था?विषय से थोड़ा हटकर, लेकिन लॉगिन स्क्रीन पर अपने-आप refresh होने वाले Windows Spotlight wallpapers मुझे बहुत पसंद थे
इसलिए मैंने उन्हें desktop wallpaper के साथ sync करने वाला script भी लिखा था। लेकिन मेरे Windows 10 पर वह बिना किसी वजह के रुक गया, इसलिए मैंने इसके बजाय Bing Image of the Day download करने वाला script लिखा: https://blog.est.im/2025/stdout-03