La gente se queja de su privacidad en el trabajo (te pagan por hacer X, no por hacer X e Y o Z) y después se bajan el faceapp este y 50 más. Sistemas privativos bla bla bla. O una cosa o la otra no?
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: MiguelCanellas en 24 Octubre 2019, 02:37 AM
Lo puse en pastebin por que me da error en el foro, acá esta mi respuesta:
https://pastebin.com/LVBANWfB
CitarBievenido blablabla
...
...
Recompensas:
Fallos muy graves:
Mención en - example.com/honor.html
Medalla diamante en - example.com/Miperfil.html
Funcionalidades extra en - example.com/Miperfil.html
...
Fallos graves:
...
Fallos a buscar:
Todos los fallos de seguridad en aplicación.
Comportamientos extraños o indevidos.
...
Cómo buscar:
No utilizar herramientas o realizar tareas que consuman muchos recursos del servidor o banda ancha.
...
Reporta los fallos a:
seguridad@example.com
Sugerencias a:
sugerencias@example.com
Cita de: Pasos:
Descargar Android Studio desde su web.
Extraer .zip en /home
Terminal:
$sudo su
$cd SDKinstallfolder
$cd bin
$./studio.sh
No import
Next -> Custom -> Next
Android SDK directory -> /home/Desktop new folder
Finish. Close.
Download NDK
Ir a la web.
older versions -> Agree terms.
Android NDK Revision 10e(May 2015) (Las hay más recientes pero no eran compatibles, no sé si ahora hay una versión más reciente sin errores de compatibilidad.)
Download Java SE Dev Kit
Ir a la web.
Java SE8u181 Linux-x64.tar.gz
Desktop make new folder to install NDK
Desktop make " " "
Download QT (ir a la web y darle a : Go open source - autodect download)
Extract JDK.gz file
Extract NDK
Extract QT installer using :$ chmod +x qt... (Darle a Tab y se completa la ruta)
$./qt.run
Next -> Skip -> Next
Select installation folder -> Desktop QT
QT -> checkbox QT 5.11.2 (La versión que quieras, aqui nl hay problemas de compatibilidad)
Tools -> QT installer framework 3.0
Next, agree, install.
<!DOCTYPE html>
<!-- Indica que es un documento de HTML5 -->
<meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport'/>
<!-- Fija la vista para Android -->
<meta charset="UTF-8">
<!-- Indica el encoding del documento para que el navegador lo reconozca. -->
<html>
<!-- Inicio de la página web -->
<head>
<!-- Inicio de la cabecera, se usa para codigo que no va a ver el usuario directamente sobre la página -->
<title>Interfaz</title>
<!-- Indica el título de la página, por ejemplo Nueva Pestaña es un título por defecto -->
<script>
/* A partir de aquí deja de ser código HTML y pasa a ser código javascript */
function CambiarColorRectangulo()
/* Se crea un función(Es como un programa nuevo) y se le da un nombre.
Entre los paréntesis ( ) pueden ir datos para función. En este caso no le puse */
{
/* Todo lo que esté dentro de estos paréntesis pertenece a la función.
Es lo que la función va a hacer. */
var Rectangulo1 = document.getElementById('Rectangulo1');
/* Guarda con el nombre Rectangulo1 un rectángulo que se encuentra más adelante.
Por si no te queda claro y por simplificar, todo este código javascript de la función se ejecutará
mucho más adelante. */
var Rectangulo2 = document.getElementById('Rectangulo2');
/* Lo mismo que lo anterior pero con otro rectángulo */
var r = Math.floor(Math.random() * 255);
/* Se guarda un número aleatorio entre 0 y 255. */
var g = Math.floor(Math.random() * 255);
/* Se guarda otro número aleatorio*/
var b = Math.floor(Math.random() * 255);
/* Se guarda otro número aleatorio */
Rectangulo1.style.fill = 'rgb(' + r + ', ' + g + ' , ' + b + ')';
/* Se le añade un estilo al rectángulo1 con los 3 númeos aleatorios.
Cada número equivale a un color. Se mezclan los 3 colores para obtener un color nuevo.
La r (red) equivale a la cantidad de rojo. 0 = Sin rojo, 255 = Mucho Rojo.
La g (green) lo mismo pero para el color verde.
La b (blue) lo mismo pero para el azul.
*/
Rectangulo2.style.fill = 'rgb(' + r + ', ' + g + ' , ' + b + ')';
/* Los mismos colores pero para otro rectángulo */
}
/* Se acaba lo que hace la función.
Como resumen, esta función lo que va a hacer es:
Cada vez que le toques con el dedo a un rectángulo, se pintarán
los 2 rectángulos de un color aleatorio.
*/
</script>
<!-- Ya se acabó el código de javascript, asique estamos otra vez en el HTML. -->
</head>
<!-- Se cierra la cabecera -->
<body>
<!-- Se abre el cuerpo del documento donde se define todo lo que se va a ver -->
<div class="Web" id="Banner_StringManolo" style="text-align:center;">
<!-- Se crea un contenedor, le damos varios nombres identificadores e indicamos que todo
lo que pongamos dentro se centre -->
<div class = "BannerFijadoAbajo">
<!-- Otro contenedor para otro Banner(El rectángulo de adorno) -->
<svg style = "display:block" width="100%" height="20">
<!-- Svg son imágenes que crea el navegador y crecen automáticamente con el zoom -->
<rect width="100%" height="22" style="fill:rgb(0,0,0);stroke-width:1%;stroke:rgb(0,0,0)" id="Rectangulo2"
onclick="CambiarColorRectangulo();vibrate(100);"/>
<!-- Crea un rectángulo que ocupe todo el ancho de pantalla, lo pintamos de negro y le ponemos borde también negro
En el onclick(Tras hacer click en el rectángulo), se activa el javascript que acabamos de ver, para cambiar el color por uno aleatorio.
Al hacer click también llamamos a otro código de javascript que veremos más adelante.
-->
</svg>
<!-- Acabamos de usar SVG -->
</div>
<!-- Cerramos el contenedor del banner de la parte inferior. -->
<div class = "BannerFijado">
<!-- Contenedor para el banner de arriba -->
<svg style = "display:block" width="100%" height="40">
<!-- Iniciamos el area límite de SVG sobre la que crear gráficos -->
<g>
<!-- Contenedor para agrupar varios SVG distintos. En concreto para poder dibujar texto sobre el rectángulo -->
<rect width="100%" height="42" style="fill:rgb(0,0,0);stroke-width:1%;stroke:rgb(0,0,0)" id="Rectangulo1"
onclick="CambiarColorRectangulo();vibrate(50);"/>
<!-- Desactivado para conexiones lentas y testeos. Lo dejo como ejemplo de fuente custom.
<defs>
<style>
@import url("http://fonts.googleapis.com/css?family=Audiowide");
<text x="50%" y="50%" font-family="Audiowide" font-size="30%" fill="white">MiPrimeraApp</text>
</style>
</defs>
-->
<style><![CDATA[svg text{stroke:none}]]></style>
<!-- Elimina los bordes del texto SVG -->
<text x="50%" y="50%" font-size="90%" fill="white" dominant-baseline="middle" text-anchor="middle">MiPrimeraApp</text>
<!-- Crea texto SVG (escala junto al rectángulo) -->
</g>
<!-- La g sirve para meter el texto dentro del rectángulo -->
Tu navegador no soporta Scalable Vector Graphics.
<!-- Si el navegador o WebView no pudiese mostrar los SVG se mostraría este mensaje -->
</svg>
<!-- Se acabó el SVG -->
</div>
</div>
<!-- Cerrando contenedores en los que creamos gráficos SVG -->
<br><br><br>
<!-- Saltos de línea -->
<div id="content-window" class="WebIncrustada">
</div><br>
<!-- Contenedor en el que se cargará una página web -->
<input type="text" id="url_a" value="http://www.example.com"><br>
<!-- Un input para escribir una URL -->
<input id="btn" type="button" value="Ver" />
<!-- Un botón que se usará para ver una Web -->
<input id="btn_a" type="button" value="Visitar" />
<br><br>
<!-- Un botón que se usará para ir a una Web -->
<div class="ContenidoDelSitio" >
<br><br><br><br><br>
<!-- Estilos para hacer más bonita y ordenada la web -->
<style>
.BannerFijado{
position: fixed;
left: 0;
right: 0;
top: 0;
}
.BannerFijadoAbajo{
position: fixed;
left: 0;
right: 0;
bottom: 0;
}
.ContenidoDelSitio{
margin: auto;
width: 50%;
height: 50%;
padding: 10px;
text-align: center;
bottom: 0
margin-left: auto;
margin-right: auto;
}
.WebIncrustada{
width: 100%;
height: 200%;
text-align left;
border: 1px solid green;
}
</style>
<script>
/* javascript: */
btn.onclick =
function(){
var temp = document.getElementById("url_a").value;
document.getElementById("content-window").innerHTML='<object type="text/html" data="'+temp+'"></object>';
/* Si se hace click en el botón Ver, se pega el HTML de la página web que ponga el usuario.
Necesita mejoras para compatibilidad. */
btn_a.onclick =
function()
{
window.location = temp;
}
/* Si se le da al botón Ir, se abre la página en el WebView */
}
</script>
<script>
/* Con esta función haremos vibrar el Smartphone. */
function vibrate(milliseconds)
{
Android.Vibrate(milliseconds);
} /* Llama al Vibrate en Java */
</script>
</body>
</html>
import android.webkit.WebView;
import android.webkit.WebSettings;
import android.webkit.WebViewClient;
import android.webkit.WebResourceError;
import android.webkit.WebResourceRequest;
import android.annotation.TargetApi;
import android.app.Activity;
import android.os.Bundle;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebSettings;
import android.webkit.WebViewClient;
import android.webkit.WebResourceError;
import android.webkit.WebResourceRequest;
import android.annotation.TargetApi;
import com.mimarca.MiPrimeraApp.R;
public class ActividadPrincipal extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.principal_actividad);
}
}
private WebView MiWebView;
MiWebView = new WebView(this);
WebSettings webSettings = MiWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
String MiUserAgent = "MiPrimeraApp";
MiWebView.getSettings().setUserAgentString(MiUserAgent);
$VisitanteDesdeMiApp = 'MiPrimeraApp';
$UserAgentVisitante=$_SERVER['HTTP_USER_AGENT'];
if ($UserAgentVisitante == $VisitanteDesdeMiApp)
{
MostrarWebEspecial();
}
else
{
MostrarWebNormal();
}
MiWebView.addJavascriptInterface(new JSInterface(this), "Android");
function vibrate(milliseconds)
{
Android.Vibrate(milliseconds);
}
MiWebView.setWebViewClient(new WebViewClient()
{
@TargetApi(android.os.Build.VERSION_CODES.M)
@Override
public void onReceivedError(WebView view, WebResourceRequest req, WebResourceError rerr)
{
onReceivedError(view, rerr.getErrorCode(), rerr.getDescription().toString(), req.getUrl().toString());
}});
MiWebView.loadUrl("file:///android_asset/webinterfaz.html");
setContentView(MiWebView);
package com.mimarca.MiPrimeraApp;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebSettings;
import android.webkit.WebViewClient;
import android.webkit.WebResourceError;
import android.webkit.WebResourceRequest;
import android.annotation.TargetApi;
import com.mimarca.MiPrimeraApp.R;
public class ActividadPrincipal extends Activity
{
private WebView MiWebView;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.principal_actividad);
MiWebView = new WebView(this);
WebSettings webSettings = MiWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
String MiUserAgent = "MiPrimeraApp";
MiWebView.getSettings().setUserAgentString(MiUserAgent);
MiWebView.addJavascriptInterface(new JSInterface(this), "Android");
MiWebView.setWebViewClient(new WebViewClient()
{
@TargetApi(android.os.Build.VERSION_CODES.M)
@Override
public void onReceivedError(WebView view, WebResourceRequest req, WebResourceError rerr)
{
onReceivedError(view, rerr.getErrorCode(), rerr.getDescription().toString(), req.getUrl().toString());
}
});
MiWebView.loadUrl("file:///android_asset/webinterfaz.html");
setContentView(MiWebView);
}}
package com.mimarca.MiPrimeraApp;
public class JSInterface {
}
import android.content.Context;
import android.os.Vibrator;
import android.webkit.JavascriptInterface;
import android.telephony.SmsManager;
Context mContext;
JSInterface(Context c)
{
mContext = c;
}
@JavascriptInterface
public void Vibrate(long milliseconds)
{
Vibrator v = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(milliseconds);
}
package com.mimarca.MiPrimeraApp;
import android.content.Context;
import android.os.Vibrator;
import android.webkit.JavascriptInterface;
public class JSInterface
{
Context mContext;
JSInterface(Context c)
{
mContext = c;
}
@JavascriptInterface
public void Vibrate(long milliseconds)
{
Vibrator v = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(milliseconds);
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mimarca.MiPrimeraApp"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="25" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity android:name="com.mimarca.MiPrimeraApp.ActividadPrincipal">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
Cita de: Shester1996 en 21 Octubre 2019, 14:43 PMTal como tienes el código solo necesitas hacer echo a $i para saber la posición:
como puedo hacer para que pueda mostrar numeros randon con su posicion [Array)
por ejemplo el 1 esta en la posicion 1
for ($i=0;$i<=29;$i++){
$valor [$i] = rand(0,29);
echo $valor[$i]. ": ";
}
$i = -1;
foreach($valor as $value)
{
++$i;
echo "Posición " ."$i" .", Valor ". "$value" ."\n";
}
Cita de: crazykenny en 21 Octubre 2019, 09:58 AMLo antiguo es la tecnología, no los disquetes.
cuanto mas antiguo y mas se use algo, es mas probable que pueda fallar.