Usando Google Analytics no Ionic

Código para Configuração (app.js)

function _waitForAnalytics() {
  if (typeof analytics !== 'undefined') {
    $cordovaGoogleAnalytics.startTrackerWithId('UA-80968008-1');
  } else {
    setTimeout(function() {
      _waitForAnalytics();
    }, 250);
  }
};
_waitForAnalytics();

Código para Acompanhamento de Página

function _waitForAnalytics() {
  if (typeof analytics !== 'undefined') {
    $cordovaGoogleAnalytics.trackView('Home');
  } else {
    setTimeout(function() {
      _waitForAnalytics();
    }, 250);
  }
};
_waitForAnalytics();

Uninstalling Java JDK MacOS

To uninstall the JDK, you must have Administrator privileges and execute the remove command either as root or by using the sudo tool.

Navigate to /Library/Java/JavaVirtualMachines and remove the directory whose name matches the following format:

/Library/Java/JavaVirtualMachines/jdkmajor.minor.macro[_update].jdk

For example, to uninstall 8u6:

% rm -rf jdk1.8.0_06.jdk

Do not attempt to uninstall Java by removing the Java tools from /usr/bin. This directory is part of the system software and any changes will be reset by Apple the next time you perform an update of the OS.

Como remover o Android Studio do Mac

Siga os seguintes passos no terminal:

rm -Rf /Applications/Android\ Studio.app
rm -Rf ~/Library/Preferences/AndroidStudio*
rm ~/Library/Preferences/com.google.android.studio.plist
rm -Rf ~/Library/Application\ Support/AndroidStudio*
rm -Rf ~/Library/Logs/AndroidStudio*
rm -Rf ~/Library/Caches/AndroidStudio*

Se você quer apagar todos os projetos:

rm -Rf ~/AndroidStudioProjects

Para remover arquivos relacionados ao gradle (caches & wrapper)

rm -Rf ~/.gradle

Use o comando abaixo para apagar todos os Android Virtual Devices(AVDs) e *.keystore. Nota: Esta pasta é utilizada por outras Android IDE, então se você ainda estiver usando outra IDE, não apague esta pasta)

rm -Rf ~/.android

Para apagar o Android SDK tools

rm -Rf ~/Library/Android*

Esconder opções de um select que funciona em todos os browsers

jQuery.fn.toggleOption = function( show ) {
    jQuery( this ).toggle( show );
    if( show ) {
        if( jQuery( this ).parent( 'span.toggleOption' ).length )
            jQuery( this ).unwrap( );
    } else {
        if( jQuery( this ).parent( 'span.toggleOption' ).length == 0 )
            jQuery( this ).wrap( '<span class="toggleOption" style="display: none;" />' );
    }
};

Após implementada a função, se utiliza da seguinte forma:

$(selector).toggleOption(true); // mostrar option
$(selector).toggleOption(false); // esconder option

Transpor uma Array em PHP

Com o PHP 5.6 um novo tipo de função foi criado e facilitou bastante algumas operações. Uma delas é a função variádica (Link) onde você pode usar um operador “…” e adicionar quantos parâmetros quiser em uma função. Por exemplo:

function f($req, $opt = null, ...$params) {
    // $params é uma variável contendo todos os outros argumentos.
    printf('$req: %d; $opt: %d; number of params: %d'."\n",
           $req, $opt, count($params));
}

f(1);
f(1, 2);
f(1, 2, 3);
f(1, 2, 3, 4);
f(1, 2, 3, 4, 5);

Assim, ficou fácil fazer a transposição de uma array:

function transpose($array) {
    return array_map(null, ...$array);
}

Antigamente o código era ligeiramente maior, mas parecia mais um hack do que uma implementação:

function transpose($array) {
    array_unshift($array, null);
    return call_user_func_array('array_map', $array);
}

Espero ter ajudado!

Plugins Cordova não rodam no Ionic View

Estava desenvolvendo quando ocorreu um problema com o Ionic View no iOS. Ele não estava rodando como deveria. O SQLite não estava funcionando no iOS, mas no Android sim.

Buscando na Web descobri a solução postada pelo próprio time do Ionic Framework:

EDIT: To anyone else I’ve linked to this comment, this is a small workaround for the issue of plugins not working correctly in View. Cordova doesn’t load immediately in View, so Ionic’s check for isWebView to determine if it should wait for the Cordova deviceready event returns false and things likeionic.Platform.ready() execute immediately, which is often before plugins and Cordova have had a chance to initialize.

So if you guys aren’t adverse to a small hack, adding <script>window.phonegap = {}</script> to your<head> before Ionic loads should force it to wait for the deviceready event without stepping on Cordova’s toes once it does load. Much simpler than writing $timeout everywhere.

Simplesmente coloquei a seguinte linha antes dos css e scripts no www/index.html:

<script>window.phonegap = {}</script>

Fiz o upload pro Ionic View e resolveu o problema!

Espero que também possam ser ajudados por isso.