I have a redmi note 5. It has been asking for updates for a while, which I have been postponing. The reason is that my previous phone, a huawei, got locked into bootloop when I did update it, so I have been weary.  But since I'm starting to cave, I was wondering if there was a way to backup absolutely, utterly everything on the phone, to the point of being able to flash it if I have to, load the data again, and end up holding the exact same phone I did before all that.
I know I'm asking for the close-to-impossible -- as a real full-backup certainly requires root permissions. But still there are many folks around not wanting to root their devices -- afraid of voiding their warranties or bricking their devices, or just not having their devices supported by any rooting method.  I also know there were a lot of questions asked already on this topic, and I checked all of them having the backup tag -- none covers the entire topic, all just have pieces, and especially people new to Android (but other non-power-users as well) would have a hard time figuring out the best way.  So I want a detailed canonical answer to the question:  Not involving root-solutions, how to achieve a backup as close as possible to a full backup?  Please do not give simple one-liner answers like "Use app xyz [full-stop]." If mentioning an app (and I doubt a single app would be the answer here), include what parts are covered by it -- as well as ideas on how to fill the gaps it leaves. (And to make it absolutely clear: I know the first thing coming to mind is Titanium Backup -- I use it myself, but this does not apply here: This question is strictly about methods for non-rooted devices!) Moreover, the answer should be as generic as possible in terms of applying to a wide range of devices (i.e. it should not be restricted to one device or manufacturer).  I already mentioned having investigated all questions here tagged backup. These will certainly be helpful providing details for answers here, so I will list up the topmost ones concerning my question:            All these provide some details for my question (so feel free to get inspired by them) -- but I feel there are still details missing. Also it would be helpful to have a summary -- say, an answer including the full description of "the maximum possible".  A last criterium: While I'd consider cloud-based solutions legit, I'd favour local solutions. If you can provide both: all the better. But some people value privacy quite high (I'm one of them), and thus would not trust their data to some cloud service.    Thanks to Ryan, we now have a solution for a really complete backup of all apps and their data -- which I didn't dare to hope for! The only disadvantage: His solution only works for less than 10% of all Android users; namely those whose devices are running at least with Android 4.x.  So again, I ask the close-to-impossible: Any solutions applicable at least on Gingerbread (2.3.x) or, better, even Froyo (2.2.x) -- so they cover the majority of current devices? These solutions may involve multiple tools (try to keep it as simple as possible though; think of your mother to follow your instructions ;)  And keep in mind: NO ROOT!    To further motivate high-quality answers (and hopefully avoid low-quality ones), I will be a harsh one here: As I rarely do, I will down-vote answers not fitting the mentioned criteria on one end -- but on the other end, I will setup a bounty for the best answer (which cannot be done immediately, but earliest after 2 days).
Combine 4 cells in a table Here is a simple table.  I want to merge 4 cells. I want to combine the three "this" cells area in this table. I thought I have to use multirow and multicolum at same time. However, I could not find how to use it.  If possible, could you post the modified LaTeX source code?     My LaTeX code:  \documentclass{article} \usepackage{multirow}% http://ctan.org/pkg/multirow \usepackage{hhline}% http://ctan.org/pkg/hhline \begin{document}  \begin{table}[ph] \begin{center} \begin{tabular}{c|c|c|c|c} \hline \multirow{2}{*}{Raaa (k)} &amp; \multicolumn{4}{c}{C ()} \\ \hhline{~----}  &amp; 3.3 &amp; 2.5 &amp; 1 &amp; 0.5 \\ \hline \multirow{2}{*}{Raaa (k)} &amp; \multirow{2}{*}{this} &amp; this &amp; 0.5 &amp; 0.6\\ \hhline{~~~--}            &amp;                       &amp; this &amp; 0.7 &amp; 1.2 \\ \hline \end{tabular} \caption{R, C ripple size} \label{T:peak} \end{center} \end{table} \end{document} How do I dynamically invoke a class method in PHP? How can I dynamically invoke a class method in PHP? The class method is not static. It appears that   call_user_func(...)   only works with static functions?  Thanks. How to Straighten Curved UVs into Straight Belt Showing the actual 3D model of a curving ramp.  Shows the UVs of that model that blender did automatically. Shows the UV image that I need.   I am going put a road texture on it., but round faces are not helping me at all. All I need is straight belt kind of UV. What lubricants can be safely added to a laptop fan? I've got a fan in a laptop that occasionally makes some loud airplane-like noises.  It mostly happens about 10 seconds after booting up and lasts for 10-20 seconds.  It also occasionally happens when the computer is running, but very rarely.  Interestingly, it does not seem to happen when the processor is being used heavily.  The laptop does not have a discrete graphics card.  The fan is clean.  I'm not sure if the laptop is under warranty, but I trust my own skills much more than I trust the manufacturer (or the shipper).  Before I search for a matching fan and replace it, I thought I would see if it is safe to try any lubricants.  Are there any lubricants that are safe to use inside a laptop?  I don't want a fire or anything that will splatter and cause conductivity issues within the circuitry. Pros and cons of rooting using apps ("Soft Root") compared to other methods ("Hard Root") There are quite a few app based rooting methods. A recent review , points to some of them and there may be more apps, paid or otherwise.  From what I understand,   Plus Points   Ease of rooting Don't need a laptop or computer   Minuses   Based on exploits, so may not work if exploits are denied by OS updates Difficulty in unrooting (as I see on some forums for my device Huawei Honor 6)   Questions:    What are the pros and cons apart from above?  If a device has both options - app based rooting and rooting by methods by developers, which one should I opt for?   Note: I am not seeking app suggestion or recommendation. How can I best describe "making a new discovery"? How can I replace a relay with a MOSFET Transistor? I have this working         &ndash; Schematic created using   An Arduino commute both relays and a power adapter charge each battery at a time.  I would like to replace each relay by a MOSFET. How can I do that?  I think the solution bellow will not work because DRAIN is always connected to SOURCE and this will short circuit batteries. MOSFETS only isolate from SOURCE to DRAIN.  When the D9 is HIGH, D10 will be LOW so the power adapter will never be charging both batteries simultaneously.          Sorry for the messy schematic.  Thank you very much. I'm using the Webform module for Drupal 8. The module confirmation settings for a form are the following:   Page (redirects to new page and displays the confirmation message) Inline (reloads the current page and replaces the webform with the confirmation message.) Message (reloads the current page/form and displays the confirmation message at the top of the page.) URL (redirects to a custom path or URL) URL with message (redirects to a custom path or URL and displays the confirmation message at the top of the page.)   But how am I able to submit a form via AJAX so that the page doesn't reload on submit, but a confirmation message still replaces the form? What did I do wrong?    EDIT:  Here is the solution which works:  First you have to hook the form alter function and set an AJAX callback (as in ):  use \Drupal\Core\Form\FormStateInterface;  function MYTHEME_form_alter(&amp;$form, FormStateInterface $form_state, $form_id) {   if ( isset($form['#webform_id']) &amp;&amp; $form['#webform_id'] == 'MYWEBFORM' )   {     // add an AJAX callback to the form submission     $form['actions']['submit']['#ajax'] = array(       'callback' =&gt; '\Drupal\MYMODULE\Controller\DefaultController::processFormSubmission',       'event' =&gt; 'click',     );   } }   Then in the processFormSubmission function you can process the form (put use \Drupal\Core\Form\FormStateInterface; at the top of your file) like:  // Instantiate an AjaxResponse Object to return. $ajax_response = new \Drupal\Core\Ajax\AjaxResponse();  /* do sth */  // in the DOM: replace the form with the text 'form submitted' $ajax_response-&gt;addCommand(new \Drupal\Core\Ajax\HtmlCommand('#MYFORM', 'form submitted'));  return $ajax_response; "Startup Applications" not working Let $H$ be a subgroup of $G$ with $[G:H]=n$ and $G$ finite.  Let $G$ act on left cosets of $H$ by left multiplication.  Let $N$ be the kernel of the action.  Show that $[G:N]$ divides $n!$.  Ok so I have a theorem that says that if $G$ is simple then it embeds into $S_n$.  So if $G$ is simple than I'm done because $G$ divides $n!$ and thus $N$ divides $n!$ and hence $[G:N]$ divides $n!$.  Now I also know that $N$ is the largest normal subgroup of $G$ contained in $H$.  Thus if $G$ isn't simple then it contains some non-trivial normal subgroup $K$ and thus $K\cap H$ is normal in $H$ and by the 2nd Iso Theorem $H/K\cap H\cong KH/H$...    As you can see I'm not sure where to go from here. I was hoping to prove that $K\cap H$ wasn't trivial and thus that $N$ couldn't be trivial since it must contain $K\cap H$, but I'm not sure I can, and even if I could I'm not sure that would help me in showing that $[G:N]$ is small enough to divide $n!$.  Can anyone give some guidance?  Thanks. Store table in separate filegroup in SQL Server I have big SQL Server database, with a lot of blob data in some tables.  For performance optimization, I want to move one table to separate hard drive.  I created new filegroup, and "row data" file.  But, I can't change any parameters in table properties: they are all disabled.  And I don't know a way to enable it.  Can anybody help me? NSInvocation for Dummies? How exactly does NSInvocation work? Is there a good introduction?  I’m specifically having issues understanding how the following code (from Cocoa Programming for Mac OS X, 3rd Edition) works, but then also be able to apply the concepts independently of the tutorial sample. The code:  - (void)insertObject:(Person *)p inEmployeesAtIndex:(int)index {     NSLog(@"adding %@ to %@", p, employees);     // Add inverse of this operation to undo stack     NSUndoManager *undo = [self undoManager];     [[undo prepareWithInvocationTarget:self] removeObjectFromEmployeesAtIndex:index];     if (![undo isUndoing])         [undo setActionName:@"Insert Person"];      // Finally, add person to the array     [employees insertObject:p atIndex:index]; }  - (void)removeObjectFromEmployeesAtIndex:(int)index {     Person *p = [employees objectAtIndex:index];     NSLog(@"removing %@ from %@", p, employees);     // Add inverse of this operation to undo stack     NSUndoManager *undo = [self undoManager];     [[undo prepareWithInvocationTarget:self] insertObject:p                                        inEmployeesAtIndex:index];     if (![undo isUndoing])         [undo setActionName:@"Delete Person"];      // Finally, remove person from array     [employees removeObjectAtIndex:index]; }   I get what it’s trying to do. (BTW, employees is an NSArray of a custom Person class.)  Being a .NET guy, I try to associate unfamiliar Obj-C and Cocoa concepts to roughly analogous .NET concepts. Is this similar to .NET’s delegate concept, but untyped?   This isn’t 100% clear from the book, so I’m looking for something supplemental from real Cocoa/Obj-C experts, again with the goal that I understand the fundamental concept beneath the simple(-ish) example. I'm really looking to be able to independently apply the knowledge -- up until chapter 9, I was having no difficulty doing that. But now ...    Thanks in advance! Search with Auto-Complete (like Gmail / Intellisense) Maximum Champion Growth size I was reading about Lulu (new champion) and saw this:     Wild Growth (Ultimate) - Lulu enlarges an ally, knocking enemies away   from them and granting them a large amount of bonus health. For the   next few seconds, that ally gains an aura that slows nearby enemies.   Then I start wondering: what is the max size that a champion reach ? Is there a Maximum size ?  Example: Cho'Gath's Feast +  +  + Wild Growth + Something that make champions grow in size. Cho'Gath will grow every time ? or it will stop at some point ? Since a few months, on one of the desktop Ubuntu 14.04 systems I use, CPU has regularly been going up to 80-100% for no apparent reason. htop would usually attribute responsability to file system processes, such as nemo or ntfs. To get CPU back down I would kill these process, which in some cases would lead to loss of access to the file system and a consequent restart.  Days ago I noticed that whenever this situation happened another process was always present also using high CPU: mediascanner-service-2.0. Some research lead me to  that simply advised its removal. So I did.  The end result has been unexpectedly positive: not only are the high CPU load episodes gone, the system is altogether much faster. The speed up of the Lens is dramatic: finding an application like Calc now takes 2 seconds at most when previously it took some 20 seconds. Finding a file takes now some 5 seconds, whereas before it took in the order of 30 seconds. Heavy programmes like Eclipse are starting up faster and workspaces are more fluid. There seems to be also an overall reduction in the frequency of disk access.  What is exactly this mediascanner2.0 package? Is it part of Unity 7 or a dependency that gets installed a posteriori? Is it possible to prevent its installation?  Update: following  it is possible to track this package down to indicator-session:  $ sudo aptitude why mediascanner2.0 i   indicator-session         Recommends indicator-applet (&gt;= 0.2) | indicator-renderer i A unity8                    Provides   indicator-renderer                             i A unity8                    Recommends unity-scope-mediascanner2                      pi  unity-scope-mediascanner2 Depends    mediascanner2.0                                  Apparently, mediascanner2.0 (and the Unity 8 shell) are part of the base 14.04 system. Left to answer is the exact function of this rogue package. For any prime number $p$, let $A_p$ be the set of integers $d\in \{1,2,\dots, 999\}$ s. Then what is the cardinality of $A_p$? Is there any way to automatically get notified of property changes in a class without having to write OnPropertyChanged in every setter?  (I have hundreds of properties that I want to know if they have changed).    Anton suggests .  I've actually used the "Castle" library for something similar in the past, and while it does reduce the amount of code I've had to write, it added around 30 seconds to my program startup time (ymmv) - because it's a runtime solution.  I'm wondering if there is a compile time solution, maybe using compile-time attributes...    Slashene and TcKs give suggestions which generates repetitive code - unfortunately, not all my properties are a simple case of m_Value = value - lots of them have custom code in the setters, so cookie-cutter code from snippets and xml aren't really feasible for my project either. How to add desktop shortcut for URL, ignoring web app manifest? Goal:  Have a desktop shortcut that opens  , ignoring the contained web app manifest that otherwise "overrides" the saved shortcut to  and with "display": "standalone".  I had this working previously on an older Android phone before a replacement / upgrade.  Prior to the upgrade, I was able to long-press and open individual articles in new tabs - as well as copy link shortcuts to specific articles, as well as all of the other features and functionality that Chrome has to offer.  Here is just a partial selection of references of other users complaining about the same:       Using  provides a temporary successful work-around.  However, I can't find a successful way to add a link for this to my home screen.  The "Add to Home screen" option within Chrome instead saves a link to  - and in such a way that it opens as a web application instead of a web page within Chrome:       On a desktop operating system, this would be a non-issue.  (Create shortcut, enter desired URL, done.)  Attempt 1: Provide my own Manifest  So I created my own manifest - editing  to change the start_url attribute to https://news.google.com/news/i#0, and the display attribute from standalone to browser.  I then created my own HTML page that simply contained the below - then self-hosted both on a local web server:  &lt;html&gt;         &lt;head&gt;                 &lt;Title&gt;Google News&lt;/Title&gt;                 &lt;link rel="manifest" href="/news/manifest.json"/&gt;         &lt;/head&gt;         &lt;body&gt;                 Test         &lt;/body&gt; &lt;/html&gt;   However, this doesn't work:  Despite the shortcut being saved with the desired name and icon, it links back to my self-hosted HTML page, and not the indicated start_url.  Unfortunately, it appears that cross-domain URLs are not allowed per the manifest intent - as per  and  .  Attempt 1b: MITM website  Within the confines of my own local network, I figured I could try to  (MITM) the website to temporarily provide a desired manfiest to use for addition to the home screen.  Unfortunately, the website uses  here, which appropriately blocks the attempt.  Regardless - this is way too much work for what should be a simple effort.  Attempt 2: Widget Bookmark  Unfortunately, it looks like the 1x1 bookmark widget was removed in Chrome 48, as per  .  The suggested work-around is to use the "Add to Home screen" feature within Chrome.  Goto 10 / see beginning.  Attempt 3: Use the default-provided "Internet" browser  Unfortunately, using "Add shortcut on Home screen" in the default-provided "Internet" browser produces the same result as Chrome.  Consideration 4: Use a custom app / widget  Could probably write and install a custom application or widget that could be added to the home screen to meet the goal.  Or don't re-invent the wheel, and use an existing one.  Some possibilities:   "More Shortcuts":  "Shortcut Customizer":    Conclusion  How can someone create a desktop shortcut to an arbitrary URL, ignoring a provided web app manifest? How do I add myself back as a sudo user? How do I boot into a root shell? When booting to the graphical desktop fails we sometimes are recommended to boot into a "root shell" or to boot in "recovery mode".  How do I do that?