I have a hand-me-down WordPress site (passed down from one dev to another, to another, and so on), which is more or less a garbled mess. I'm on the fence between wanting to optimize it and starting fresh. After checking the current state of CSS files with Chrome's Code Coverage, it seems that a lot of the rules (98%, according to the Code Coverage tool) are unused.
Other than testing different resolutions and checking if anything is changing, is there a better (more efficient) way for me to know whether the CSS rules are truly unused? I've been resizing the browser window, and reloading the page (just one out of many), but the number of unused bytes was always the same.
Related
When I type the command eww and enter the url google.com it just loads the front page of Google nicely just the way it should be loaded.
But when i search for YouTube on this Google front page and hit search, a new buffer starts but nothing gets loaded on it. Just nothing.
Only the cursor remains still at the beginning of the buffer for the whole time.
I believe this is also your question?
https://old.reddit.com/r/emacs/comments/vc3zxs/the_eww_doesnt_display_my_html_file_like_it/
Both questions can be answered thus:
eww is not a fully-featured web browser. Not by a long shot. It handles much of the basic markup, which is entirely sufficient in certain cases; but it is absolutely not a full replacement for the likes of Firefox as far as the web in general is concerned.
Of particular note1:
Stylesheets are not supported (which seems relevant to the other question).
Javascript is not supported (which is relevant to this question).
That all said, there is experimental work for handling <video> elements in eww if you have built Emacs from the master branch with xwidget support. See https://lars.ingebrigtsen.no/2021/11/09/finally-videos-in-eww/ for more. This will (probably) be included in Emacs 29.
1 In an ideal world, most web sites would function acceptably in the absence of both these things. In reality, that's not even close to accurate. The web developers who care about users without javascript have been on the losing side of that battle for about 15 years, and it's only getting worse as time goes on.
On the positive side, I think the CSS situation is actually improving slightly on account of the Accessibility requirements which various governments have introduced in recent years, as these requirements always have "use correct semantic markup" at their core. That still doesn't help you when a lack of javascript results in a blank page, but it's something...
I'm trying to find a solution for high Max Potential First Input Delay on a website I'm auditing. I'm evaluating all the Long Tasks once FMP is triggered. While most are being marked as Recalculated Style, I'm not getting the exact code location of where that is, as shown in the attached screenshot.
Anyone has a recommendation of how to better evaluated the exact code causing the bottleneck
Chrome DevTools Performance Long Task Missing script line
Reply to wOxxOm:
OK so to understand you are referring to the Reveal feature as opposed to the to Bottom-up view.
I have a huge text codebase on Windows and I am facing the problem of searching arbitrary words across the whole project.
Seemingly, no IDE scores good performances when doing so. What I am looking for is a free editor that:
searches full text through the folder and subfolder in an acceptable time (ideally less than 10 seconds for 10M lines of code).
Almost surely, the previous feature entails in using an index. So I'd like such index to be automatically in sync with file changes. Or at least to have the option to rebuild it on demand incrementally (not a full rebuild)
shows the search results in context (with snippets of the surroundng code around, pretty much like Sublime does).
ideally, be able to search for regex patterns
...and even, to search for regex through multiline strings.
I do not need it to be code-aware, but if it were able to understand PL/SQL it would be my dream editor.
So far my first choice was Sublime, which is an incredibly responsive editor.
Sublime 3 shipped with an internal index, but unfortunately for me, indexes just the symbols, not the full text.
The built-in brute force search cannot use that index and takes around 40 mins to return the results.
I tried several Sublime extensions which plug into external indexing tools (CodeSearch, Platinum Searcher, Whoosh). But all failed to provide automated or incremental index rebuild, or when they did offer those features, the indexing itself took so much memory that the entire app became unresponsive forever, or the plugin host broke down.
I also tried similar approaches with Atom and Visual Studio Code, but I believe that the editors and their plugins weren't written for such an insanely large codebase as I have at hands.
The only editor that performed well was Eclipse with the InstaSearch plugin.
However the speed that I gain in the search is lost in ordinary usage: opening a file, scrolling through its content, etc (not to mention that the plugin uses Lucene's syntax, not regex).
(It feels like if one is not using Java related technologies, there is no real benefit in using Eclipse which really offsets the heaviness of operating with it)
Short version: see topic
Detailed version:
I want to use a specific 3rd party theme for Windows. I'm already using an open source solution which I've compiled myself to disable Window's restriction on Themes.
In the past, when using 3rd party theme related mods that come with DLLs (for example authui.dll for the login ui, or imageres.dll for modding system icons), I avoid using unknown DLLs by simply copying the unknown DLL's theme related resources (such as Bitmaps, Icon groups or UI scripts) unto it's virgin MS Dll counterpart. I call this resource grafting, where resource are changed but the executable elements of DLLs or exes are left alone.
Going back to the theme I want to install, I used sha256 hashing to determine that only aero.msstyles which is also modifiable by resource hacker. So I did the same thing I usually do and transferred resources from the third party theme to Window's own aero.msstyles. Problem is that I ran into a type of resource that I am unable to read or know the contents of. It's called VARIANT. From some experiments done in a VM, it seems to be some kind of binary UI script that resource hacker is unable to decompile. I usually like to be able to read any UI scripts that I transfer but I am unable to do so with this one.
Would this constitute any real security risks? Can UI scripts be side-loaded with some kind of exploit? Seems unlikely to me since the function of a theme file (msstyle) is to coordinate the appearance of the system UI but I don't know enough about the inner working of the whole theming system to be sure. I thought I'd get some other point of views before I take the theme out of the Virtual Machine.
I used vBinDiff to compare the hex code the altered VARIANT/NORMAL binary to that of the original theme. You can also copy the binhexes and save them to two text files which you would compare with WinMerge.
vBinDiff and WinMerge will highlight what modifications and what additions/substractions were made to the binaries, displaying them side by side. I read through the differences, 90% of them were no larger than 4 octals (4bytes), typically what you would expect to see when modding colors using a hex editor. The biggest divergence was an added 32bytes of code.
There are two possible explanations for the such an addition: (1) the author added extra image resources and added the entries necessary to reference them, (2) there is some kind of unwanted code that has been slipped in.
To address the possibility of 2, I did a search to see how small trojan code can get. How likely is it that a trojan has been stuffed into 32bytes if compiled UI scripts? I found a few mentions of an old 17byte virus from the DOS era called trivial which I disegarded right away because it would become apparent very quickly given it's known behavior. As far as full fledged trojans with backdoor and downloading abilities, the smallest I found was 20kb (trojan tinba), discovered in 2012. There is also Catchy32 which is still considered a Trojan but with simpler and very specific functionalities and that one's about 580 bytes (reference). Based on this info, I established that it is highly unlikely (if not impossible) to slip any code in 32bytes of code and established that the resource in question is clean.
Mind you, this doesn't answer the question I asked (can binary UI script resources in a theme carry mal-code) but it does solve my dilemma. Thought I'd share it.
Theres a few questions similar to this, so I'll try to be clear as possible.
We have an existing, fairly large and complex, GWT webgame I have been asked to make work offline. It has to be offline in pretty much the strictest sense.
Imagine we have been told to make it work off a CD Rom.
So installation is allowed, but we cant expect the users to go to a Chrome/Firefox store and install it from there. It would need to be off the disc.
Likewise, altering of the browsers start-up flags would be unreasonable to expect of users.
Ideally, it would be nice if they just clicked a HTML file for the start page and it opened in their browsers of choice.
We successfully got it working this way in Firefox by adding;
"<add-linker name='xsiframe' />"
To our gwt.xml settings. This seems to solve any security issues FF has with local file access.
However, this does not solve the problem for Chrome.
The main game starts up, but various file requests are blocked due to security issues like these;
XMLHttpRequest cannot load file:///E:/Game%20projects/[Thorn]%20Game/ThornGame/text/messages_en.properties. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.MyApplication-0.js:34053 com_google_gwt_http_client_RequestBuilder_$doSend__Lcom_google_gwt_http_client_RequestBuilder_2Ljava_lang_String_2Lcom_google_gwt_http_client_RequestCallback_2Lcom_google_gwt_http_client_Request_2 MyApplication-0.js:34053
Now I was aware same origin policy issues might popup as during development we often tested locally using flags in chrome to bi-pass them.
Thing is...now I dont know how to get around them when we cant use startup flags.
Obviously in the example given its just the .properties file GWT uses to get some language related text. I could dump that inline in one way or another.
However, its only one of many,many,many files being blocked.
The whole game was made to run off *.txt game scripts on the sever - to allow easy updating by non-coders. Really the actual GWT code is just an "engine" and all the XMLHttpRequested files supply the actual "game".
These files are of various types; csv, txt, ntlist, jam.
The last two being custom extensions for what are really just txt files.
All these files are blocked by chromes security. It seems from what I can make out only images are allowed to be accessed locally.
Having all these files compiled in would just be impossible, as they are not fixed in number (ie, one central .txt file determains various scene .txt files which in turn determain various object files and directory's...).
Putting all this into a bundle would be nightmare to create and maintain.
So in essence I need some way to supply a offline version of a GWT project that can access a large number of various files in its subdirectories without security issues.
So far all I can think of is;
A) Theres something I can tell chrome via html or gwt that allows these files to be read in Chrome like FF can. (I suspect this isn't possible).
An alternative to XMLHttpRequest maybe?
B) I need to somehow package a game+a webbrowser in a executable package that has permission to access files in its directory's. (http://www.appcelerator.com/titanium ? ?? ).
C) I need to package and have the user run a full webserver that can then deliver all these files in a XMLHttp accessible way.
D) Bit of a funny one...we cant tell the user to add flags to browser start up...but Maybe I could write a game installer which just detects if they have Chrome or Firefox. It then opens up the games html in their browser with the correct flags for them? This would open up security issues if they browse elsewhere with that instance though, so Id presumably need other flags to disable the url bar if that's possible.
I am happy to make various changes to our code to achieve any of this - but as mentioned above theres no way to determain all the files needing to be accessed at compile time.
And finally, of course, it all has to be as easy as possible for the end user.
Ideally just clicking a html file, or installing something no more complex then a standard windows program.
Thanks for reading this rather long explanation, any pointers and ideas would be very welcome. I especially will appreciate multiple different options or feedback from anyone that's done this.
========================================
I accepted the suggestion to use Chromiumembedded below.
This works and does what I need (and much much more)
To help others that might want to use it, I specifically made two critical changes to the example project;
Because CEF needs a absolute path to the web apps local html, I wrote a c++ function to get the directory the .exe was launched from. This was a platform specific implementation, so if supporting a few OS's (which CEF does) be sure to write dedicated code for each.
Because my webapp will make use of local files, I enabled the Chrome flag for this by changing the browser settings;
browser_settings.file_access_from_file_urls = STATE_ENABLED;
These two changes were enough to get my app working, but it is obviously the bare minimum to make a application. Hopefully my finding will help others.
I'd suggest going the wrapper route. That is, provide a minimal browser implementation that opens your files directly. Options are Chromium Embedded[1]. If the nature of the application absolutely requires the files to be served as non-file urls then bundle a minimal webserver, have the on-disk executable start the server and open the bundled browser with whatever startup arguments you want.
[1] https://bitbucket.org/chromiumembedded/cef