#array_column
Explore tagged Tumblr posts
Text
PHP / array_column
Esta funcion nos permite seleccionar los datos de una columan de un array, espero les resulte util y ahora si buen finde!
Bienvenidos sean a este post, hoy veremos una funcion para los arrays. Esta funcion nos devuelve los valores de una sola columna en un array, antes de comentar mas veamos como es su sintaxis: array_column(array, columna[, indice]) Los primeros dos argumentos son los obligatorios siendo el primero el array que trabajaremos y el segundo sera la columna que seleccionaremos para poder extraer la…
View On WordPress
0 notes
Text
PHP 다중배열 정열 How to Sort Multi-dimensional array
배열 요소의 순서는 foreach() 루프를 사용하여 키별로 정렬할 수 있지만 프로세스가 복잡하고 실행 시간이 길다. PHP array_multisort() 함수는 다차원 배열을 키 값으로 정렬하는 쉬운 방법을 제공합니다. 이 예제 코드 스니펫에서는 PHP에서 키를 기준으로 다차원 배열 요소의 순서를 정렬하는 방법을 보여줍니다. 다음 코드는 PHP에서 키로 다차원 배열을 정렬하는 데 도움이 됩니다. 배열의 특정 키 열에서 값을 가져오려면 PHP array_column() 함수를 사용하십시오. 키 값으로 배열을 정렬하려면 PHP array_multisort() 함수를 사용하십시오. 이 예제 코드 스니펫에서 $records 배열을 오름차순으로 정렬하기 위해 first_name 키가…
View On WordPress
0 notes
Text
Getting filtered array in php by any column
Getting filtered array in php by any column
$res = [ [‘id’ => 1, ‘name’ => ‘Name 1’], [‘id’ => 2, ‘name’ => ‘Name 2’], [‘id’ => 3, ‘name’ => ‘Name 3’] ];
$res = $res[array_search(‘2’, array_column($res, ‘id’))];
echo ‘
View On WordPress
0 notes
Text
Cara Mendapatkan Nilai Specific Key Dari Array Multidimensi Di Php
Cara Mendapatkan Nilai Specific Key Dari Array Multidimensi Di Php
Dalam posting ini, saya akan memberikan tutorial bagaimana cara mendapatkan array dari specific key value dari array multidimensi di php. Kita dapat menggunakan array_column() dan array_map().
Sebagai contoh jika Anda memiliki satu array multidimensi dengan setiap array dengan id, nama, email dll, dan Anda hanya ingin mengambil semua nilai id saja atau nama saja maka Anda dapat menggunakan fungsi…
View On WordPress
0 notes
Link
TL;DR: Migrating my website from Drupal 7 to Hugo
Jump directly to the end titled Migration to Hugo
Initial website
Looking back at my website’s history, the domain was first registered sometime in 2003. Back then, it was mostly a couple of html pages. Being (and still) a novice in web, my website was mostly on ideas from others. IIRC, for the bare html one, I took a lot of look wise details from Miss Garrels’ website.
First blog
My initial blog was self-hosted with a blogging software in PHP, named PivotX The website for it still works, so hopefully the project is still alive. It was pretty good a tool for the purpose. Very lean and had support for data backends in both, MySQL and flat files. The latter was important to me as I wanted to keep it simple.
Drupal
My first interaction with Drupal was with its WSOD. That was it until I revisited it when evaluating different FOSS web tools to build a community site for one of my previous employer.
Back then, we tried multiple tools: Jive, Joomla, Wordpress and many more. But finally, resorted to Drupal. What the requirement was was to have something which would filter content under nested categories. Then, of the many things tried, the only one which seemed to be able to do it was Drupal with its Taxonomy feature, along with a couple of community driven add-on modules.
We built it but there were other challenges. It was hard to find people who were good with Drupal. I remember to have interviewed around 10-15 people, who could take over the web portal and maintain it, and still not able to fill the position. Eventually, I ended up maintaining the portal by myself.
Migrating my website to Drupal
The easiest way to deal with the maintenance was to have one more live portal running Drupal. My website, which back then, had ambitious goals to also serve an online shopping cart, was the perfect candidate. So I migrated my website from PivotX to Drupal 6. Drupal had a nice RSS Import module which was able to pull in most of the content, except the comments on each article. I think that is more a limitation of RSS Feeds. But the only data import path I could find back then was to import content through RSS Feeds.
Initially, Drupal looked like a nice tool. Lots of features and a vibrant community made it very appealing. And I always desired to build some skills Hands-On (that’s how the job market likes it; irrespective of the skills, it is the hands-on that they evaluate) by using Drupal both, at the employer’s community portal and my personal website.
Little did I know that running/maintaining a website is one aspect; where as extending it, is another (mostly expensive) affair.
Drupal 7
That was the first blow. For a project serving as a platform, Drupal was a PITA when dealing with migrations. And it is not about migrations to a different platform. Rather an upgrade from one major release to another.
Having been using Debian for quite some time, this approach from Drupal brought back memories from the past, of when using Red Hat Linux and SuSE Linux distribution; where upgrades were not a common term, and every major release of the distribution people were mostly recommended to re-install.
Similar was the case with Drupal. Every major release, many (core) modules would be dropped. Many add-on modules would lose support. Neither the project nor the community around it, was helpful anymore.
But somehow, I eventually upgraded to Drupal 7. I did lose a lot of functionality. My nested taxonomy was gone and my themes were all broken. For the web novice that I am, it took me some time to fix those issues.
But the tipping point came in with Drupal 8. It took the pain to the next level repeating the same process of dropping modules and breaking functionalities; never did I hear much of backward compatibility on this platform.
Hugo
For quite some time I kept looking for a migration path away from Drupal 7. I did not care what it was as long as it was FOSS, and had an active community around it. The immediate first choice was WordPress. By this time, my web requirements had trimmed down. No more did I have outrageous ideas of building all solutions (Web, Blog, Cart) in a single platform. All I did was mostly blog and had a couple of basic pages.
The biggest problem was migration. WP has a module, that does migration. But, for whatever annoying reason, the free version of it would only pick 7 articles from the total. And it did not import comments. So the annoyance and my limitations with web technologies was still prone to with WP. This migration path did not enthuse me much: it was more like a Hindi idiom: आसमान से गिरे और खजूर में अटके
I also attempted Jekyll and Hugo. My limited initial attempts were disappointing. Jekyll had an import module, which IIRC did not work proper. Similar was the case with Hugo, which has a module listed on its migration page, drupal2hugo, which sets a disappointment in the beginning itself.
With nothing much left, I just kept postponing my (desperate) plans to migrate.
Migration to Hugo
Luckily, I was able to find some kind soul share migration scripts to help migrate from Drupal 7 to Hugo. Not everything could be migrated (I had to let go of comments) but not much was I in a position to wait more.
With very minimal changes to adapt it to my particular setup, I was able to migrate most of my content. Now, my website is running on markdown generated with Hugo. More than the tool, I am happy to have the data available in a much standard format.
If there’s one thing that I’m missing on my website, it is mostly the commenting system. I would love to have a simple way to accept user comments integrated into Hugo itself, which would just append those comments to their respective posts. Hopefully soon, when I have (some more) free time.
<?php define('DRUPAL_ROOT', __DIR__); include_once(DRUPAL_ROOT . '/includes/bootstrap.inc'); drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); $nids = db_query('SELECT DISTINCT(nid) FROM {node}') ->fetchCol(); $nodes = node_load_multiple($nids); foreach($nodes as $node) { $front_matter = array( 'title' => $node->title, 'date' => date('c', $node->created), 'lastmod' => date('c', $node->changed), 'draft' => 'false', ); if (count($node->taxonomy_vocabulary_2[LANGUAGE_NONE])) { $tags = taxonomy_term_load_multiple( array_column( $node->taxonomy_vocabulary_2[LANGUAGE_NONE], 'tid' ) ); $front_matter['tags'] = array_column($tags, 'name'); } if (count($node->taxonomy_vocabulary_1[LANGUAGE_NONE])) { $cat = taxonomy_term_load_multiple( array_column( $node->taxonomy_vocabulary_1[LANGUAGE_NONE], 'tid' ) ); $front_matter['categories'] = array_column($cat, 'name'); } $path = drupal_get_path_alias('node/'.$node->nid); if ($path != 'node/'.$node->nid) { $front_matter['url'] = '/'.$path; $content_dir = explode('/', $path); $content_dir = end($content_dir); } else { $content_dir = $node->nid; } $content = json_encode( $front_matter, JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE ); $content .= "\n\n"; $tmp_file = '/tmp/node.html'; file_put_contents($tmp_file, $node->body['fr'][0]['value']); $body = shell_exec('html2markdown '.$tmp_file); unlink($tmp_file); //$body = $node->body['fr'][0]['value']; $content .= $body; $dir_name = '/tmp/hugo/content/'.$node->type.'/'.$content_dir; mkdir($dir_name, 0777, true); file_put_contents($dir_name.'/index.md', $content); }
via Planet Debian
0 notes
Text
How to get array of specific key for multidimensional array in PHP
How to get array of specific key for multidimensional array in PHP
If you have a large set of multidimensional array and you tortured to without help profit array of specific key for multidimensional array in PHP, After general pardon of php 5.5+ These is predefined take steps called array_column. It Return the values from a single column in the input array. Like you have write a query to fetch data from database realize multidimensional array result and you and…
View On WordPress
0 notes
Text
Listado de Funciones y Métodos ¶ Lista todas las funciones y métodos del manual a b c d e f g h i j k l m n o p q r s t u v w x y z _ a abs - Valor absoluto acos - Arco coseno acosh - Arco coseno hiperbólico addcslashes - Escapa una cadena al estilo de C addslashes - Escapa un string con barras invertidas apache_child_terminate - Finaliza un proceso de Apache después de esta llamada apache_getenv - Obtiene una variable del entorno subprocess_env de Apache apache_get_modules - Obtiene una lista de los módulos cargados en el servidor Apache apache_get_version - Obtiene la versión del servidor Apache apache_lookup_uri - Realiza una petición parcial por la URI especificada y devuelve toda la información sobre ella apache_note - Obtiene y establece las notas de petición de apache apache_request_headers - Obtiene todas las cabeceras HTTP apache_reset_timeout - Restaura el temporizador de Apache apache_response_headers - Obtiene todas las cabeceras HTTP de respuesta apache_setenv - Establece una variable subprocess_env de Apache APCIterator::current - Obtener el elemento actual APCIterator::getTotalCount - Obtener la cuenta total APCIterator::getTotalHits - Obtener el total de éxitos de la caché APCIterator::getTotalSize - Obtener el tamaño total de la caché APCIterator::key - Obtener la clave del iterador APCIterator::next - Mover el puntero al siguiente elemento APCIterator::rewind - Rebobina el iterator APCIterator::valid - Comprueba si la posición acutal es válida APCIterator::__construct - Construye un objeto iterador APCIterator APCUIterator::current - Get current item APCUIterator::getTotalCount - Get total count APCUIterator::getTotalHits - Get total cache hits APCUIterator::getTotalSize - Get total cache size APCUIterator::key - Get iterator key APCUIterator::next - Move pointer to next item APCUIterator::rewind - Rewinds iterator APCUIterator::valid - Checks if current position is valid APCUIterator::__construct - Constructs an APCUIterator iterator object apcu_add - Cache a new variable in the data store apcu_cache_info - Retrieves cached information from APCu's data store apcu_cas - Updates an old value with a new value apcu_clear_cache - Clears the APCu cache apcu_dec - Decrease a stored number apcu_delete - Elimina una variable almacenada en caché apcu_entry - Atomically fetch or generate a cache entry apcu_exists - Checks if entry exists apcu_fetch - Fetch a stored variable from the cache apcu_inc - Increase a stored number apcu_sma_info - Retrieves APCu Shared Memory Allocation information apcu_store - Cache a variable in the data store apc_add - Poner una nueva variable en caché en el almacén de datos apc_bin_dump - Obtener una copia binaria de los ficheros y variables de usuario dados apc_bin_dumpfile - Imprimir a un fichero una copia binaria de los ficheros y variables de usuario almacenados en caché apc_bin_load - Cargar una copia binaria en la caché de archivo/usuario de APC apc_bin_loadfile - Cargar una copia binaria desde un fichero a la caché de fichero/usuario de APC apc_cache_info - Recupera información que hay en caché del almacén de datos de APC apc_cas - Actualiza un valor anterior por un nuevo valor apc_clear_cache - Limpia la caché de APC apc_compile_file - Almacena un archivo en la caché de código de byte, evitando todos los filtros apc_dec - Disminuye un número almacenado apc_define_constants - Define un conjunto de constantes para recuperación y definición en masa apc_delete - Elimina una variable almacenada de la caché apc_delete_file - Borra archivos de la caché del código de operación apc_exists - Comprobar si existe una clave de APC apc_fetch - Traer una variable almacenada desde la caché apc_inc - Aumentar un número almacenado apc_load_constants - Carga un conjunto de constantes de la caché apc_sma_info - Recupera la información de la Asignación de Memoria Compartida de APC apc_store - Guardar una variable en caché en el almacén de datos apd_breakpoint - Detiene el interpretador y espera en un CR desde el socket apd_callstack - Retorna la actual pila de llamado como una matriz apd_clunk - Lanza una advertencia y una pila de llamado apd_continue - Reinicia el interpretador apd_croak - Lanza un error, una pila de lamado y entonces sale apd_dump_function_table - Muestra la tabla de funciones actual apd_dump_persistent_resources - Retorna todos los recursos persistentes como una matriz apd_dump_regular_resources - Retorna todos los recursos regulares actuales como una matriz apd_echo - Echo hacia el socket de depurado apd_get_active_symbols - Obtener una matriz con los nombres de las variables actuales en el ámbito local apd_set_pprof_trace - Inicia la sesión de depurado apd_set_session - Cambia o configura el nivel actual de depurado apd_set_session_trace - Inicia la sesión de depurado apd_set_session_trace_socket - Inicia la sesión remota de depurado AppendIterator::append - Añade un iterador AppendIterator::current - Obtiene el valor actual AppendIterator::getArrayIterator - Obtiene el getArrayIterator AppendIterator::getInnerIterator - Obtiene el iterador interno AppendIterator::getIteratorIndex - Obtiene un índice de iteradores AppendIterator::key - Obtiene la clave actual AppendIterator::next - Desplazarse al siguiente elemento AppendIterator::rewind - Rebobina el iterador AppendIterator::valid - Comprueba la validación del elemento actual AppendIterator::__construct - Construye un AppendIterator array - Crea un array ArrayAccess::offsetExists - Comprobar si existe un índice ArrayAccess::offsetGet - Offset para recuperar ArrayAccess::offsetSet - Asignar un valor al índice esepecificado ArrayAccess::offsetUnset - Destruye un offset ArrayIterator::append - Añade un elemento ArrayIterator::asort - Ordena array por sus valores ArrayIterator::count - Cuenta elementos ArrayIterator::current - Devuelve la entrada actual del array ArrayIterator::getArrayCopy - Obtener copia de un array ArrayIterator::getFlags - Obtener opciones ArrayIterator::key - Devuelve la clave actual del array ArrayIterator::ksort - Ordena un array por sus claves ArrayIterator::natcasesort - Ordena un array de forma natural, sensible a mayúsculas ArrayIterator::natsort - Ordena un array de forma natural ArrayIterator::next - Desplaza a la siguiente entrada ArrayIterator::offsetExists - Compruebar si el índice existe ArrayIterator::offsetGet - Obtener el valor de un índice ArrayIterator::offsetSet - Establece el valor para un índice ArrayIterator::offsetUnset - Destruye el valor de un índice ArrayIterator::rewind - Rebobinar array al inicio ArrayIterator::seek - Buscar la posición ArrayIterator::serialize - Serializar ArrayIterator::setFlags - Definir opciones de comportamiento ArrayIterator::uasort - Ordenado definido por el usuario ArrayIterator::uksort - Ordenado definido por el usuario ArrayIterator::unserialize - Deserializar ArrayIterator::valid - Comprueba si un array contiene más entradas ArrayIterator::__construct - Construye un ArrayIterator ArrayObject::append - Añade un valor ArrayObject::asort - Ordena las entradas por valor ArrayObject::count - Obtener el número de propiedades públicas en la clase ArrayObject ArrayObject::exchangeArray - Intercambia el array por otro ArrayObject::getArrayCopy - Crea una copia de la clase ArrayObject ArrayObject::getFlags - Obtiene las flags de comportamiento ArrayObject::getIterator - Crear un nuevo iterador desde una instancia ArrayObject ArrayObject::getIteratorClass - Obtiene el nombre de clase iterador para ArrayObject ArrayObject::ksort - Ordena las entradas por clave ArrayObject::natcasesort - Ordena un array usando un algoritmo orden natural ArrayObject::natsort - Ordena entradas usando un algoritmo de orden natural ArrayObject::offsetExists - Devuelve si el índice solicitado existe ArrayObject::offsetGet - Devuelve el valor del índice especificado ArrayObject::offsetSet - Establece el valor en el índice especificado ArrayObject::offsetUnset - Destruye el valor para el índice especificado ArrayObject::serialize - Serializar un ArrayObject ArrayObject::setFlags - Establece las flags de comportamiento ArrayObject::setIteratorClass - Establece el nombre de clase iterador para ArrayObject ArrayObject::uasort - Ordena las entradas con una función de comparación definida por el usuario y mantiene asociación de claves ArrayObject::uksort - Ordena las entradas por clave usando una función de comparación definida por el usuario ArrayObject::unserialize - Deserializar el objeto ArrayObject ArrayObject::__construct - Construir un nuevo objeto Array array_change_key_case - Cambia a mayúsculas o minúsculas todas las claves en un array array_chunk - Divide un array en fragmentos array_column - Devuelve los valores de una sola columna del array de entrada array_combine - Crea un nuevo array, usando una matriz para las claves y otra para sus valores array_count_values - Cuenta todos los valores de un array array_diff - Calcula la diferencia entre arrays array_diff_assoc - Calcula la diferencia entre arrays con un chequeo adicional de índices array_diff_key - Calcula la diferencia entre arrays empleando las claves para la comparación array_diff_uassoc - Calcula la diferencia entre arrays con un chequeo adicional de índices que se realiza por una funci��n de devolución de llamada suministrada por el usuario array_diff_ukey - Calcula la diferencia entre arrays usando una función de devolución de llamada en las keys para comparación array_fill - Llena un array con valores array_fill_keys - Llena un array con valores, especificando las keys array_filter - Filtra elementos de un array usando una función de devolución de llamada array_flip - Intercambia todas las claves de un array con sus valores asociados array_intersect - Calcula la intersección de arrays array_intersect_assoc - Calcula la intersección de arrays con un chequeo adicional de índices array_intersect_key - Calcula la intersección de arrays usando sus claves para la comparación array_intersect_uassoc - Calcula la intersección de arrays con una comprobación adicional de índices, los cuales se comparan con una función de retrollamada array_intersect_ukey - Calcula la intersección de arrays usando una función de devolución de llamada en las claves para la comparación array_keys - Devuelve todas las claves de un array o un subconjunto de claves de un array array_key_exists - Verifica si el índice o clave dada existe en el array array_map - Aplica la retrollamada a los elementos de los arrays dados array_merge - Combina dos o más arrays array_merge_recursive - Une dos o más arrays recursivamente array_multisort - Ordena varios arrays, o arrays multidimensionales array_pad - Rellena un array a la longitud especificada con un valor array_pop - Extrae el último elemento del final del array array_product - Calcula el producto de los valores de un array array_push - Inserta uno o más elementos al final de un array array_rand - Seleccionar una o más entradas aleatorias de un array array_reduce - Reduce iterativamente un array a un solo valor usando una función llamada de retorno array_replace - Reemplaza los elementos de los arrays pasados en el primer array array_replace_recursive - Reemplaza los elementos de los arrays pasados al primer array de forma recursiva array_reverse - Devuelve un array con los elementos en orden inverso array_search - Busca un valor determinado en un array y devuelve la primera clave correspondiente en caso de éxito array_shift - Quita un elemento del principio del array array_slice - Extraer una parte de un array array_splice - Elimina una porción del array y la reemplaza con otra cosa array_sum - Calcular la suma de los valores de un array array_udiff - Computa la diferencia entre arrays, usando una llamada de retorno para la comparación de datos array_udiff_assoc - Computa la diferencia entre arrays con una comprobación de indices adicional, compara la información mediante una función de llamada de retorno array_udiff_uassoc - Computa la diferencia entre arrays con una verificación de índices adicional, compara la información y los índices mediante una función de llamada de retorno array_uintersect - Computa una intersección de arrays, compara la información mediante una función de llamada de retorno array_uintersect_assoc - Calcula la intersección de arrays con una comprobación de índices adicional, compara la información mediante una función de retrollamada array_uintersect_uassoc - Calcula la intersección de arrays con una comprobación de índices adicional, compara la información y los índices mediante funciones de retrollamada por separado array_unique - Elimina valores duplicados de un array array_unshift - Añadir al inicio de un array uno a más elementos array_values - Devuelve todos los valores de un array array_walk - Aplicar una función proporcionada por el usuario a cada miembro de un array array_walk_recursive - Aplicar una función de usuario recursivamente a cada miembro de un array arsort - Ordena un array en orden inverso y mantiene la asociación de índices Aserción - Verifica si la aserción es FALSE asin - Arco seno asinh - Arco seno hiperbólico asort - Ordena un array y mantiene la asociación de índices assert_options - Establecer/obtener valores de las directivas relacionadas con las aserciones atan - Arco tangente atan2 - Arco tangente de dos variables atanh - Arco tangente hiperbólica b base64_decode - Decodifica datos codificados con MIME base64 base64_encode - Codifica datos con MIME base64 basename - Devuelve el último componente de nombre de una ruta base_convert - Convertir un número entre bases arbitrarias bbcode_add_element - Añade un elemento bbcode bbcode_add_smiley - Añade un smiley al analizador bbcode_create - Crea un resource de BBCode bbcode_destroy - Cierra un recurso BBCode_container bbcode_parse - Analiza un string siguiendo el set de reglas dado bbcode_set_arg_parser - Añade otro analizador para usar otro set de reglas para analizar argumentos bbcode_set_flags - Establece o cambia las opciones del analizador bcadd - Añade dos números de precisión arbitrária bccomp - Compara dos números de precisión arbitraria bcdiv - Divide dos números de precisión arbitraria bcmod - Obtiene el módulo de un número de precisión arbitraria bcmul - Multiplica dos números de precisión arbitraria bcompiler_load - Lee y crea clases desde un archivo comprimido con bz bcompiler_load_exe - Lee y crea clases desde un archivo exe de bcompiler bcompiler_parse_class - Lee el código de bytes de una clase y realiza una llamada de retorno a una función de usuario bcompiler_read - Lee y crea clases ded un gestor de archivo bcompiler_write_class - Escribe una clase definida como código de bytes bcompiler_write_constant - Escribe una constante definida como código de bytes bcompiler_write_exe_footer - Escribe la posición de inicio y la firma al final de un archivo de tipo exe bcompiler_write_file - Escribe un fichero fuente de php como código de bytes bcompiler_write_footer - Escribe el carácter \x00 para indicar el Final de los datos compilados bcompiler_write_function - Escribe una función definida como código de bytes bcompiler_write_functions_from_file - Escribe todas las funciones definidas en un archivo como código de bytes bcompiler_write_header - Escribe la cabecera de bcompiler bcompiler_write_included_filename - Escribe un archivo incluido como código de bytes bcpow - Elevar un número de precisión arbitraria a otro bcpowmod - Eleva un número de precisión arbitraria a otro, reducido por un módulo especificado bcscale - Establece los parametros de scale por defecto para todas las funciones matemáticas de bc bcsqrt - Obtiene la raiz cuadrada de un número de precisión arbitraria bcsub - Resta un número de precisión arbitraria de otro bin2hex - Convierte datos binarios en su representación hexadecimal bindec - Binario a decimal bindtextdomain - Establece la ruta del dominio bind_textdomain_codeset - Especifica el juego de caracteres en que los mensajes del catálogo del dominio serán devueltos blenc_encrypt - Encripta un script PHP con BLENC. boolval - Obtener el valor booleano de una variable bson_decode - Decodifica un objecto BSON a un array PHP bson_encode - Serializa una variable PHP a un string BSON bzclose - Cierra un fichero bzip2 bzcompress - Comprime una cadena en datos codificados en bzip2 bzdecompress - Descomprime datos codificados con bzip2 bzerrno - Devuelve el número de erro de bzip2 bzerror - Devuelve el número de error y la cadena del error de bzip2 en un array bzerrstr - Devuelve una cadena de error de bzip2 bzflush - Fuerza la escritura de todos los datos del búfer bzopen - Abre un fichero comprimido con bzip2 bzread - Lectura segura de ficheros bzip2 bzwrite - Escribe en un fichero bzip2 de forma segura binariamente c CachingIterator::count - El número de elementos en el iterador CachingIterator::current - Devuelve el elemento actual CachingIterator::getCache - Recuperar el contenido de la caché CachingIterator::getFlags - Obtener las banderas utilizadas CachingIterator::getInnerIterator - Devuelve el iterador interno CachingIterator::hasNext - Comprueba que el iterador interno tenga un elemento siguiente válido CachingIterator::key - Devuelve la clave del elemento actual CachingIterator::next - Desplaza el iterador adelante CachingIterator::offsetExists - Comprobar existencia de un índice CachingIterator::offsetGet - El propósito offsetGet CachingIterator::offsetSet - El propósito offsetSet CachingIterator::offsetUnset - El propósito offsetUnset CachingIterator::rewind - Rebobina el iterador CachingIterator::setFlags - El propósito de setFlags CachingIterator::valid - Comprueba que el elemento actual sea válido CachingIterator::__construct - Construir un nuevo objeto CachingIterator para el iterador CachingIterator::__toString - Devolver la representación en formato cadena del elemento actual Cairo::availableFonts - Recupera los tipos de fuente disponibles Cairo::availableSurfaces - Recupera todas las superficies disponibles Cairo::statusToString - Recupera el estado acutal como cadena Cairo::version - Recupera la versión de la biblioteca cairo Cairo::versionString - Recupera la versión de cairo como cadena CairoContext::appendPath - Añade un trazado al trazado actual CairoContext::arc - Añade un arco circular CairoContext::arcNegative - Añade un arco negativo CairoContext::clip - Establece una nueva región de recorte CairoContext::clipExtents - Computa el área dentro del recorte actual CairoContext::clipPreserve - Establce una nueva región de recorte desde el recorte actual CairoContext::clipRectangleList - Recupera el recorte actual como una lista de rectángulos CairoContext::closePath - Cierra el trazado actual CairoContext::copyPage - Emite la página actual CairoContext::copyPath - Crea una copia del trazado actual CairoContext::copyPathFlat - Obtiene una copia aplanada del trazado actual CairoContext::curveTo - Añade una curva CairoContext::deviceToUser - Transforma una coordenada CairoContext::deviceToUserDistance - Transformar una distancia CairoContext::fill - Rellena el trazado actual CairoContext::fillExtents - Cumputa el área rellenada CairoContext::fillPreserve - Rellena y conserva el trazado actual CairoContext::fontExtents - Obtener el alcance de una fuente CairoContext::getAntialias - Recupera el modo de antialias actual CairoContext::getCurrentPoint - El propósito de getCurrentPoint CairoContext::getDash - El propósito de getDash CairoContext::getDashCount - El propósito de getDashCount CairoContext::getFillRule - El propósito de getFillRule CairoContext::getFontFace - El propósito de getFontFace CairoContext::getFontMatrix - El propósito de getFontMatrix CairoContext::getFontOptions - El propósito de getFontOptions CairoContext::getGroupTarget - El propósito de getGroupTarget CairoContext::getLineCap - El propósito de getLineCap CairoContext::getLineJoin - El propósito de getLineJoin CairoContext::getLineWidth - El propósito de getLineWidth CairoContext::getMatrix - El propósito de getMatrix CairoContext::getMiterLimit - El propósito de getMiterLimit CairoContext::getOperator - El propósito de getOperator CairoContext::getScaledFont - El propósito de getScaledFont CairoContext::getSource - El propósito de getSource CairoContext::getTarget - El propósito de getTarget CairoContext::getTolerance - El propósito de getTolerance CairoContext::glyphPath - El propósito de glyphPath CairoContext::hasCurrentPoint - El propósito de hasCurrentPoint CairoContext::identityMatrix - El propósito de identityMatrix CairoContext::inFill - El propósito de inFill CairoContext::inStroke - El propósito de inStroke CairoContext::lineTo - El propósito de lineTo CairoContext::mask - El propósito de mask CairoContext::maskSurface - El propósito de maskSurface CairoContext::moveTo - El propósito de moveTo CairoContext::newPath - El propósito de newPath CairoContext::newSubPath - El propósito de newSubPath CairoContext::paint - El propósito de paint CairoContext::paintWithAlpha - El propósito de paintWithAlpha CairoContext::pathExtents - El propósito de pathExtents CairoContext::popGroup - El propósito de popGroup CairoContext::popGroupToSource - El propósito de popGroupToSource CairoContext::pushGroup - El propósito de pushGroup CairoContext::pushGroupWithContent - El propósito de pushGroupWithContent CairoContext::rectangle - El propósito de rectangle CairoContext::relCurveTo - El propósito de relCurveTo CairoContext::relLineTo - El propósito de relLineTo CairoContext::relMoveTo - El propósito de relMoveTo CairoContext::resetClip - El propósito de resetClip CairoContext::restore - El propósito de restore CairoContext::rotate - El propósito de rotate CairoContext::save - El propósito de save CairoContext::scale - El propósito de scale CairoContext::selectFontFace - El propósito de selectFontFace CairoContext::setAntialias - El propósito de setAntialias CairoContext::setDash - El propósito de setDash CairoContext::setFillRule - El propósito de setFillRule CairoContext::setFontFace - El propósito de setFontFace CairoContext::setFontMatrix - El propósito de setFontMatrix CairoContext::setFontOptions - El propósito de setFontOptions CairoContext::setFontSize - El propósito de setFontSize CairoContext::setLineCap - El propósito de setLineCap CairoContext::setLineJoin - El propósito de setLineJoin CairoContext::setLineWidth - El propósito de setLineWidth CairoContext::setMatrix - El propósito de setMatrix CairoContext::setMiterLimit - El propósito de setMiterLimit CairoContext::setOperator - El propósito de setOperator CairoContext::setScaledFont - El propósito de setScaledFont CairoContext::setSource - El propósito de setSource CairoContext::setSourceRGB - El propósito de setSourceRGB CairoContext::setSourceRGBA - El propósito de setSourceRGBA CairoContext::setSourceSurface - El propósito de setSourceSurface CairoContext::setTolerance - El propósito de setTolerance CairoContext::showPage - El propósito de showPage CairoContext::showText - El propósito de showText CairoContext::status - El propósito de status CairoContext::stroke - El propósito de stroke CairoContext::strokeExtents - El propósito de strokeExtents CairoContext::strokePreserve - El propósito de strokePreserve CairoContext::textExtents - El propósito de textExtents CairoContext::textPath - El propósito de textPath CairoContext::transform - El propósito de transform CairoContext::translate - El propósito de translate CairoContext::userToDevice - El propósito de userToDevice CairoContext::userToDeviceDistance - El propósito de userToDeviceDistance CairoContext::__construct - Crea un nuevo CairoContext CairoFontFace::getType - Recupera el tipo de familia de fuentes CairoFontFace::status - Compruba errores de CairoFontFace CairoFontFace::__construct - Crea un nuevo objeto CairoFontFace CairoFontOptions::equal - El propósito de equal CairoFontOptions::getAntialias - El propósito de getAntialias CairoFontOptions::getHintMetrics - El propósito de getHintMetrics CairoFontOptions::getHintStyle - El propósito de getHintStyle CairoFontOptions::getSubpixelOrder - El propósito de getSubpixelOrder CairoFontOptions::hash - El propósito de hash CairoFontOptions::merge - El propósito de merge CairoFontOptions::setAntialias - El propósito de setAntialias CairoFontOptions::setHintMetrics - El propósito de setHintMetrics CairoFontOptions::setHintStyle - El propósito de setHintStyle CairoFontOptions::setSubpixelOrder - El propósito de setSubpixelOrder CairoFontOptions::status - El propósito de status CairoFontOptions::__construct - El propósito de __construct CairoFormat::strideForWidth - Proporciona un intervalo de paso apropiado a usar CairoGradientPattern::addColorStopRgb - El propósito de addColorStopRgb CairoGradientPattern::addColorStopRgba - El propósito de addColorStopRgba CairoGradientPattern::getColorStopCount - El propósito de getColorStopCount CairoGradientPattern::getColorStopRgba - El propósito de getColorStopRgba CairoGradientPattern::getExtend - El propósito de getExtend CairoGradientPattern::setExtend - El propósito de setExtend CairoImageSurface::createForData - El propósito de createForData CairoImageSurface::createFromPng - Crea una nueva CairoImageSurface desde un archivo de imagen png CairoImageSurface::getData - Obtiene la información de la imagen como cadena CairoImageSurface::getFormat - Obtener el formato de imagen CairoImageSurface::getHeight - Recupera el alto del CairoImageSurface CairoImageSurface::getStride - El propósito de getStride CairoImageSurface::getWidth - Recupera el ancho del CairoImageSurface CairoImageSurface::__construct - Crea una nueva CairoImageSurface CairoLinearGradient::getPoints - El propósito de getPoints CairoLinearGradient::__construct - El propósito de __construct CairoMatrix::initIdentity - Crea una nueva matriz de identidad CairoMatrix::initRotate - Crea una nueva matriz rotada CairoMatrix::initScale - Crea una nueva matriz de escala CairoMatrix::initTranslate - Crea una nueva matriz de traducción CairoMatrix::invert - El propósito de invert CairoMatrix::multiply - El propósito de multiply CairoMatrix::rotate - El propósito de rotate CairoMatrix::scale - Aplica escala a una matriz CairoMatrix::transformDistance - El propósito de transformDistance CairoMatrix::transformPoint - El propósito de transformPoint CairoMatrix::translate - El propósito de translate CairoMatrix::__construct - Crea un nuevo objeto CairoMatrix CairoPattern::getMatrix - El propósito de getMatrix CairoPattern::getType - El propósito de getType CairoPattern::setMatrix - El propósito de setMatrix CairoPattern::status - El propósito de status CairoPattern::__construct - El propósito de __construct CairoPdfSurface::setSize - El propósito de setSize CairoPdfSurface::__construct - El propósito de __construct CairoPsSurface::dscBeginPageSetup - El propósito de dscBeginPageSetup CairoPsSurface::dscBeginSetup - El propósito de dscBeginSetup CairoPsSurface::dscComment - El propósito de dscComment CairoPsSurface::getEps - El propósito de getEps CairoPsSurface::getLevels - El propósito de getLevels CairoPsSurface::levelToString - El propósito de levelToString CairoPsSurface::restrictToLevel - El propósito de restrictToLevel CairoPsSurface::setEps - El propósito de setEps CairoPsSurface::setSize - El propósito de setSize CairoPsSurface::__construct - El propósito de __construct CairoRadialGradient::getCircles - El propósito de getCircles CairoRadialGradient::__construct - El propósito de __construct CairoScaledFont::extents - El propósito de extents CairoScaledFont::getCtm - El propósito de getCtm CairoScaledFont::getFontFace - El propósito de getFontFace CairoScaledFont::getFontMatrix - El propósito de getFontMatrix CairoScaledFont::getFontOptions - El propósito de getFontOptions CairoScaledFont::getScaleMatrix - El propósito de getScaleMatrix CairoScaledFont::getType - El propósito de getType CairoScaledFont::glyphExtents - El propósito de glyphExtents CairoScaledFont::status - El propósito de status CairoScaledFont::textExtents - El propósito de textExtents CairoScaledFont::__construct - El propósito de __construct CairoSolidPattern::getRgba - El propósito de getRgba CairoSolidPattern::__construct - El propósito de __construct CairoSurface::copyPage - El propósito de copyPage CairoSurface::createSimilar - El propósito de createSimilar CairoSurface::finish - El propósito de finish CairoSurface::flush - El propósito de flush CairoSurface::getContent - El propósito de getContent CairoSurface::getDeviceOffset - El propósito de getDeviceOffset CairoSurface::getFontOptions - El propósito de getFontOptions CairoSurface::getType - El propósito de getType CairoSurface::markDirty - El propósito de markDirty CairoSurface::markDirtyRectangle - El propósito de markDirtyRectangle CairoSurface::setDeviceOffset - El propósito de setDeviceOffset CairoSurface::setFallbackResolution - El propósito de setFallbackResolution CairoSurface::showPage - El propósito de showPage CairoSurface::status - El propósito de status CairoSurface::writeToPng - El propósito de writeToPng CairoSurface::__construct - El propósito de __construct CairoSurfacePattern::getExtend - El propósito de getExtend CairoSurfacePattern::getFilter - El propósito de getFilter CairoSurfacePattern::getSurface - El propósito de getSurface CairoSurfacePattern::setExtend - El propósito de setExtend CairoSurfacePattern::setFilter - El propósito de setFilter CairoSurfacePattern::__construct - El propósito de __construct CairoSvgSurface::getVersions - Usado para recuperar una lista de versiones de SVG soportadas DIFERENCIAS ENTRE JAVA Y JAVASCRIPT Como hemos visto, JavaScript es un lenguaje de programación para desarrollos web que normalmente usaremos del lado del cliente (es decir, que se ejecuta en el PC del usuario). Muchas veces nos han planteado la pregunta: ¿es JavaScript y Java lo mismo? ¿Por qué tienen nombres tan similares? logo javascript Java y JavaScript son dos lenguajes de programación con un nombre parecido y algunas similitudes en algunos aspectos, pero que en el fondo son dos lenguajes completamente independientes y completamente distintos. Una persona puede saber mucho de JavaScript y no tener “ni idea” de Java, y al revés. Si son distintos, ¿por qué tienen un nombre tan parecido? La causa de esta similitud en los nombres se debe a el origen de JavaScript. Inicialmente fue desarrollado por la empresa Netscape en 1995 con el nombre de LiveScript. Posteriormente pasó a llamarse JavaScript quizás tratando de aprovechar que Java era un lenguaje de programación de gran popularidad y que un nombre similar podía hacer que el nuevo lenguaje fuera atractivo. Pero salvando algunas similitudes, ambos lenguajes son bien distintos. Su principal parecido podemos decir que es el nombre y algunos aspectos de sintaxis, ya que su finalidad y filosofía son muy distintos. A continuación indicamos algunas similitudes y diferencias entre uno y otro lenguaje: Java JavaScript Es un lenguaje de programación de propósito general, utilizado tanto en aplicaciones tradicionales de computadores como en desarrollos web. Es un lenguaje de programación de propósito específico (desarrollos web) Es un lenguaje que requiere de compilación (traducción previa a código máquina antes de ser ejecutado). Es un lenguaje que no requiere de compilación al ser interpretado directamente por los navegadores. Es un lenguaje que se puede considerar pesado, potente y robusto en el sentido de que permite hacer de todo con un gran control. Es un lenguaje que se puede considerar ligero, ágil y poco robusto en el sentido de que no permite hacer todo lo que permiten otros lenguajes. Es un lenguaje bajo la filosofía o paradigma de orientación a objetos completamente. Es un lenguaje no clasificable bajo un paradigma concreto y admite algunas formas de programación no admitidas por Java. Se puede utilizar tanto del lado del servidor como del lado del cliente. Tiene su uso principal del lado del servidor. Se puede utilizar tanto del lado del servidor como del lado del cliente. Tiene su uso principal del lado del cliente. Su sintaxis está inspirada en la sintaxis del lenguaje de programación C Su sintaxis también está inspirada en la sintaxis del lenguaje de programación C Requiere de un kit de desarrollo y máquina virtual Java para poder programar en él. No requiere nada específico para poder programar en él (únicamente un navegador web para ver los resultados y un editor de texto para escribir el código). Es un lenguaje fuertemente tipado: las variables tienen un tipo declarado y no pueden cambiar el tipo de contenido que almacenan. Es un lenguaje débilmente tipado: las variables pueden no ser de un tipo específico y cambiar el tipo de contenido que almacenan. Es un lenguaje con más capacidades y más complejo que JavaScript. Es un lenguaje con menos capacidades y menos complejo que Java. Si estás dudando si te conviene estudiar Java o estudiar JavaScript te recomendamos lo siguiente: - Si quieres orientarte específicamente a los desarrollos web estudia JavaScript. - Si quieres formarte integralmente como programador y no conoces ningún lenguaje orientado a objetos, estudia primero Java y luego JavaScript. En este curso nos centramos en el estudio de JavaScript en el contexto de los desarrollos web. Si estás interesado en un curso de Java puedes acceder a él en esta dirección web: http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188 JAVASCRIPT Y HTML, CSS, PHP… A veces nos encontraremos que se puede lograr un mismo efecto usando HTML, usando CSS ó usando un lenguaje de programación. ¿Por qué tantas formas para hacer una misma cosa? ¿Dónde está la frontera entre cada lenguaje? Esta pregunta no es de fácil respuesta. Vamos a ver con un ejemplo lo que puede ocurrir para algo tan sencillo como aplicar algunos efectos a un texto. No obstante, ten en cuenta que este ejemplo relativo a texto podría aplicarse a otros conceptos como bordes, márgenes, animaciones, etc. El lenguaje HTML permite aplicar algunos efectos visuales al texto. Escribe o copia este código y guárdalo en un archivo de nombre ejemplo1.html. <!DOCTYPE html> <html> <head> <title>Ejemplo HTML aprenderaprogramar.com</title> <meta name="tipo_contenido" content="text/html;" http-equiv="content-type" charset="utf-8"> </head> <body> <p>Negrita: <strong>Quiero aprender a programar</strong></p> <p>Itálica: <i>Quiero aprender a programar</i></p> <p>Tachado: <strike>Quiero aprender a programar</strike></p> <p>Color fuente: <font color ="green">Quiero aprender a programar</font></p> </body> </html> Con Javascript podemos hacer algo parecido. Escribe o copia este código y guárdalo en un archivo de nombre ejemplo2.html: <!DOCTYPE html> <html> <head> <title>Ejemplo HTML aprenderaprogramar.com</title> <meta name="tipo_contenido" content="text/html;" http-equiv="content-type" charset="utf-8"> </head> <body> <script> var txt = "Quiero aprender a programar"; document.write("<p>Negrita: " + txt.bold() + "</p>"); document.write("<p>Itálica: " + txt.italics() + "</p>"); document.write("<p>Tachado: " + txt.strike() + "</p>"); document.write("<p>Color fuente: " + txt.fontcolor("green") + "</p>"); </script> </body> </html> Y por último en vez de aplicar Javascript o simple HTML, podemos usar CSS. Escribe o copia este código y guárdalo en un archivo de nombre ejemplo3.html: <!DOCTYPE html> <html> <head> <title>Ejemplo HTML aprenderaprogramar.com</title> <meta name="tipo_contenido" content="text/html;" http-equiv="content-type" charset="utf-8"> <style type="text/css"> #negrita{font-weight:bold;} #italica{font-style:italic;} #tachado{text-decoration: line-through;} #verde{color:green;} </style> </head> <body> <p>Negrita: <span id="negrita">Quiero aprender a programar</span></p> <p>Italica: <span id="italica">Quiero aprender a programar</span></p> <p>Tachado: <span id="tachado">Quiero aprender a programar</span></p> <p>Color fuente: <span id="verde">Quiero aprender a programar</span></p> </body> </html> Haz doble click sobre cada uno de los archivos para visualizar el resultado en un navegador. El resultado que obtenemos es algo similar a esto: efectos css El único código que debemos entender por el momento es el correspondiente al ejemplo 1 y al ejemplo 3, ya que debemos conocer HTML y CSS para seguir este curso. El código del ejemplo 2 no te preocupes si no lo entiendes ya que el objetivo ahora no es comprender ese código, sino simplemente ver cómo podemos alcanzar un mismo objetivo usando distintos lenguajes como HTML, Javascript ó CSS. Además si nos fijamos, el código Javascript y el código CSS está dentro de un documento HTML (aunque podrían estar en archivos separados). Todo esto nos puede llevar a preguntarnos: ¿Por qué se entremezclan unos lenguajes con otros? La respuesta sería histórica y técnica: HTML se convirtió en la forma de crear páginas web, pero tenía muchas limitaciones. En un momento dado, se consideró que entremezclar (embeber) lenguajes entre sí podía ser una buena opción técnica para resolver problemas o hacer cosas que no era posible o conveniente hacer con HTML. Así, podemos embeber Javascript en HTML ó embeber CSS en HTML, o embeber HTML en PHP, etc. Por ello a veces ocurre que no hay una frontera clara entre lenguajes de programación, HTML y CSS. Esto, que puede resultar un tanto confuso inicialmente, se va convirtiendo en “comprensible” a medida que se trabaja y se aprende más sobre estos lenguajes. Por otro lado, ¿por qué tantas vías distintas para hacer algo cuando quizás que solo hubiera una manera de poner el texto en negrita, o una sola manera de poner un color de fuente, sería más simple? Para esto podemos citar varios motivos: a) Motivos históricos: a veces las cosas se empezaron a hacer de una manera y luego se pensó que era mejor hacerlas de otra. Sin embargo, para evitar que las páginas web existentes dejaran de funcionar, se siguieron permitiendo formas de hacer las cosas “anticuadas”. Por ejemplo la etiqueta <strike> … </strike> en HTML se considera deprecated (obsoleta, de uso no recomendado) en HTML 4.01 y no está admitida en HTML 5. Sin embargo, se sigue usando. Muchas formas de hacer las cosas se admiten aunque no estén recomendadas. b) Motivos de independencia de tecnologías: HTML es una cosa y Javascript es otra, aunque en la práctica nos encontremos con que Javascript se puede “entremezclar” (embeber) en HTML. Podríamos hacer cosas en Javascript y no querer usar otro lenguaje, es decir, podríamos tratar de hacer cosas independientes sin “entremezclar” tecnologías. Por ello lenguajes como Javascript ó PHP incorporan posibilidades para hacer cosas que ya se pueden hacer de otra manera. De esta forma tienen la potencialidad de ser más independientes. c) Motivos de políticas de desarrollo y estándares: quizás no te lo hayas preguntado nunca, pero conviene tener al menos una orientación al respecto: ¿Quién define qué es un lenguaje como HTML, CSS, PHP, cómo se debe escribir, qué resultado debe generar cada etiqueta o instrucción, etc.? En general detrás de los lenguajes, aunque algunos fueron creados por personas individuales, hay empresas, comunidades de desarrollo, asociaciones, consorcios internacionales, comités, etc. En ocasiones un grupo de personas no está de acuerdo con la forma en que se está creando una especificación del lenguaje y forman grupos de trabajo alternativos que definen estándares alternativos. A veces triunfa un estándar y el otro se desecha, pero otras veces conviven distintos estándares que permiten hacer las cosas de distintas maneras. Para los creadores de páginas web esto resulta negativo, pero ¡así es la vida! d) Otros motivos: podríamos abundar en el por qué de que las cosas sean como son, pero con tener una idea general nos basta. Acostúmbrate a pensar que los desarrollos web no son matemáticas. Las cosas se pueden hacer de muchas maneras, y de hecho muchas veces se hacen “de mala manera” por desconocimiento, por prisas, o por ser más fácil. Acostúmbrate a pensar que los desarrollos web usan distintos lenguajes que muchas veces se entremezclan entre sí hasta el punto de ser difícil distinguir en qué corresponde a un lenguaje y qué corresponde a otro. Hay lenguajes comunes en los desarrollos web como HTML, pero por ejemplo en cuanto a lenguajes de programación no todos los programadores usan el mismo. Acostúmbrate a encontrarte con que a veces las cosas no funcionan como una esperaría que lo hicieran, no debido a que se haya escrito mal el código o usado mal una instrucción, sino debido a que en el mundo de internet existen distintos estándares y distintas versiones. A veces aunque nos esforcemos porque todo se vea como nosotros esperamos en todos los navegadores o dispositivos, es difícil conseguirlo. Es un poco caótico, pero es así. En este curso más que aprendernos todas las instrucciones, estándares, etc. vamos a tratar de ser capaces de razonar el por qué de las cosas, y a tratar de esforzarnos por saber cómo generar código JavaScript limpio, bien estructurado y de calidad.
0 notes